Презентация Алексндра Тороша на PHP Frameworkds Day 2014 о фреймворке Phalcon и последних событиях с ним связанных за последний год. Релиз Yona CMS - системы управления контентом на Phalcon с модульной структурой
Сергей Яковлев "Phalcon 2 - стабилизация и производительность"Fwdays
Важные изменения в Phalcon за последний год
Краткое описание важных изменений и дополнений, которые сделали Phalcon интересным и более стабильным за последний год.
Что ожидается от версии 2.1
О концептуальных изменениях в версии 2.1
LTS версия и система релизов
О выходе LTS версии, сроках её поддержки, а так же намеченной системе релизов Phalcon и сроках их поддержки.
Как Zephir увеличивает численность команды и общую стабильность проекта
О том, что команда Zephir расширяется профессиональными разработчиками на языке Си, делая язык стабильнее и развивая его быстрее. О заморозке основной ветки разработки.
Как принять участие в разработке Phalcon
О том как писать на языке программирования Zephir, тестировать локально свои наработки и правильно отправлять пул реквесты или баг репорты чтоб они были рассмотрены в ближайшее время.
Поддержка PHP7
О том, на какой стадии поддержка PHP7 реализована в Phalcon. Как Phalcon будет работать в PHP7. Будет ли он быстрее чем нативный код для PHP7. О том, какую версию рекомендуется использовать сейчас.
В чём мы нуждаемся
О том, что нам нужны не только программисты — описание того, как можно помогать проекту развиваться, даже не будучи профессиональным программистом.
Доклад с PUG#6 https://www.facebook.com/events/837043689707114/
1. Почему стоит обратить внимание на этот фреймворк. Какие очевидные плюсы и выгоды мы можем из этого извлечь.
2. Реализация основных компонентов фреймворка, безопасность и архитектура.
3. Инструменты для масштабирования highload-проекта, предусмотренные самим фреймворком.
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьScrumTrek
2016 год. Добро пожаловать в новую реальность.
Сегодня позиция JavaScript-разработчика является одной из самых востребованных и хорошо оплачиваемых в мире. Современные возможности JavaScript - это квестистенция всего, что произошло в отрасли разработки за всё её время существования: универсальные React-компоненты и композиция, декларативная анимация, изоморфные приложения, отсутствие side effects, авто-генерация тестов, симбиоз ООП и функционального программирования.
Последние три года выдались самые насыщенные революционные для веб-разработки. Многие разработчики, кто не успел уследить за произошедшим, задают лишь один вопрос ЧТО ПРОИСХОДИТ?
В рамках этого доклада мы попробуем синхронизироваться с JavaScript сообществом и посмотреть, что же он предоставляет нам сегодня? Как решать задачи привычные задачи? Что является актуальным направлением, а что может стать пустой тратой сил и времени?
Сергей Яковлев "Phalcon 2 - стабилизация и производительность"Fwdays
Важные изменения в Phalcon за последний год
Краткое описание важных изменений и дополнений, которые сделали Phalcon интересным и более стабильным за последний год.
Что ожидается от версии 2.1
О концептуальных изменениях в версии 2.1
LTS версия и система релизов
О выходе LTS версии, сроках её поддержки, а так же намеченной системе релизов Phalcon и сроках их поддержки.
Как Zephir увеличивает численность команды и общую стабильность проекта
О том, что команда Zephir расширяется профессиональными разработчиками на языке Си, делая язык стабильнее и развивая его быстрее. О заморозке основной ветки разработки.
Как принять участие в разработке Phalcon
О том как писать на языке программирования Zephir, тестировать локально свои наработки и правильно отправлять пул реквесты или баг репорты чтоб они были рассмотрены в ближайшее время.
Поддержка PHP7
О том, на какой стадии поддержка PHP7 реализована в Phalcon. Как Phalcon будет работать в PHP7. Будет ли он быстрее чем нативный код для PHP7. О том, какую версию рекомендуется использовать сейчас.
В чём мы нуждаемся
О том, что нам нужны не только программисты — описание того, как можно помогать проекту развиваться, даже не будучи профессиональным программистом.
Доклад с PUG#6 https://www.facebook.com/events/837043689707114/
1. Почему стоит обратить внимание на этот фреймворк. Какие очевидные плюсы и выгоды мы можем из этого извлечь.
2. Реализация основных компонентов фреймворка, безопасность и архитектура.
3. Инструменты для масштабирования highload-проекта, предусмотренные самим фреймворком.
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьScrumTrek
2016 год. Добро пожаловать в новую реальность.
Сегодня позиция JavaScript-разработчика является одной из самых востребованных и хорошо оплачиваемых в мире. Современные возможности JavaScript - это квестистенция всего, что произошло в отрасли разработки за всё её время существования: универсальные React-компоненты и композиция, декларативная анимация, изоморфные приложения, отсутствие side effects, авто-генерация тестов, симбиоз ООП и функционального программирования.
Последние три года выдались самые насыщенные революционные для веб-разработки. Многие разработчики, кто не успел уследить за произошедшим, задают лишь один вопрос ЧТО ПРОИСХОДИТ?
В рамках этого доклада мы попробуем синхронизироваться с JavaScript сообществом и посмотреть, что же он предоставляет нам сегодня? Как решать задачи привычные задачи? Что является актуальным направлением, а что может стать пустой тратой сил и времени?
Привет, Санкт-Петербург!
В разгар летнего сезона, мы поговорим об историях обновлений,
например, с 6.4 до 7.х, с разными трюками, а также об истории исследования разных регрессий на продуктах Atlassian и других плагинов.
Наша программа будет пополняться, и мы рады к сотрудничеству.
Ждем Вас на встрече в Яндекс Деньгах.
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extensionchaykaborya
Доклад с 4front meetup #8.
Видео здесь: https://youtu.be/-i9nNmCCFpA
В докладе речь идет о том как портировать Chrome Extension в Firefox Extension или сразу написать кросс-браузерное расширение с нуля.
Полной автоматизацией процесса сборки приложения уже никого не удивишь. Не в последнюю очередь благодаря Maven – системе управления жизненным циклом проекта. Однако проекты растут очень быстро: увеличивается количество модулей, тестов, зависимостей, используемых плагинов. И всего лишь за год легковесный проект, на сборку которого уходило 5 минут, превращается в монстра, который пожирает время разработчиков 30-минутной сборкой. Чтобы справится с этой проблемой разработчикам приходится постоянно чистить свой код и бороться со скоростью выполнения тестов. Это верное решение, но не следует забывать о том, что и сам процесс сборки можно улучшить. В этом докладе будет рассмотрено, как при помощи простых и нехитрых шагов можно оптимизировать работу с зависимостями и обогатить скрипты сборки полезными плагинами. Также будут обсуждаться тонкости конфигурации основных плагинов и особенности работы с командной строкой, которые появились в последней версии Maven.
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"Fwdays
Demonizing PHP application to gain higher performance. Splitting an application into infrastructure (go) and business logic (PHP) layers to gain higher flexibility.
"Web Vitals monitoring & optimizations", Erik HimiranovFwdays
Performance is one of the key factors in determining a product's user experience. It is very important that the site loads quickly, is responsive and interactive, and the content remains stable.
I want to share why you need to monitor application performance, talk about Web Vitals metrics and tools for measuring them.
I also want to tell you about examples of optimizations that can positively affect performance and what results it can bring.
Denis Bosak (Magecom): Front-end in Magento, and more. Prospects, technologies, and tools.
Денис Босак (Magecom): Front-end в Magento и не только. Перспективы, технологии, инструменты.
Привет, Санкт-Петербург!
В разгар летнего сезона, мы поговорим об историях обновлений,
например, с 6.4 до 7.х, с разными трюками, а также об истории исследования разных регрессий на продуктах Atlassian и других плагинов.
Наша программа будет пополняться, и мы рады к сотрудничеству.
Ждем Вас на встрече в Яндекс Деньгах.
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extensionchaykaborya
Доклад с 4front meetup #8.
Видео здесь: https://youtu.be/-i9nNmCCFpA
В докладе речь идет о том как портировать Chrome Extension в Firefox Extension или сразу написать кросс-браузерное расширение с нуля.
Полной автоматизацией процесса сборки приложения уже никого не удивишь. Не в последнюю очередь благодаря Maven – системе управления жизненным циклом проекта. Однако проекты растут очень быстро: увеличивается количество модулей, тестов, зависимостей, используемых плагинов. И всего лишь за год легковесный проект, на сборку которого уходило 5 минут, превращается в монстра, который пожирает время разработчиков 30-минутной сборкой. Чтобы справится с этой проблемой разработчикам приходится постоянно чистить свой код и бороться со скоростью выполнения тестов. Это верное решение, но не следует забывать о том, что и сам процесс сборки можно улучшить. В этом докладе будет рассмотрено, как при помощи простых и нехитрых шагов можно оптимизировать работу с зависимостями и обогатить скрипты сборки полезными плагинами. Также будут обсуждаться тонкости конфигурации основных плагинов и особенности работы с командной строкой, которые появились в последней версии Maven.
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"Fwdays
Demonizing PHP application to gain higher performance. Splitting an application into infrastructure (go) and business logic (PHP) layers to gain higher flexibility.
"Web Vitals monitoring & optimizations", Erik HimiranovFwdays
Performance is one of the key factors in determining a product's user experience. It is very important that the site loads quickly, is responsive and interactive, and the content remains stable.
I want to share why you need to monitor application performance, talk about Web Vitals metrics and tools for measuring them.
I also want to tell you about examples of optimizations that can positively affect performance and what results it can bring.
Denis Bosak (Magecom): Front-end in Magento, and more. Prospects, technologies, and tools.
Денис Босак (Magecom): Front-end в Magento и не только. Перспективы, технологии, инструменты.
2. Годом ранее…
PHP Frameworks Day
12 октября 2013
Phalcon - cамый быстрый PHP Framework.
Разработка highload проекта
http://frameworksdays.com/event/php-frameworks-
day-2013/review/Phalcon-PHP-Framework
3. План доклада
1. Рост популярности Phalcon
2. Изменения в Phalcon версии 1.x
3. Обзор популярных разработок
4. Gazeta.ua после перехода на Phalcon
5. Yona CMS, особенности, модули
6. Практические приёмы работы с Phalcon
7. Трудности работы с Phalcon
8. Phalcon 2, Zephir
4. Считаем Stars на Github у популярных фреймворков
Рост популярности Phalcon
6. Built with Phalcon – http://builtwith.phalconphp.com
Рост популярности Phalcon
7. Компании, студии, программисты, фрилансеры,
которые начали использовать Phalcon
• http://lezgro.com/
• http://wezoom.net/
• http://www.kiwisoft.co.uk/
• http://www.robertbojor.com/
• https://jream.com/
Рост популярности Phalcon
8. Фан-сайты по Phalcon
Группа VK –
https://vk.com/phalconphp
Постоянные новости и
анонсы из мира Phalcon.
Обзор свежих разработок.
Обсуждения.
Рост популярности Phalcon
9. Фан-сайты по Phalcon
Phalconist – каталог ресурсов для
фреймворка Phalcon.
http://phalconist.com/
Количество размещенных проектов: 167
Рост популярности Phalcon
10. Изменения за год (Oct 2013 – Nov 2014) 1.2.4 1.3.4
• Новый компонент PhalconImage
• PhalconConfig: добавлены адаптеры Json, Yaml
• PhalconTranslate: добавлен адаптер Gettext
• PhalconSession: добавлены адаптеры Memcache,
Libemcached
• PhalconCache:
- Поддержка Libmemcached и APCu 4.0.2+
- Добавлены методы increment(), decrement(), flush()
Изменения в Phalcon версии 1.x
11. Изменения за год (Oct 2013 – Nov 2014) 1.2.4 1.3.4
• PhalconDb: добавлена поддержка типов данных
DECIMAL, DOUBLE, BOOLEAN, POINT
• PhalconForms: добавлен элемент Radio
• PhalconLogger: добавлен адаптер FirePHP
• PhalconTag:
- Добавлены пропущенные варианты type для
элемента input в соответствии с HTML5
- Добавлен метод setTitleSeparator() - лично по моей
просьбе
Изменения в Phalcon версии 1.x
12. Изменения за год (Oct 2013 – Nov 2014) 1.2.4 1.3.4
• Отработано около 475 багрепортов на github
• Исправлено большое количество ошибок, в том числе
критических
• Исправлено большинство известных утечек памяти
• Сделано множество улучшений API
• Сделаны различные оптимизации фреймворка на
уровне Си
• В общем – все стало еще лучше
Изменения в Phalcon версии 1.x
13. Phalcon Eye
CMS написана на Phalcon http://phalconeye.com/
Автор: Иван Воронцов
Особенности:
Управление пакетами
Визуальный конструктор страниц
Менеджер навигационного меню
Управление языками и переводами
Популярные разработки на Phalcon
14. Phalcon Eye – Pages
Популярные разработки на Phalcon
15. Phalcon Eye – Pages
Популярные разработки на Phalcon
16. Phosphorum – движок форума на
Phalcon. Используется официальным
комьюнити Phalcon фреймворка.
https://github.com/phalcon/forum
http://forum.phalconphp.com/
Популярные разработки на Phalcon
17. Vegas-CMF – открытая система
управления контентом на Phalcon.
Разбита на отдельные составляющие
и модули
http://vegas-cmf.github.io/
https://github.com/vegas-cmf
Популярные разработки на Phalcon
18. Схема работы на ZF1:
Для увеличения производительности,
приходилось использовать HTTP-прокси:
Varnish → Nginx → Полностраничный
кеш(APC) → ZF1
А также допиливать ZF1 MVC …
Схема работы на Phalcon:
Nginx → Phalcon
Gazeta.ua после перехода на Phalcon
19. Тестирование PHP-слоя
Проводилось на локальной машине:
Core 2 Duo 2.04 GHz
4Gb RAM
Linux Mint 14 Nadia MATE 64-bit
Apache 2.2.22
PHP 5.4.6
• Был исключен фактор запросов к БД
• Без Varnish
• Без полностраничного APC-кеша
Gazeta.ua после перехода на Phalcon
20. Gazeta.ua после перехода на Phalcon
Данные по Xdebug
(php-слой, без БД)
gazeta.ua zf1 gazeta.ua phalcon yona-cms phalcon
мс 834 81 27
0
100
200
300
400
500
600
700
800
900
Скоростьзагрузки,мс
21. Gazeta.ua после перехода на Phalcon
Firebug, ожидание ответа сервера
(php-слой, без БД)
gazeta.ua zf1 gazeta.ua phalcon yona-cms phalcon
мс 210 50 20
0
50
100
150
200
250
Скоростьзагрузки,мс
22. Gazeta.ua после перехода на Phalcon
ab -c 1000 -n 10
(php-слой, без БД)
gazeta.ua zf1 gazeta.ua phalcon yona-cms phalcon
req/s 10,27 52,45 108,01
0,00
20,00
40,00
60,00
80,00
100,00
120,00
Кол-возапросоввсекунду
23. Были ли преимущества от перехода?
Однозначно ДА!
Преимущества:
• Отказ от HTTP-прокси (Varnish);
• Отказ от полностраничного APC-кеша;
• Данные отказы позволили ускорить написание нового
функционала, без привязки к ним;
• Рефакторинг всего существующего функционала;
• Увеличение скорости отдачи страниц сервером
~ в 4 раза;
• Увеличение устойчивости портала при высоких
нагрузках ~ в 5 раз;
Gazeta.ua после перехода на Phalcon
24. Yona CMS
http://yonacms.com/
Автор: Александр Торош
CMS/CMF система на Phalcon. Имеет удобную
модульную структуру. Предназначена для
разработки простых сайтов, так и крупных порталов
и веб-приложений.
Благодаря не сложной конфигурации и простой
архитектуре, может быть легко модифицирована
под любую задачу.
- особенности, модули
25. Yona CMS позволяет значительно экономить
время в стартовом развертывании необходимого
базового функционала для любого проекта.
На модульной структуре этой CMS уже успешно
запущено более 10 проектов, среди которых
Gazeta.ua
- особенности, модули
26. Особенности:
• Модульная структура с удобной иерархией, которая
основана на namespace;
• Каждый модуль может выступать как отдельный
независимый компонент. Иметь свои маршруты,
хелперы, less, css, js файлы;
• Управление языками (в неограниченном количестве)
и переводами прямо из админки;
• AJAX-переходы по сайту со сменой URL в браузере
из коробки. Без ущерба SEO;
- особенности, модули
27. Особенности:
• Модуль хранения и нарезки изображений Image;
• Гибкий SEO-модуль;
• Простота, интуитивная понятность админ.
управления в модулях. Без сложностей и
«переоптимизаций»;
• Интерфейс админки построен на Semantic UI;
• Стили интерфейса построены на LESS
• Автоматическая минификация и сборка в единые
assets-файлы
- особенности, модули
28. Перечень готовых модулей:
• CMS – конфигурация;
• Admin – авторизация и админпанель;
• FileManager – файловый менеджер;
• Image – хранилище изображений;
• Page – статические страницы;
• Publication – динамические публикации (новости,
статьи, блог - можно создавать новые типы);
• SEO – модификация title, meta-тегов для любой
страницы веб-приложения;
• Slider – настраиваемые «слайдеры»;
• Widget – статические HTML виджеты;
- особенности, модули
34. Модуль Image, особенности:
• Позволяет хранить изображения и нарезать их по
заданным параметрам;
• Схема директорий для хранения файлов рассчитана
таким образом, что в одной папке не может быть
более чем 1000 файлов;
• Нарезанные изображения кешируются в виде
JPEG-файлов;
• Система защиты от параллельной генерации кеша
определенного изображения (lock/unlock);
• Используется компонент PhalconImage
- особенности, модули
35. Модуль Image, пример использования:
- особенности, модули
$imageStorage = new ImageStorage(array(
‘id’ => 256, // ID объекта в БД, например publication
‘type’ => ‘publication’, // тип
‘width’ => ‘300’ // ширина изображения
));
// рендеринг HTML-тега изображения <img src=“***” alt=“***”>
echo $imageStorage->imageHtml();
// Относительный путь к кешированному изображению шириной 300px
$cached_src = $imageStorage->cachedRelPath();
// Абсолютный путь к оригиналу изображения
$original_src = $imageStorage->originalAbsPath();
36. Планы на ближайшее будущее:
• Простая инсталяция и развертывание проекта;
• Полноценный конфигурационный модуль для CMS;
• Кодогенерация прямо из админки: модулей, CRUD;
• Миграции БД;
• Управление подключаемыми модулями;
• Создание набора модулей для интернет-магазина;
• Написание полноценной документации на русском и
английском языках;
• Покритие тестами;
- особенности, модули
37. Helper
yona-cms / app / Bootstrap.php
$di->set('helper', new ApplicationMvcHelper());
Практические приёмы работы с Phalcon
38. Helper
yona-cms / app / modules / Application / Mvc / Helper.php
class Helper extends PhalconMvcUserComponent
{
public function translate($string, $placeholders = null)
{
if (!$this->translate) {
$this->translate = $this->getDi()->get('translate');
}
return $this->translate->query($string, $placeholders);
}
// Сюда можно добавить любые другие необходимые вам методы
}
Практические приёмы работы с Phalcon
39. Helper. Как этим пользоваться?
Шаблон volt
{{ helper.translate('Привет мир!') }}
Controller
$this->helper->translate('Привет мир!');
Доступ через DI-контейнер
$helper = $this->getDi()->get('helper');
$helper->translate('Привет мир!');
Практические приёмы работы с Phalcon
40. Routes для каждого модуля отдельно
yona-cms / app / Bootstrap.php
$router = new ApplicationMvcRouterDefaultRouter();
$router->setDi($di);
foreach ($application->getModules() as $module) {
$routesClassName = str_replace('Module', 'Routes',
$module['className']);
if (class_exists($routesClassName)) {
$routesClass = new $routesClassName();
$router = $routesClass->init($router);
}
}
$di->set('router', $router);
Практические приёмы работы с Phalcon
41. Routes для каждого модуля отдельно
yona-cms / app / modules / Page / Routes.php
class Routes
{
public function init(PhalconMvcRouter $router)
{
$router->add('/{slug:[a-z0-9_-]+}.html', array(
'module' => 'page',
'controller' => 'index',
'action' => 'index'
))->setName('page');
return $router;
}
}
Практические приёмы работы с Phalcon
42. Routes для каждого модуля отдельно
Параметр $route, что передается в метод init() - это
объект PhalconMvcRouter
Вы можете использовать любые инициализации из
документации
http://docs.phalconphp.com/en/latest/api/Phalcon_Mvc_Ro
uter.html
… а также методы addPost(), addPut(), addDelete() …
Т.е. строить удобные модульные RESTful приложения
Практические приёмы работы с Phalcon
43. • На разных аппаратных архитектурах могут возникать
segfault ошибки и утечки памяти при работе с
определенными функциями.
• В ORM работа с Relations влечет за собой
дополнительные запросы, что не совсем удобно.
• Слой View по сравнению с другими популярными
фреймворками достаточно бедный в своих
возможностях.
Радует то, что разработчики обещают все исправить
и сделать фреймворк лучше
Трудности работы с Phalcon
44. Особенности второй версии Phalcon:
• Написан на Zephir.
Это компилируемый язык высокого уровня, предназначен
для облегчения создания и сопровождения расширений для
PHP с акцентом на безопасность памяти.
• Еще более производительный, чем первая версия
• Обратная совместимость с Phalcon 1.3.x
• Все тесты мигрированы на Codeception
• Вносить вклад в развитие фреймворка становиться
легче
Phalcon 2
45. Уже доступна Beta 3. Изменения:
• Phalcon 2.0 теперь на 100% проходит тесты Phalcon 1.*
• Благодаря «Zephir» новое ядро более полно проверяет
соответствие классов и типов, вызывая более
подробные сообщения о несоответствиях.
• Язык «Zephir» так же более точно и полно выдаёт
информацию об исключениях и их параметрах.
• Phalcon 2 вообще более лучше работает с разными
типами ошибок и исключениями.
• Новое ядро использует оптимизации из PHP 5.6, что,
непременно, благоприятно сказывается на
производительности. Если вы используете версию PHP
ниже, все будет работать, но без этих оптимизаций.
Phalcon 2
46. • Phalcon стремительно набирает популярность в мире
веб-разработки и уверенно занимает собственную
нишу;
• Phalcon постоянно избавляется от своих «детских
болезней» и становиться лучше;
• С разработкой Phalcon 2 и Zephir вносить вклад в
развитие фреймворка становиться намного легче;
• Zephir позволяет нам заглянуть «под капод»
фреймворка, более детально изучить принцип
работы;
• Делать хорошие, быстрые production приложения на
Phalcon возможно и даже нужно!
Выводы
47. Спасибо за внимание!
Александр Торош
Веб-студия «WeZoom»
wezoom.net
oleksandr.torosh@wezoom.net
Тел: (044) 221-65-78
(096) 989-08-28
(063) 787-22-36