Как стать автором
Обновить

Что интересного я узнал на DevConf 2012

Время на прочтение4 мин
Количество просмотров2.4K
Привет, Хабрасообщество!
По следам недавно прошедшей конференции DevConf 2012 хочу поделиться записями из своего блокнота, которые показались лично мне наиболее интересными и полезными. Возможно, кому-то все это хорошо известно. Поскольку доклады шли одновременно в нескольких залах, то все их посетить было невозможно, поэтому ваши дополнения с удовольствием почитаю в комментариях.
Темы, которые прежде всего интересовали меня, это:
— развертывание системы и непрерывная интеграция (Continuous Integration)
— PHP 5.4, PHPUnit, Yii
— тестирование в javascript


Развертывание системы и непрерывная интеграция (CI)


Развертывание системы оказалось популярной темой конференции, было 3 или 4 доклада. Для себя я это обрисовал так: ставится сервер непрерывной интеграции, который, например, каждую ночь собирает ваш проект из репозитория, запускает тесты, проверяет код на потенциальные косяки и отправляет вам отчет. Утром вы смотрите этот отчет и сразу видите, как у вас обстоят дела с проектом. Еще преимущества, это возможность в любой момент показать менеджерам готовую рабочую версию проекта, да и для себя появляется четкое понимание, что готово, а что нет.
В качестве сервера непрерывной интеграции упоминались:
jenkins
есть много плагинов, в т.ч. самый важный плагин — Чак Норис)
teamcity
более приятный веб интерфейс, чем у jenkins
phpundercontrol
— что-то еще

В качестве системы сборки проекта можно использовать:
bash-скрипт
capistrano
сделан для Ruby, но можно использовать и для php. Особых знаний Ruby не требуется. Для symfony есть специальная версия capifony.
phing
написан на php, есть много готовых тасков. Билд описыается в виде xml-файлов. Из недостатков услышал отсутствие возможности отката из дефолтной поставки (нужно писать самому).

Для тестирования PHP-кода стандартно используется PHPUnit. В кулуарах говорили еще о Codeception, что он больше ориентирован на тестировщиков (про него был пост на хабре)
Сами тестовые методы удобно писать по шаблону GIVEN-WHEN-THEN (т.е прямо комментариями отбивая эти блоки):
function testMethodAbc() 
{
    //given
    $a = new Object();
    $a->x = 123;
    //when
    $a->methodAbc();
    //then
    $this->assertTrue($a->x);
}


Для анализа PHP-кода есть несколько хороших инструментов, которые также можно запускать автоматически при сборке или коммите:
Lint (верификация синтаксиса)
PHP_CodeSniffer (соответствие стандарту кодирования)
phploc (разная статистика типа кол-ва комментов и т.д.)
PHP_Depend (анализ кода, например расчет разных коэффициентов типа связности классов и т.д.)
PHP_Mess Detector (поиск потенциальных косяков в коде)
PHP_Code Coverage (покрытие кода тестами, идет вместе с PHPUnit)
PHP Copy/Paste detector (догадайтесь сами :))

На счет деплоя базы данных советовали dbDeploy. Миграции используются, но пишутся только в одну сторону. В том числе потому, что не всегда в принципе возможно написать обратную миграцию (например при удалении таблицы). Хороший совет — протестировать деплой базы на тестовом сервере, предварительно слив на него копию рабочей базы, т.к. источником ошибок могут быть сами данные.

Ну и касательно самой последовательности развертывания проекта мне была полезна такая схема:
1. распаковать исходники в новую папку
2. подтянуть зависимые библиотеки
3. накатить обновления базы
4. перекинуть symlink на новую версию
5. перекинуть symlink на пользовательские данные
6.* запустить тесты. в случае ошибки — откат. (для тестового сервера)
7. отправить емейлы пользователям/менеджерам о выходе новой версии

Что нового в PHP 5.4


как сказал сам автор PHP 5.4 = PHP6.0 — Unicode.
Основные новинки это:
— примеси (traits),
— использование [] для массивов
— встроенный веб-сервер

Также было полезно узнать, что минорные релизы 5.4.5 и 5.4.6 выйдут в течение двух ближайших месяцев.
Были интересные вопросы:
Q1: Unicode… when?
A1: May be year, may be ten years, may be never… We need your support!

Q2: What about integrating APC into PHP?
A2: We are working on it, but APC is not stable enough sometimes..


Yii / Yii2


Было интересно пообщаться с Александром Макаровым (SamDark) — одним из core-разработчиков фреймворка. Основные вопросы касались Yii2:
— дата выхода Yii2 пока держится в секрете
— в команде сейчас три активных участника + github-сообщество, куда приглашаются все желающие для поддержки и развития проекта
— в Yii2 ActiveRecord претерпит сильные изменения и будет разделена на непосредственно модель и объект Query, который заменит существующий DbCriteria
— из связей останется только две: HAS_ONE и HAS_MANY. Обещают реализовать автоматическое сохранение Related моделей для родительской
— в интерфейсе появится twitter bootstrap
— были еще какие-то улучшения, но я их не запомнил

Тестирование в JS


Для тестирования JS есть специальный фреймворк от Yahoo: YUI Test Framework. Работает все это через Selenium, т.е. нужно поставить дополнительный драйвер. Он даже сможет посчитать code coverage для js кода.
Для моделирования ajax-ответов от сервера советовали Sinon.js. В нем можно достаточно гибко настроить разные варианты ответов.
Для небольших проектов еще рекомендовали jsTestDriver как более легковесное решение (не нужен Селениум) но и менее богатый функционал.

Итог


Вот все, что в сухом остатке получилось у меня.
Считаю, что конференция была весьма полезной и информативной. Если есть что добавить — пишите.
Спасибо всем докладчикам, а также организаторам за вкусные пирожные в перерывах.

UPD:
Ссылки на некоторые доклады и фото:
1. PHP Performance (Rasmus Lerdorf) (спасибо SamDark, листать стрелками)
2. Воротилин Дмитрий рассказывает про Sprockets (спасибо @py3u)
3. Егор Хомяков рассказывает про уязвимость в OAuth (спасибо @py3u)
4. Некоторые фото и отчет о конференции (спасибо zizop)
Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 39: ↑31 и ↓8+23
Комментарии30

Публикации

Истории

Работа

React разработчик
80 вакансий
PHP программист
202 вакансии

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
10 – 11 октября
HR IT & Team Lead конференция «Битва за IT-таланты»
МоскваОнлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн