Что Интересного Я Узнал На Devconf 2012

Привет, Хабрасообщество! По итогам недавней конференции ДевКонф 2012 Хочу поделиться записями из своего блокнота, которые лично мне показались наиболее интересными и полезными.

Возможно, кто-то все это хорошо знает. Поскольку доклады проходили одновременно в нескольких залах, посетить их все было невозможно, поэтому буду рад прочитать ваши дополнения в комментариях.

В первую очередь меня интересовали темы: — развертывание системы и непрерывная интеграция (Continious Integration) — PHP 5.4, PHPUnit, Yii — тестирование в javascript



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

Развертывание системы оказалось популярной темой на конференции: было представлено 3 или 4 доклада.

Для себя я описал это так: устанавливается сервер непрерывной интеграции, который, например, каждую ночь собирает ваш проект из репозитория, запускает тесты, проверяет код на возможные косяки и отправляет вам отчет. Утром вы смотрите этот отчет и сразу видите, как у вас дела с проектом.

Еще одним преимуществом является возможность в любой момент показать менеджерам готовую рабочую версию проекта, а также вы имеете четкое понимание, что готово, а что нет. Как серверы непрерывной интеграции упомянул: — Дженкинс есть множество плагинов, в т.ч.

самый важный плагин - Чак Норрис) — тимсити более приятный веб-интерфейс, чем у Дженкинса — PHPundercontrol - что-то другое Как системы сборки проектов может быть использован: — bash-скрипт капистрано Создан для Ruby, но может использоваться и для PHP. Никаких специальных знаний Ruby не требуется.

Для Symfony существует специальная версия capifony. — пинг написан на PHP, есть много готовых задач.

Сборка описана в виде xml файлов.

Среди недостатков, которые я слышал, было отсутствие возможности отката с дефолтной поставки (нужно написать самому).

Для Тестирование PHP-кода стандартное использование PHPUnit .

В кулуарах тоже говорили о Кодецепция что он больше ориентирован на тестировщиков (об этом был разговор быстрый на хабе) Сами методы тестирования удобно писать по шаблону GIVEN-WHEN-THEN (т.е.

напрямую удаляя эти блоки с комментариями):

   

function testMethodAbc() { //given $a = new Object(); $a->x = 123; //when $a->methodAbc(); //then $this->assertTrue($a->x); }

Для Анализ PHP-кода Есть несколько хороших инструментов, которые также можно запускать автоматически при сборке или фиксации: — Ворс (проверка синтаксиса) — PHP_CodeSniffer (соответствие стандарту кодирования) — phploc (различная статистика, такая как количество комментариев и т. д.) — PHP_Depend (анализ кода, например, расчет различных коэффициентов, таких как связность классов и т. д.) — PHP_Беспорядок Детектор (поиск потенциальных ошибок в коде) — Покрытие PHP_кода (покрытие кода тестами, поставляется с PHPUnit) — Детектор копирования/вставки PHP (догадайтесь сами :)) В счет развертывание базы данных посоветовал dbDeploy .

Миграции используются, но пишутся только в одном направлении.

В том числе и потому, что не всегда в принципе можно написать обратную миграцию (например, при удалении таблицы).

Хороший совет — протестировать базу развертывания на тестовом сервере, предварительно загрузив на него копию рабочей базы, т.к.

источником ошибок могут быть сами данные.

Ну, о последовательность развертывания проекта Я нашел эту диаграмму полезной: 1. распаковываем исходники в новую папку 2. подтянуть зависимые библиотеки 3. скачать обновления базы данных 4. перенести символическую ссылку на новую версию 5. перенести символическую ссылку на пользовательские данные 6.* запустить тесты.

в случае ошибки - откат. (для тестового сервера) 7. отправлять электронные письма пользователям/менеджерам о выходе новой версии.



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

как сказал сам автор PHP 5.4 = PHP6.0 - Unicode. Основные новинки: - примеси (признаки), - используйте [] для массивов - встроенный веб-сервер Также было полезно узнать, что второстепенные выпуски 5.4.5 и 5.4.6 будут выпущены в течение следующих двух месяцев.

Были интересные вопросы: Вопрос 1: Юникод. когда? А1: Может быть год, может десять лет, а может быть никогда.

Нам нужна ваша поддержка! Вопрос 2. А как насчет интеграции APC в PHP? О2: Мы работаем над этим, но APC иногда работает недостаточно стабильно.



Yii/Yii2

Было интересно пообщаться с Александром Макаровым( СэмДарк ) — один из основных разработчиков фреймворка.

Основные вопросы, которые волнуют Юи2 : — Дата выхода Yii2 пока держится в секрете — в команде теперь три активных участника + сообщество github, куда приглашаются все желающие поддерживать и развивать проект. — в Yii2 ActiveRecord претерпит серьезные изменения и будет разделен на саму модель и объект Query, который заменит существующий DbCriteria — останется только два подключения: HAS_ONE и HAS_MANY. Обещают реализовать автоматическое сохранение Связанных моделей для родительского — в интерфейсе появится twitter bootstrap — были еще какие-то улучшения, но я их не запомнил

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

Для тестирования JS существует специальный фреймворк от Yahoo: Платформа тестирования YUI .

Все это работает через Selenium, т.е.

нужно установить дополнительный драйвер.

Он даже сможет рассчитать покрытие кода для кода JS. Для имитации ответов ajax от сервера было рекомендовано Синон.

js .

Он позволяет гибко настраивать разные варианты ответа.

Также рекомендуется для небольших проектов.

jsTestDriver как более легкое решение (Selenium не нужен), но и менее функциональное.



Нижняя граница

Это все, что я получил.

Считаю, что конференция была очень полезной и информативной.

Если есть что добавить, пишите.

Спасибо всем спикерам, а также организаторам за вкусные торты в перерывах.

УПД: Ссылки на некоторые отчеты и фотографии: 1. Производительность PHP (Расмус Лердорф) (Спасибо СэмДарк , листайте стрелками) 2. Дмитрий Воротилин рассказывает о Звездочках (спасибо @py3u) 3. Егор Хомяков рассказал об уязвимости в OAuth (спасибо @py3u) 4. Немного фотографий и отчет о конференции (Спасибо зизоп ) Теги: #devconf #php #JavaScript #непрерывная интеграция #разработка веб-сайтов #php #JavaScript

Вместе с данным постом часто просматривают: