ZF2 Code Generation                           или почему лучше день потерять,                              а потом за 5мин...
Об авторе                                             Victor Farazdagi               Phrozn - phrozn.info                 ...
Список литературы                Skynet in ZF 2.0 Presentation by R. Schindler                The Unbearable Stupidity of ...
Структура доклада              1. Определение концепции кодогенерации              2. Обзор существующих инструментов     ...
ОБПSaturday, April 21, 2012
ОБП                           В ZF1 нет адекватного инструментарияSaturday, April 21, 2012
ОБП                           В ZF1 нет адекватного инструментария                            В ZF2 нет готового инструмен...
ОБП                           В ZF1 нет адекватного инструментария                            В ZF2 нет готового инструмен...
ОБП                           В ZF1 нет адекватного инструментария                             В ZF2 нет готового инструме...
What??                           Адекватного инструментария нет вообщеSaturday, April 21, 2012
What??                           Адекватного инструментария нет вообщеSaturday, April 21, 2012
What??                            Адекватного инструментария нет вообще                           Bitch, Pleeease *       ...
What??                            Адекватного инструментария нет вообще                           Bitch, Pleeease *       ...
Что это за зверь такой -                         Кодогенерация?Saturday, April 21, 2012
Определение       Кодогенерация - процесс преобразования высокоуровневого          (более абстрактного) кода в низкоуровне...
Определение (прод.)                     Кодогенерация - написание программ,                      которые пишут другие прог...
Виды Генераторов Кода                              Пассивные         Активные                           Генераторы Кода   ...
Виды Генераторов Кода                              Пассивные         Активные                           Генераторы Кода   ...
Виды Генераторов Кода                              Пассивные         Активные                           Генераторы Кода   ...
Виды Генераторов Кода                              Пассивные           Активные                           Генераторы Кода ...
Виды Генераторов Кода                              Пассивные           Активные                           Генераторы Кода ...
Виды Генераторов Кода                              Пассивные           Активные                           Генераторы Кода ...
Виды Генераторов Кода                              Пассивные           Активные                           Генераторы Кода ...
Виды Генераторов Кода                              Пассивные           Активные                           Генераторы Кода ...
Почему это важно?Saturday, April 21, 2012
Почему это важно?                 Время программера -                  главная ценностьSaturday, April 21, 2012
Почему это важно?                 Время программера -                  главная ценность                                   ...
Почему это важно?                 Время программера -                  главная ценность                                   ...
Почему это важно?                 Время программера -                  главная ценность                                   ...
Почему это важно?                 Время программера -                  главная ценность                                   ...
Почему это важно?                 Время программера -                  главная ценность                                   ...
Почему это важно?                 Время программера -                  главная ценность                                   ...
Почему это важно?                 Время программера -                  главная ценность                                   ...
Почему это важно?                 Время программера -                  главная ценность                                   ...
Почему это важно?                 Время программера -                  главная ценность                                   ...
Почему это важно?                 Время программера -                  главная ценность                                   ...
Анатомия проектаSaturday, April 21, 2012
Анатомия проекта                                 Каркас                           (ZF, Symfony, Yii)Saturday, April 21, 2012
Анатомия проекта                                  Каркас                            (ZF, Symfony, Yii)                    ...
Анатомия проекта                                            Каркас                                      (ZF, Symfony, Yii)...
Анатомия проекта                    Нетривиальный                         код                 Каркас                      ...
Анатомия проекта                    Нетривиальный                         код                             Каркас          ...
Качество кода                           Generated code sucks!!!Saturday, April 21, 2012
Качество кода                                      Generated code sucks!!!                           Дадагой ддуг....Satur...
Качество кода                           Generated code sucks!!!                             Ты сам пишешь генератор кода. ...
Кодогенерация и DSL                           DSL        DSL                                 General Purpose              ...
DSLs + Code GenerationSaturday, April 21, 2012
Примеры               Генерация сущностей               Генерация форм из модели               SASS, LESS (CSS compiling/t...
Итак, что дает CG..Saturday, April 21, 2012
Итак, что дает CG..                           Качество / QualitySaturday, April 21, 2012
Итак, что дает CG..                           Согласованность / Consistency                                Качество / Qual...
Итак, что дает CG..                           Don’t Repeat Yourself (DRY)                           Согласованность / Cons...
Итак, что дает CG..                               Скорость разработки                           Don’t Repeat Yourself (DRY...
Резюмируя..                           Work HarderSaturday, April 21, 2012
Резюмируя..                           Work HarderSaturday, April 21, 2012
Резюмируя..                           Work Harder   Work SmarterSaturday, April 21, 2012
Обзор инструментовSaturday, April 21, 2012
RoR 3             Очень качественная реализация   Упор на пассивные генераторы                     Экономят кучу времени  ...
RoR 3             Очень качественная реализация             Упор на пассивные генераторы                     Экономят кучу...
Django                                                 У тебя есть инструменты для                           Другая филосо...
Django                                                 У тебя есть инструменты для                           Другая филосо...
Django                                                    У тебя есть инструменты для                           Другая фил...
Django                                                    У тебя есть инструменты для                           Другая фил...
Yii                           yiic shell generators                                Gii + giixSaturday, April 21, 2012
Yii                           yiic shell generators   генерация модели                                                   C...
Yii                           yiic shell generators       генерация модели                                                ...
Symfony2                           app/consoleSaturday, April 21, 2012
Symfony2                                          Создан на базе (замечательного)                                         ...
CakePHP                            cake bake       Good interactive shells                                             Bak...
CodeIgniter2Saturday, April 21, 2012
Кодогенерация в ZF1Saturday, April 21, 2012
Zend_Tool_Framework                                  Действительно целый фреймворк                            Providers   ...
Zend_Tool_Framework                                  Действительно целый фреймворк                            Providers   ...
Zend_Tool_Project                           Куча провайдеров код которых будет использован                  Project       ...
Zend_Tool_Project                           Куча провайдеров код которых будет использован                  Project       ...
Zend_Tool + zf.php                               Фасад к ZendToolProjectProvider                    Management taks: on/of...
Zend_CodeGenerator             Генерация кода с использованием       Refactored to                    ОО-интерфейсов.     ...
Zend_Reflection                                                      Refactored to                    Расширяет PHP Reflecti...
Кодогенерация в ZF2Saturday, April 21, 2012
Текущее состояниеSaturday, April 21, 2012
Текущее состояние                           ZendToolSaturday, April 21, 2012
Текущее состояние                           ZendToolSaturday, April 21, 2012
Текущее состояние                                           ZendTool            ZendToolFrameworkSystemProvider           ...
Текущее состояние                                           ZendTool            ZendToolFrameworkSystemProvider           ...
Текущее состояние                                           ZendTool            ZendToolFrameworkSystemProvider           ...
ZendConsole                           /Thinkscape/zf2/tree/feature/console                           /Thinkscape/zf2-conso...
ZendConsole                                     /Thinkscape/zf2/tree/feature/console                                     /...
ZendCode                    Zend_CodeGenerator                           Zend_ReflectionSaturday, April 21, 2012
ZendCode                    Zend_CodeGenerator                           Zend_ReflectionSaturday, April 21, 2012
ZendCode                    Zend_CodeGenerator      Reflection                           Zend_ReflectionSaturday, April 21, ...
ZendCode                    Zend_CodeGenerator      Reflection                           Zend_Reflection   ScannerSaturday, ...
ZendCode                    Zend_CodeGenerator      Reflection                           Zend_Reflection    Scanner         ...
ZendCode                    Zend_CodeGenerator      Reflection                           Zend_Reflection    Scanner         ...
zf2.php tool                               ??Saturday, April 21, 2012                           ?
zf2.php tool                                                ??                                            ?               ...
zf2.php tool                                                             ??                                               ...
zf2.php tool                                                                  ??                                          ...
zf2.php tool                                                                  ??                                          ...
zf2.php tool                                                                   ??                                         ...
zf2.php tool                                                                   ??                                         ...
Yada, yada                           (closing thoughts)Saturday, April 21, 2012
3 things to take home..Saturday, April 21, 2012
3 things to take home..                           Give the proper respect to hand-codingSaturday, April 21, 2012
3 things to take home..                             Give the proper respect to hand-coding                           Don’t...
3 things to take home..                             Give the proper respect to hand-coding                           Don’t...
И последнее:          Contribute to ZF2                                   /zendframework/zf2                      +100 Kar...
Thanks!                           @farazdagi                               /farazdagiSaturday, April 21, 2012
Upcoming SlideShare
Loading in …5
×

ZFConf 2012: Code Generation и Scaffolding в Zend Framework 2 (Виктор Фараздаги)

2,769 views

Published on

http://www.zfconf.ru/2012/talks/code-generation-and-scaffolding-in-zend-framework-2/

Published in: Technology
  • Be the first to comment

ZFConf 2012: Code Generation и Scaffolding в Zend Framework 2 (Виктор Фараздаги)

  1. 1. ZF2 Code Generation или почему лучше день потерять, а потом за 5мин. долететьSaturday, April 21, 2012
  2. 2. Об авторе Victor Farazdagi Phrozn - phrozn.info @farazdagi zftalk.dev - zfcasts.ru /farazdagi Phing Contributor ZF Evangelist & ContributorSaturday, April 21, 2012
  3. 3. Список литературы Skynet in ZF 2.0 Presentation by R. Schindler The Unbearable Stupidity of Modeling by P. Friese Ward’s Wiki aka PortlandPattern Repository, the World’s first wiki Code Generation in Action by J. Herrington DSLs by M. Fowler The Pragmatic Programmer by A. Hunt & D. Thomas MDA Explained by A. Kleppe, J. Warmer, W. BastSaturday, April 21, 2012
  4. 4. Структура доклада 1. Определение концепции кодогенерации 2. Обзор существующих инструментов 3. Перспективы развития в ZF2 4. Выводы (честная попытка их сделать)Saturday, April 21, 2012
  5. 5. ОБПSaturday, April 21, 2012
  6. 6. ОБП В ZF1 нет адекватного инструментарияSaturday, April 21, 2012
  7. 7. ОБП В ZF1 нет адекватного инструментария В ZF2 нет готового инструментарияSaturday, April 21, 2012
  8. 8. ОБП В ZF1 нет адекватного инструментария В ZF2 нет готового инструментарияSaturday, April 21, 2012
  9. 9. ОБП В ZF1 нет адекватного инструментария В ZF2 нет готового инструментария Адекватного инструментария нет вообщеSaturday, April 21, 2012
  10. 10. What?? Адекватного инструментария нет вообщеSaturday, April 21, 2012
  11. 11. What?? Адекватного инструментария нет вообщеSaturday, April 21, 2012
  12. 12. What?? Адекватного инструментария нет вообще Bitch, Pleeease * * Дадагой ддуг, Вы ошибаетес!Saturday, April 21, 2012
  13. 13. What?? Адекватного инструментария нет вообще Bitch, Pleeease * * Дадагой ддуг, Вы ошибаетес!Saturday, April 21, 2012
  14. 14. Что это за зверь такой - Кодогенерация?Saturday, April 21, 2012
  15. 15. Определение Кодогенерация - процесс преобразования высокоуровневого (более абстрактного) кода в низкоуровневый (менее абстрактный) код. Процесс генерации кода обычно автоматизируют путем написания инструмента (Code Generator) для такого преобразования. Абстрактное Менее абстрактное представление представлениеSaturday, April 21, 2012
  16. 16. Определение (прод.) Кодогенерация - написание программ, которые пишут другие программы. Исходный Code Выходной код код GeneratorSaturday, April 21, 2012
  17. 17. Виды Генераторов Кода Пассивные Активные Генераторы Кода Генераторы КодаSaturday, April 21, 2012
  18. 18. Виды Генераторов Кода Пассивные Активные Генераторы Кода Генераторы Кода Save typingSaturday, April 21, 2012
  19. 19. Виды Генераторов Кода Пассивные Активные Генераторы Кода Генераторы Кода Save typing Продвинутая шаблонизацияSaturday, April 21, 2012
  20. 20. Виды Генераторов Кода Пассивные Активные Генераторы Кода Генераторы Кода Save typing Продвинутая шаблонизация Для создания артефактовSaturday, April 21, 2012
  21. 21. Виды Генераторов Кода Пассивные Активные Генераторы Кода Генераторы Кода Save typing Продвинутая шаблонизация Для создания артефактов Design SmellSaturday, April 21, 2012
  22. 22. Виды Генераторов Кода Пассивные Активные Генераторы Кода Генераторы Кода Save typing DRY Продвинутая шаблонизация Для создания артефактов Design SmellSaturday, April 21, 2012
  23. 23. Виды Генераторов Кода Пассивные Активные Генераторы Кода Генераторы Кода Save typing DRY Продвинутая шаблонизация Отлично работает с CI Для создания артефактов Design SmellSaturday, April 21, 2012
  24. 24. Виды Генераторов Кода Пассивные Активные Генераторы Кода Генераторы Кода Save typing DRY Продвинутая шаблонизация Отлично работает с CI Для создания артефактов Дешевая (ре)генерация Design SmellSaturday, April 21, 2012
  25. 25. Почему это важно?Saturday, April 21, 2012
  26. 26. Почему это важно? Время программера - главная ценностьSaturday, April 21, 2012
  27. 27. Почему это важно? Время программера - главная ценность КреативностьSaturday, April 21, 2012
  28. 28. Почему это важно? Время программера - главная ценность Креативность Рутинные задачиSaturday, April 21, 2012
  29. 29. Почему это важно? Время программера - главная ценность Креативность Рутинные задачи КодогенерацияSaturday, April 21, 2012
  30. 30. Почему это важно? Время программера - главная ценность Креативность Рутинные задачи Скука КодогенерацияSaturday, April 21, 2012
  31. 31. Почему это важно? Время программера - главная ценность Креативность Рутинные задачи Скука КодогенерацияSaturday, April 21, 2012
  32. 32. Почему это важно? Время программера - главная ценность Креативность Рутинные задачи Скука КодогенерацияSaturday, April 21, 2012
  33. 33. Почему это важно? Время программера - главная ценность Креативность Рутинные задачи Скука КодогенерацияSaturday, April 21, 2012
  34. 34. Почему это важно? Время программера - главная ценность Креативность Рутинные задачи Скука КодогенерацияSaturday, April 21, 2012
  35. 35. Почему это важно? Время программера - главная ценность Креативность Рутинные задачи Скука КодогенерацияSaturday, April 21, 2012
  36. 36. Почему это важно? Время программера - главная ценность Креативность ? Рутинные задачи Скука КодогенерацияSaturday, April 21, 2012
  37. 37. Анатомия проектаSaturday, April 21, 2012
  38. 38. Анатомия проекта Каркас (ZF, Symfony, Yii)Saturday, April 21, 2012
  39. 39. Анатомия проекта Каркас (ZF, Symfony, Yii) Батарейки (Doctrine, Twig, Buzz etc)Saturday, April 21, 2012
  40. 40. Анатомия проекта Каркас (ZF, Symfony, Yii) Наш код Батарейки (Doctrine, Twig, Buzz etc)Saturday, April 21, 2012
  41. 41. Анатомия проекта Нетривиальный код Каркас (ZF, Symfony, Yii) Наш код Батарейки (Doctrine, Twig, Buzz etc)Saturday, April 21, 2012
  42. 42. Анатомия проекта Нетривиальный код Каркас (ZF, Symfony, Yii) Наш код Рутинный/скучный код Батарейки (Doctrine, Twig, Buzz etc)Saturday, April 21, 2012
  43. 43. Качество кода Generated code sucks!!!Saturday, April 21, 2012
  44. 44. Качество кода Generated code sucks!!! Дадагой ддуг....Saturday, April 21, 2012
  45. 45. Качество кода Generated code sucks!!! Ты сам пишешь генератор кода. Сгенерированный код будет настолько хорош, насколько хорош созданный тобой генератор.Saturday, April 21, 2012
  46. 46. Кодогенерация и DSL DSL DSL General Purpose DSL LanguageSaturday, April 21, 2012
  47. 47. DSLs + Code GenerationSaturday, April 21, 2012
  48. 48. Примеры Генерация сущностей Генерация форм из модели SASS, LESS (CSS compiling/transforming) JavaScript Generation Оптимизация, преобразование, скаффолдинг Генерация промежуточного DSL тысячи их...Saturday, April 21, 2012
  49. 49. Итак, что дает CG..Saturday, April 21, 2012
  50. 50. Итак, что дает CG.. Качество / QualitySaturday, April 21, 2012
  51. 51. Итак, что дает CG.. Согласованность / Consistency Качество / QualitySaturday, April 21, 2012
  52. 52. Итак, что дает CG.. Don’t Repeat Yourself (DRY) Согласованность / Consistency Качество / QualitySaturday, April 21, 2012
  53. 53. Итак, что дает CG.. Скорость разработки Don’t Repeat Yourself (DRY) Согласованность / Consistency Качество / QualitySaturday, April 21, 2012
  54. 54. Резюмируя.. Work HarderSaturday, April 21, 2012
  55. 55. Резюмируя.. Work HarderSaturday, April 21, 2012
  56. 56. Резюмируя.. Work Harder Work SmarterSaturday, April 21, 2012
  57. 57. Обзор инструментовSaturday, April 21, 2012
  58. 58. RoR 3 Очень качественная реализация Упор на пассивные генераторы Экономят кучу времени Отличная расширяемость Boilerplate codeSaturday, April 21, 2012
  59. 59. RoR 3 Очень качественная реализация Упор на пассивные генераторы Экономят кучу времени Отличная расширяемость Boilerplate code rails new rails generate rakeSaturday, April 21, 2012
  60. 60. Django У тебя есть инструменты для Другая философия простого решения задачи, но задачи (включая рутинные) ты будешь решать сам.Saturday, April 21, 2012
  61. 61. Django У тебя есть инструменты для Другая философия простого решения задачи, но задачи (включая рутинные) ты будешь решать сам. Admin AppSaturday, April 21, 2012
  62. 62. Django У тебя есть инструменты для Другая философия простого решения задачи, но задачи (включая рутинные) ты будешь решать сам. Admin App Model FormSaturday, April 21, 2012
  63. 63. Django У тебя есть инструменты для Другая философия простого решения задачи, но задачи (включая рутинные) ты будешь решать сам. Admin App Model Form Generic ViewsSaturday, April 21, 2012
  64. 64. Yii yiic shell generators Gii + giixSaturday, April 21, 2012
  65. 65. Yii yiic shell generators генерация модели CRUD/Scaffold Gii + giixSaturday, April 21, 2012
  66. 66. Yii yiic shell generators генерация модели CRUD/Scaffold Gii + giix supersedes yiic generators web-based code generationSaturday, April 21, 2012
  67. 67. Symfony2 app/consoleSaturday, April 21, 2012
  68. 68. Symfony2 Создан на базе (замечательного) компонента Console Легко создавать расширения app/console Отличная поддержка Doctrine2 CRUD, Entities, Entity, Form Assets (styles, scripts) managementSaturday, April 21, 2012
  69. 69. CakePHP cake bake Good interactive shells Bakes Models, View, Controllers, Fixtures, UTs Генерация схемы для быстрого cake schema (повторого) развертывания. cake i18n Генерация .pot файловSaturday, April 21, 2012
  70. 70. CodeIgniter2Saturday, April 21, 2012
  71. 71. Кодогенерация в ZF1Saturday, April 21, 2012
  72. 72. Zend_Tool_Framework Действительно целый фреймворк Providers Manifest & MetaData CLI Handling Loaders RegistrySaturday, April 21, 2012
  73. 73. Zend_Tool_Framework Действительно целый фреймворк Providers Manifest & MetaData CLI Handling Loaders Triumph of Registry over-engineering!Saturday, April 21, 2012
  74. 74. Zend_Tool_Project Куча провайдеров код которых будет использован Project Module Controller View DbTableSaturday, April 21, 2012
  75. 75. Zend_Tool_Project Куча провайдеров код которых будет использован Project Module Controller View DbTable Context Triumph of Stateful over-engineering!Saturday, April 21, 2012
  76. 76. Zend_Tool + zf.php Фасад к ZendToolProjectProvider Management taks: on/off layout, show version, db adapter etc Model, View, Controller, Action, Module, Form zf action-name provider-name Контекстная справка aka --help systemSaturday, April 21, 2012
  77. 77. Zend_CodeGenerator Генерация кода с использованием Refactored to ОО-интерфейсов. ZendCodeGenerator Планировался как general-purpose Good for what it is: generator (SIC!!) PHP code generationSaturday, April 21, 2012
  78. 78. Zend_Reflection Refactored to Расширяет PHP Reflection ZendCodeReflection Интроспеция файлов Анализ docblock-commentsSaturday, April 21, 2012
  79. 79. Кодогенерация в ZF2Saturday, April 21, 2012
  80. 80. Текущее состояниеSaturday, April 21, 2012
  81. 81. Текущее состояние ZendToolSaturday, April 21, 2012
  82. 82. Текущее состояние ZendToolSaturday, April 21, 2012
  83. 83. Текущее состояние ZendTool ZendToolFrameworkSystemProvider ZendToolProjectProviderSaturday, April 21, 2012
  84. 84. Текущее состояние ZendTool ZendToolFrameworkSystemProvider Zf2Tool module ZendToolProjectProviderSaturday, April 21, 2012
  85. 85. Текущее состояние ZendTool ZendToolFrameworkSystemProvider Zf2Tool module ZendToolProjectProvider ZendConsole ZendCodeSaturday, April 21, 2012
  86. 86. ZendConsole /Thinkscape/zf2/tree/feature/console /Thinkscape/zf2-console-sandboxSaturday, April 21, 2012
  87. 87. ZendConsole /Thinkscape/zf2/tree/feature/console /Thinkscape/zf2-console-sandbox Routing Requests AdaptersSaturday, April 21, 2012
  88. 88. ZendCode Zend_CodeGenerator Zend_ReflectionSaturday, April 21, 2012
  89. 89. ZendCode Zend_CodeGenerator Zend_ReflectionSaturday, April 21, 2012
  90. 90. ZendCode Zend_CodeGenerator Reflection Zend_ReflectionSaturday, April 21, 2012
  91. 91. ZendCode Zend_CodeGenerator Reflection Zend_Reflection ScannerSaturday, April 21, 2012
  92. 92. ZendCode Zend_CodeGenerator Reflection Zend_Reflection Scanner AnnotationSaturday, April 21, 2012
  93. 93. ZendCode Zend_CodeGenerator Reflection Zend_Reflection Scanner Annotation GeneratorSaturday, April 21, 2012
  94. 94. zf2.php tool ??Saturday, April 21, 2012 ?
  95. 95. zf2.php tool ?? ? RFC - Tool 2.0Saturday, April 21, 2012
  96. 96. zf2.php tool ?? ? RFC - Tool 2.0 Будет активно обновлятьсяSaturday, April 21, 2012
  97. 97. zf2.php tool ?? ? RFC - Tool 2.0 Будет активно обновляться Tabled on last IRC meeting Thread in ML - go, write your opinion!!Saturday, April 21, 2012
  98. 98. zf2.php tool ?? ? RFC - Tool 2.0 Будет активно обновляться Tabled on last IRC meeting Ожидается дискуссия Thread in ML - go, write your opinion!!Saturday, April 21, 2012
  99. 99. zf2.php tool ?? ? RFC - Tool 2.0 Будет активно обновляться Tabled on last IRC meeting Ожидается дискуссия Thread in ML - go, write your opinion!! Часть модуля Zf2ToolSaturday, April 21, 2012
  100. 100. zf2.php tool ?? ? RFC - Tool 2.0 Будет активно обновляться Tabled on last IRC meeting Ожидается дискуссия Thread in ML - go, write your opinion!! Часть модуля Zf2Tool How to package?Saturday, April 21, 2012
  101. 101. Yada, yada (closing thoughts)Saturday, April 21, 2012
  102. 102. 3 things to take home..Saturday, April 21, 2012
  103. 103. 3 things to take home.. Give the proper respect to hand-codingSaturday, April 21, 2012
  104. 104. 3 things to take home.. Give the proper respect to hand-coding Don’t be afraid of automatic code generationSaturday, April 21, 2012
  105. 105. 3 things to take home.. Give the proper respect to hand-coding Don’t be afraid of automatic code generation Define and constantly improve your toolsetSaturday, April 21, 2012
  106. 106. И последнее: Contribute to ZF2 /zendframework/zf2 +100 Karma +100500 Skill +100 FUNSaturday, April 21, 2012
  107. 107. Thanks! @farazdagi /farazdagiSaturday, April 21, 2012

×