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

What's hot (20)

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

Viewers also liked

CodeFest 2013. Мирютов А. — Мотивация заинтересованных лиц
CodeFest 2013. Мирютов А. — Мотивация заинтересованных лицCodeFest 2013. Мирютов А. — Мотивация заинтересованных лиц
CodeFest 2013. Мирютов А. — Мотивация заинтересованных лицCodeFest
 
CodeFest 2011. Зиновьев А. — Куда приводят мечты: разработка мобильных онлайн...
CodeFest 2011. Зиновьев А. — Куда приводят мечты: разработка мобильных онлайн...CodeFest 2011. Зиновьев А. — Куда приводят мечты: разработка мобильных онлайн...
CodeFest 2011. Зиновьев А. — Куда приводят мечты: разработка мобильных онлайн...CodeFest
 
CodeFest 2013. Шергин Д. — Платформа 3D-графики Unigine — проект мирового уро...
CodeFest 2013. Шергин Д. — Платформа 3D-графики Unigine — проект мирового уро...CodeFest 2013. Шергин Д. — Платформа 3D-графики Unigine — проект мирового уро...
CodeFest 2013. Шергин Д. — Платформа 3D-графики Unigine — проект мирового уро...CodeFest
 
Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...
Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...
Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...Unigine Corp.
 
Разработка мультиплатформенных 3D игр (Unigine, CodeFest2012)
Разработка мультиплатформенных 3D игр (Unigine, CodeFest2012)Разработка мультиплатформенных 3D игр (Unigine, CodeFest2012)
Разработка мультиплатформенных 3D игр (Unigine, CodeFest2012)Unigine Corp.
 
Переход к визуализации с учетом физических свойств материалов на примере 3D п...
Переход к визуализации с учетом физических свойств материалов на примере 3D п...Переход к визуализации с учетом физических свойств материалов на примере 3D п...
Переход к визуализации с учетом физических свойств материалов на примере 3D п...Unigine Corp.
 
Анатомия одного кадра в Unigine Engine (Леонид Лубенко) - DEBUG TiME #3 2016
Анатомия одного кадра в Unigine Engine (Леонид Лубенко) - DEBUG TiME #3 2016Анатомия одного кадра в Unigine Engine (Леонид Лубенко) - DEBUG TiME #3 2016
Анатомия одного кадра в Unigine Engine (Леонид Лубенко) - DEBUG TiME #3 2016Unigine Corp.
 
Базовые понятия 3D графики (Ден Шергин) - DEBUG TiME #3 2016
Базовые понятия 3D графики (Ден Шергин) - DEBUG TiME #3 2016Базовые понятия 3D графики (Ден Шергин) - DEBUG TiME #3 2016
Базовые понятия 3D графики (Ден Шергин) - DEBUG TiME #3 2016Unigine Corp.
 

Viewers also liked (8)

CodeFest 2013. Мирютов А. — Мотивация заинтересованных лиц
CodeFest 2013. Мирютов А. — Мотивация заинтересованных лицCodeFest 2013. Мирютов А. — Мотивация заинтересованных лиц
CodeFest 2013. Мирютов А. — Мотивация заинтересованных лиц
 
CodeFest 2011. Зиновьев А. — Куда приводят мечты: разработка мобильных онлайн...
CodeFest 2011. Зиновьев А. — Куда приводят мечты: разработка мобильных онлайн...CodeFest 2011. Зиновьев А. — Куда приводят мечты: разработка мобильных онлайн...
CodeFest 2011. Зиновьев А. — Куда приводят мечты: разработка мобильных онлайн...
 
CodeFest 2013. Шергин Д. — Платформа 3D-графики Unigine — проект мирового уро...
CodeFest 2013. Шергин Д. — Платформа 3D-графики Unigine — проект мирового уро...CodeFest 2013. Шергин Д. — Платформа 3D-графики Unigine — проект мирового уро...
CodeFest 2013. Шергин Д. — Платформа 3D-графики Unigine — проект мирового уро...
 
Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...
Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...
Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...
 
Разработка мультиплатформенных 3D игр (Unigine, CodeFest2012)
Разработка мультиплатформенных 3D игр (Unigine, CodeFest2012)Разработка мультиплатформенных 3D игр (Unigine, CodeFest2012)
Разработка мультиплатформенных 3D игр (Unigine, CodeFest2012)
 
Переход к визуализации с учетом физических свойств материалов на примере 3D п...
Переход к визуализации с учетом физических свойств материалов на примере 3D п...Переход к визуализации с учетом физических свойств материалов на примере 3D п...
Переход к визуализации с учетом физических свойств материалов на примере 3D п...
 
Анатомия одного кадра в Unigine Engine (Леонид Лубенко) - DEBUG TiME #3 2016
Анатомия одного кадра в Unigine Engine (Леонид Лубенко) - DEBUG TiME #3 2016Анатомия одного кадра в Unigine Engine (Леонид Лубенко) - DEBUG TiME #3 2016
Анатомия одного кадра в Unigine Engine (Леонид Лубенко) - DEBUG TiME #3 2016
 
Базовые понятия 3D графики (Ден Шергин) - DEBUG TiME #3 2016
Базовые понятия 3D графики (Ден Шергин) - DEBUG TiME #3 2016Базовые понятия 3D графики (Ден Шергин) - DEBUG TiME #3 2016
Базовые понятия 3D графики (Ден Шергин) - DEBUG TiME #3 2016
 

Similar to CodeFest 2011. Макаров А. — Как разрабатывается Yii

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

Similar to CodeFest 2011. Макаров А. — Как разрабатывается Yii (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. Виталий Слободин.
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
Компонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективноКомпонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективно
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
 
Gitlab devconf
Gitlab devconfGitlab devconf
Gitlab devconf
 
непрерывная интеграция шаг к непрерывному деплою родионов игорь
непрерывная интеграция   шаг к непрерывному деплою родионов игорьнепрерывная интеграция   шаг к непрерывному деплою родионов игорь
непрерывная интеграция шаг к непрерывному деплою родионов игорь
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест Джоэла
 
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов ИгорьНепрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
 
Непрерывная интеграция - шаг к непрерывному деплойменту
Непрерывная интеграция - шаг к непрерывному деплойментуНепрерывная интеграция - шаг к непрерывному деплойменту
Непрерывная интеграция - шаг к непрерывному деплойменту
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
 
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
 
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
 

More from CodeFest

Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander GraebeCodeFest
 
Никита Прокопов
Никита ПрокоповНикита Прокопов
Никита ПрокоповCodeFest
 
Денис Баталов
Денис БаталовДенис Баталов
Денис БаталовCodeFest
 
Елена Гальцина
Елена ГальцинаЕлена Гальцина
Елена ГальцинаCodeFest
 
Александр Калашников
Александр КалашниковАлександр Калашников
Александр КалашниковCodeFest
 
Ирина Иванова
Ирина ИвановаИрина Иванова
Ирина ИвановаCodeFest
 
Marko Berković
Marko BerkovićMarko Berković
Marko BerkovićCodeFest
 
Денис Кортунов
Денис КортуновДенис Кортунов
Денис КортуновCodeFest
 
Александр Зимин
Александр ЗиминАлександр Зимин
Александр ЗиминCodeFest
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей КрапивенскийCodeFest
 
Сергей Игнатов
Сергей ИгнатовСергей Игнатов
Сергей ИгнатовCodeFest
 
Николай Крапивный
Николай КрапивныйНиколай Крапивный
Николай КрапивныйCodeFest
 
Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander GraebeCodeFest
 
Вадим Смирнов
Вадим СмирновВадим Смирнов
Вадим СмирновCodeFest
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин ОсиповCodeFest
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele RialdiCodeFest
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим ПугачевCodeFest
 
Rene Groeschke
Rene GroeschkeRene Groeschke
Rene GroeschkeCodeFest
 
Иван Бондаренко
Иван БондаренкоИван Бондаренко
Иван БондаренкоCodeFest
 
Mete Atamel
Mete AtamelMete Atamel
Mete AtamelCodeFest
 

More from CodeFest (20)

Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander Graebe
 
Никита Прокопов
Никита ПрокоповНикита Прокопов
Никита Прокопов
 
Денис Баталов
Денис БаталовДенис Баталов
Денис Баталов
 
Елена Гальцина
Елена ГальцинаЕлена Гальцина
Елена Гальцина
 
Александр Калашников
Александр КалашниковАлександр Калашников
Александр Калашников
 
Ирина Иванова
Ирина ИвановаИрина Иванова
Ирина Иванова
 
Marko Berković
Marko BerkovićMarko Berković
Marko Berković
 
Денис Кортунов
Денис КортуновДенис Кортунов
Денис Кортунов
 
Александр Зимин
Александр ЗиминАлександр Зимин
Александр Зимин
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей Крапивенский
 
Сергей Игнатов
Сергей ИгнатовСергей Игнатов
Сергей Игнатов
 
Николай Крапивный
Николай КрапивныйНиколай Крапивный
Николай Крапивный
 
Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander Graebe
 
Вадим Смирнов
Вадим СмирновВадим Смирнов
Вадим Смирнов
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele Rialdi
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим Пугачев
 
Rene Groeschke
Rene GroeschkeRene Groeschke
Rene Groeschke
 
Иван Бондаренко
Иван БондаренкоИван Бондаренко
Иван Бондаренко
 
Mete Atamel
Mete AtamelMete Atamel
Mete Atamel
 

CodeFest 2011. Макаров А. — Как разрабатывается Yii

  • 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 • Принимаются – Отзывы – Идеи – Предложения