<rmcreative>

RSS
  1. Yii на WebCamp 2016 в Одессе

    23 июля

    29-31 июля в Одессе пройдёт конференция WebCamp. В секции PHP выступит Дмитрий Науменко (SilverFire) из команды Yii с докладом «Рецепты для Yii 2».

    Каждая технология имеет свои особенности, зная которые, можно создавать хороший код, который не стыдно показывать людям и удобно поддерживать. Рассмотрим хорошие идеи для Yii 2, пройдёмся по неудачным, научимся организовать структуру проекта, использовать модульный подход при разработке.

    Билеты уже продают

    3 комментария
  2. Когда уместен Active Record в Yii 2

    22 июля

    В комментариях к посту про модули Дмитрий задал вопросы про AR.

    Объем записей в таблицах от 500к, почти каждый запрос это 2-3 JOINa. Раньше делал через геттеры AR, выборка за раз порядка 100 записей. Но заметил такую штуку, что если использовать createCommand, то память заметно меньше расходуется и скорость быстрее. К сожалению, сейчас не могу показать реальные тесты, так как тестировали это месяц назад, но в итоге, большую часть моделей мы переписали на DAO, отказавшись от AR.

    Память уходит на хранение данных в объектах. Скорость теряется из за необходимости эти объекты инстанциировать.

    Так, так ли плох AR или его использование подходит для небольших проектов? У нас также постоянно идет вставка, порядка 5000 записей в час. Пока для этого используем AR.

    Когда использование AR уместно, а когда нет?

    AR отлично подходит для удаления, обновления или добавления небольшого количества записей по одной за раз. Чрезвычайно удобно. К тому же, поддержка dirty attributes, то есть сохранения только того, что изменилось, позволяет хорошо разгрузить базу данных и скрыть до лучших времён многие моменты при параллельном редактировании. Если у вас в приложении нет сильно сложной логики и не требуется дополнительных абстракций для сущности, то AR для этого подходит идеально.

    Для простых выборок с целью отображения до сотни записей на страницу, в принципе, AR тоже подходит. Да, с массивами через query builder или с asArray() получается быстрее и меньше кушает памяти, но работать с ними не столь удобно.

    Для сложных выборок AR не рекомендуется. Сложные выборки у нас обычно возвращают какие-либо агрегаты или преобразованные данные, которые ну никак не вписываются в изначальную модель AR. В этом случае лучше делать выборки через query builder.

    Для импорта-экспорта также лучше использовать query builder.

    13 комментариев
  3. Видео моего доклада по безопасности с Deep Refactoring

    18 июля

    В Воронеже несколько раз в месяц мы собираемся небольшой компанией, которую окрестили клубом «Deep Refactoring», рассказываем интересное из мира IT в виде доклада и горячо обсуждаем после. В начале месяца я рассказывал «Безопасность: от базовых принципов до особенностей PHP». Доклад я первый раз прочитал на английском в Стамбуле, затем на DevConf и последний раз в клубе.

    Слайды всё те же с DevConf, а вот рассказ отличается. Во-первых, рассказывал в небольшой компании, так что задавали вопросы по ходу и меняли ход рассказа. Во-вторых, дело было в пабе :)

    Слушайте на YouTube. Посмотреть особо не удастся. Темно.

    Кстати, докладов было прочитано за время существования клуба уже не мало, все их можно посмотреть там же на YouTube.

    Комментировать
  4. Yii 2.0.9

    11 июля

    Релизнули Yii 2.0.9. Анонс можно прочитать на хабре.

    Выпустили немного раньше запланированного. Ничего сверхважного при этом на следующий релиз не перекинули, что, по-моему, прекрасно.

    2 комментария
  5. Встреча Intellectsoft по Yii 2, Codeception и тестированию в Киеве

    5 июля

    13 июля Intellectsoft с 18:00 по 22:00 организуют встречу по Yii 2, Codeception и тестированию. Пройдёт она по адресу Киев, Лейпигская 15, БЦ MERX-2. Встречу ведёт Михаил Бондарчук, автор Codeception.

    Читаем

    9 комментариев
  6. Как получить mock из ActiveRecord

    5 июля

    На тостере в комментариях к вопросу спросили, как получить mock ActiveRecord, чтобы он не пытался лезть в базу и возможно ли.

    Возможно. В случае PHPUnit делается так:

    $post = $this->getMockBuilder('\app\model\Post')
        ->setMethods(['save', 'attributes'])
        ->getMock();
    $post->method('save')->willReturn(true);
    $post->method('attributes')->willReturn([
        'id',
        'status',
        'title',
        'description',
        'text'
    ]);

    Особенность заключается в том, что перекрыть надо ещё и метод attributes() потому как ActiveRecord лезет за схемой в базу данных, что нам не нужно.

    4 комментария
  7. Вышел официальный HTTP клиент для Yii 2

    1 июля

    Выпустили официальное расширение-клиент HTTP. Написано почти целиком Павлом Климовым. До последнего времени не было тегнуто как релиз из за несовместимости с PSR-7, хотя уже много где использовалось. После долгих обсуждений всё-таки решили выпускать без PSR-7. К нему, возможно, вернёмся в 2.1.x.

    Выполнение HTTP запроса выглядит вот так:

    use yii\httpclient\Client;
     
    $client = new Client();
    $response = $client->createRequest()
        ->setMethod('post')
        ->setUrl('http://example.com/api/1.0/users')
        ->setData(['name' => 'John Doe', 'email' => 'johndoe@domain.com'])
        ->send();
    if ($response->isOk) {
        $newUserId = $response->data['id'];
    }

    https://github.com/yiisoft/yii2-httpclient

    11 комментариев
  8. Выпущена версия 2.1.0 расширения для MongoDB

    27 июня

    Выпущена версия 2.1.0 расширения для MongoDB, которая использует новый драйвер MongoDB . Расширение отлично работает с PHP 7.x и HHVM.

    Данная версия не совместима с 2.0.x, поэтому стоит сначала прочитать UPGRADE и обновить свой код.

    Если вы хотите остаться на 2.0.x, удостоверьтесь, что в вашем composer.json версия указана как ~2.0.5. Подробнее о версиях можно узнать из документации Composer.

    Кроме нового драйвера в данной версии есть и некоторые улучшения, такие как пакетное чтение и пакетная запись данных. Подробнее о них можно узнать из CHANGELOG.

    8 комментариев
  9. DevConf 2016, отчёт

    25 июня

    17 июня прошла конференция DevConf. В этот раз всё происходило в бизнес-школе Сколково. Здание очень интересное и довольно приятное.

    Хоть и немного запутанное...

    Мой доклад «Безопасность: от базовых принципов до особенностей PHP» прошёл замечательно. Было много интересных вопросов и отличные обсуждения после. Кроме него удалось послушать Дмитрия Стогова про PHP 7.1 и Андрея Нестера про SOLID.

    DevConf отличителен особой общительностью участников и располагающей к этому атмосферой, поэтому остальное время было проведено за приятным и полезным общением. Повидался со старыми знакомыми, пообщался вживую с сообществом Yii.

    Порадовали отличные задачки, раздаваемые в холле. Особенно задача написать функцию, которая по координатам трёх точек считает сумму углов треугольника, ими образованного.

    После конференции съездили в гости в офис Badoo, где был вероломно разграблен корпоративный холодильник со вкусняшками. Badoo... спасибо! У вас хорошо.

    Спасибо организаторам конференции и её участникам. Всё прошло прекрасно!

    А после были два дня хакатона по Yii. О них я тоже писал.

    7 комментариев
  10. Хакатон по Yii Framework в TACC, отчёт

    25 июня

    Оформил отчёт о хакатоне по Yii, который прошёл в ТАСС 18 и 19 июня. Всё прошло как нельзя лучше несмотря на то, что особых приготовлений с моей стороны не было — был в отпуске. ТАСС — молодцы. Если подготовить заранее чёткий план работ — будет ещё лучше.

    Читаем на хабре

    Комментировать