Продвинутое использование Celery — Александр КошелевYandexДоклад будет интересен как тем, кто уже знаком с библиотекой для реализации очередей задач Celery, так и тем, кто только собирается её попробовать. Основные темы выступления:
- как устроена Celery;
- как перейти на альтернативные брокеры;
- как обеспечить эффективный доступ к ресурсам;
- как отслеживать работоспособность процессов Celery
Zend framework 2Alex Simanovichݺߣs from my presentation on PhpDevby (June 2012, Minsk). This slides are based on presentation of Enrico Zimuel on ZFConf 2012 in Moscow.
Продвинутое использование ActiveRecord в Yii2Paul KlimovЗапись лекции "Продвинутое использование ActiveRecord в Yii2" от 24.09.2016, проходившей в Киеве в "Projector"
http://prjctr.com.ua/events/yii2-conference.html
Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.Fedor MalyshkinМетодики «Inversion of Control» и «Dependency Injection». Применение в Spring.
RDSDataSource: PromisesRAMBLER&CoМихаил Рахманов рассказывает о паттерне Promise и его использовании в iOS разработке.
Краткие тезисы:
- Что такое promises?
- Использование promises в iOS разработке (существующие библиотеки и подходы)
- Реализация promises библиотекой PromiseKit (основные методы, цепочки promises, обработка ошибок)
- Какие задачи можно решить с помощью promises, а какие - нельзя
- Использование promises на примере приложения: драм-машины с возможностью сохранять аудио-дорожки
- Подведение итогов: преимущества и недостатки.
RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.
Шаблонизация sql, или история еще одного велосипеда, в трех частях, Алексей Р...DevDay- Часть первая. SQL и программный код - как, имея очень простую задачу, получить очень плохое решение.
- Антракт. Почему нам неудобно писать SQL
- Часть вторая. Почему существующие решения - отстой.
- Антракт. Мечты об идеальном инструменте разработки SQL
- Часть третья. История велосипеда, или свой инструмент самый лучший
Примеры решения типичных задач за рамками ядра Yii2Paul KlimovРассмотрим сравнительно сложные, и в то же время, часто возникающие, задачи, для которых ядро Yii не дает готового решения. Посмотрим как из отдельных моделей ActiveRecord собирать единые сущности, и как разбивать большие модели на составляющие. Разберем как правильно сохранять файлы и как сэкономить на обработчиках событий и поведениях
- Интернационализация сущностей в базе данных;
- Обработка “ролей” в реляционных базах данных;
- Работа с файлами;
- Вложенные модели;
- Trait вместо Behavior.
Чуть сложнее чем Singleton: аннотации, IOC, АОПKirill ChebuninSome thoughts about IoC, annotations and AOP in PHP & ZF for ZFConf Ukraine 2010.
Language: Russian.
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Александр ЕгурцовПрезентация к вебинару об устройстве фреймворка symfony 2.
Видеозапись вебинара находится в моём блоге по адресу http://frontend-dev.ru/2012/12/12/symfony2-основы
Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.Fedor MalyshkinМетодики «Inversion of Control» и «Dependency Injection». Применение в Spring.
RDSDataSource: PromisesRAMBLER&CoМихаил Рахманов рассказывает о паттерне Promise и его использовании в iOS разработке.
Краткие тезисы:
- Что такое promises?
- Использование promises в iOS разработке (существующие библиотеки и подходы)
- Реализация promises библиотекой PromiseKit (основные методы, цепочки promises, обработка ошибок)
- Какие задачи можно решить с помощью promises, а какие - нельзя
- Использование promises на примере приложения: драм-машины с возможностью сохранять аудио-дорожки
- Подведение итогов: преимущества и недостатки.
RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.
Шаблонизация sql, или история еще одного велосипеда, в трех частях, Алексей Р...DevDay- Часть первая. SQL и программный код - как, имея очень простую задачу, получить очень плохое решение.
- Антракт. Почему нам неудобно писать SQL
- Часть вторая. Почему существующие решения - отстой.
- Антракт. Мечты об идеальном инструменте разработки SQL
- Часть третья. История велосипеда, или свой инструмент самый лучший
Примеры решения типичных задач за рамками ядра Yii2Paul KlimovРассмотрим сравнительно сложные, и в то же время, часто возникающие, задачи, для которых ядро Yii не дает готового решения. Посмотрим как из отдельных моделей ActiveRecord собирать единые сущности, и как разбивать большие модели на составляющие. Разберем как правильно сохранять файлы и как сэкономить на обработчиках событий и поведениях
- Интернационализация сущностей в базе данных;
- Обработка “ролей” в реляционных базах данных;
- Работа с файлами;
- Вложенные модели;
- Trait вместо Behavior.
Чуть сложнее чем Singleton: аннотации, IOC, АОПKirill ChebuninSome thoughts about IoC, annotations and AOP in PHP & ZF for ZFConf Ukraine 2010.
Language: Russian.
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Александр ЕгурцовПрезентация к вебинару об устройстве фреймворка symfony 2.
Видеозапись вебинара находится в моём блоге по адресу http://frontend-dev.ru/2012/12/12/symfony2-основы
Rich UI on Dojo Toolkit and Zend FrameworkGeorgy TurevichПрезентация мастер-класса "Создание динамических пользовательских интерфейсов и AJAX-приложений промышленного класса с помощью Dojo Toolkit и Zend Framework"
Эффективное программирование на NodeJSYura BogdanovДоклад рассматривает тонкости nodejs, а так же преимущества Evented I/O для серверных приложений. Будет предоставлен ряд рекоммендаций по правильному построению архитектуры, модульности, масштабированию, дизайну кода. Краткое введение в технологию программирования "волокнами" (fibers) и ряд других эффективных практик.
iOS and Android Mobile Test AutomationAndrii DzyniaМир мобильных телефонов очень сильно изменил нашу жизнь. В наше время невозможно представить современного человека, без этого чудо устройства. На рынке появляется все больше устройств и приложений. И чтобы удобнее пользоваться этими приложениями пользователи выбирают “умные” телефоны, или как их еще принято называть смартфоны. В своем докладе я хочу поделиться своим опытом автоматизации приложений под Android и iOS. Я расскажу о том, какие инструменты автоматизации я использовал. Поговорим о недостатках этих инструментов и какие из них стоит использовать у себя на проекте.
Doctrine 2zfconfuaValeriy Rabievskiy leads a web studio called stfalcon.com and is an active open source developer. Doctrine 2 is separated into common, DBAL, ORM, and migrations libraries. Entities are lightweight PHP classes that store data in object properties without needing to extend a base class. The EntityManager acts as the central access point for ORM functions like updating entities and accessing repositories. ZF2 integrates with Doctrine 2 through autoloading. The console provides commands for tasks like validating the schema, generating proxies, and running migrations to update the database schema.
4. @Entity
public class User {/**/}
[Class]
public class User {/**/}
/** @Entity */
class User {/**/}
Аннотации
5. • Метаданные, описывающие классы,
методы, свойства
• Компромисс между «соглашениями» и
«конфигурацией»
• Конфигурация непосредственно в коде
Аннотации
6. PHPUnit – возможно, одна из первых
билиотек с использованием аннотаций.
/**
* @expectedException RuntimeException
*/
public function testException()
{
}
Аннотации. Аннотации в PHP
14. Что же такое зависимости?
class FooController
extends Zend_Controller_Action
{
public function barAction()
{
$service = new MyUserService();
$service->getUser(1);
}
}
IoC. Зависимости
15. Шаг 1. Берем готовый объект из хранилища.
•Service Locator
•Registry
•etc
IoC. Контейнер
19. class MyUserService implements UserService
{
protected $userDao;
public function __construct(UserDao $userDao)
{
$this->userDao = $userDao;
}
public function getUser($id)
{
$this->userDao->getUserById($id);
}
}
IoC. Интерфейсы наше все
20. • Класс прдоставляет метод/свойство для
инъекции (внедрения) зависимости.
• Внедрением занимается вышестоящий
компонент
IoC. Dependency Injection
21. protected $userService;
public function setUserService(
UserService $userService)
{
$this->userService = $userService;
}
public function barAction()
{
$this->userService->getUser(1);
}
IoC. Dependency Injection
22. •Кто же будет заниматься внедрением?
•Как просто конфигурировать зависимости?
IoC. Dependency Injection
23. • Специальные IoC контерйнеры.
• Для PHP Symfony Dependency Injection
• Есть версия для 5.+
• Есть версия для 5.3
IoC. Symfony DI
24. • Контейнер содержит описание объектов.
• ZF2 - LazyLoadingBroker
IoC. Symfony DI
25. <service id="userDao" class="NotMyUserDao">
<!-- Some DB params for example -->
</service>
<service id="userService" class="MyUserService">
<argument type="service" id="userDao"/>
</service>
IoC. Symfony DI
26. $container = new ContainerBuilder();
$loader = new XmlFileLoader($container);
$loader->load('path/container.xml');
/* @var $service UserService */
$service = $container->get('userService');
IoC. Symfony DI
33. • Прадигма программирования
• Сквозная функциональность
Лог, обработка ошибок, права доступа, транзакции.
• Первая реализация - AspectJ
АОП. Что это?
34. • JoinPoint (Точка соединения) – метод, которому нужно добавить функциональность
• Pointcut (Срез) – набор JoinPoint’ов
АОП. Основные понятия
35. /** @Cached */
public function cacheMeDude() {/* */}
/** @Log */
public function plzLogMe() {/* */}
/** @Transactional */
public function iNeedTransaction() {/* */}
АОП. Реализация на PHP
36. • Aspect (Аспект)
• Advice (Совет)
Before, After, AfterException, AfterReturn, Around
АОП. Что это?
37. Advice как метод класса.
/** @Around("@annotation(Cached)") */
public function cache(
ProceedingJoinPoint $joinPoint)
{
// Cache result or return from cache
}
АОП. Что это?
38. Изменить работу метода, не трогая готовый
код.
•Переопределение в рантайме (runkit, etc)
•«Предкомпилирование» кода
•Прокси классы
АОП. Реализация на PHP
39. Подмена объекта, прокси объектом.
Например, при создании в IoC контейнере.
$objectProxy =
ProxyClass::createProxyFromObject(
$object,
$handler
);
АОП. Реализация на PHP
40. Генерируем прокси-классы с помощью
Zend_CodeGenerator
class TestAOPCheProxy extends TestAOP
{
// Override all methods
}
АОП. Реализация на PHP
41. Override всех public и protected методов
public function method($foo, $bar)
{
return $this->invocationHandler->invoke(
$this,
new ReflectionMethod(
get_parent_class(__CLASS__),
__FUNCTION__
),
func_get_args()
);
}
АОП. Реализация на PHP
42. /** @Cached */
public function cacheMeDude() {/* */}
/** @Log */
public function plzLogMe() {/* */}
/** @Transactional */
public function iNeedTransaction() {/* */}
АОП. Реализация на PHP