<rmcreative>

RSS
  1. Yii, fxp и Asset packagist

    12 августа 2016

    Когда Composer ещё не стал стабильным, API его довольно часто менялось. Из за этого отваливались плагины. Одним из самых ярких примеров был постоянно ломавшийся fxp/composer-asset-plugin, используемый в Yii 2.0 и попивший немало крови. С релизом Composer проблема практически ушла, но к Yii 2.1, из за скорости установки и самой необходимости ставить плагин, было решено исследовать альтернативы. fxp, как и прежде, работает не быстро.

    Читаем

    26 комментариев
  2. Попробовал школу английского EnglishDom

    31 июля 2016

    Пару месяцев назад мне написали из школы английского EnglishDom и предложили их попробовать. Как-то давно у меня и Антона Исайкина была идея запустить подобную школу, работающую исключительно удалённо, но в процессе стало ясно, что мы это не потянем. Так вот, чтобы удовлетворить свой интерес и заодно проверить, можно ли рекомендовать учить там английский IT-шникам, я согласился.

    Читаем

    17 комментариев
  3. Yii на WebCamp 2016 в Одессе

    23 июля 2016

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

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

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

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

    22 июля 2016

    В комментариях к посту про модули Дмитрий задал вопросы про 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.

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

    18 июля 2016

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

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

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

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

    1 комментарий
  6. Yii 2.0.9

    11 июля 2016

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

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

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

    5 июля 2016

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

    Читаем

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

    5 июля 2016

    На тостере в комментариях к вопросу спросили, как получить 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 лезет за схемой в базу данных, что нам не нужно.

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

    1 июля 2016

    Выпустили официальное расширение-клиент 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' => '[email protected]'])
        ->send();
    if ($response->isOk) {
        $newUserId = $response->data['id'];
    }

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

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

    27 июня 2016

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

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

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

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

    8 комментариев