<rmcreative>

RSS
  1. Yii2 дайджест новостей разработки #6 Март'14

    5 марта 2014

    Евгений Кузьминов выпустил дайджест новостей разработки Yii2. Как можно понять из «#6 Март'14», выпуск совсем не первый. Написан качественно и рекомендуется всем, кто интересуется Yii2.

    Читаем

    К сожалению, сейчас у разработчиков фреймворка практически не остаётся времени на какое-либо освещение разработки Yii2 и я очень рад, что Евгений продолжает делать это за нас. Спасибо!

    8 комментариев
  2. cebe/markdown

    24 февраля 2014

    Похоже, время, когда единственным нормальным парсером markdown на PHP был php Markdown Extra, прошло. Появилось довольно много библиотек. Впрочем, у них либо было плохо со скоростью, либо с расширяемостью, что очень плохо, учитывая большое количество диалектов разметки.

    В процессе выбора нового парсера для Yii 2.0 (в 1.1 использовался Markdown Extra) @cebe, несмотря на наличие других решений, решил написать свою библиотеку. И не зря.

    В итоге получилась расширяемая, оттестированная и самая быстрая библиотека для конвертации markdown в HTML. К тому же, использование её в Yii 2.0 гарантирует её дальнейшую поддержку на годы вперёд.

    Пробуем, пользуемся, шлём pull-request-ы

    6 комментариев
  3. Yii2: вложенные транзакции

    16 февраля 2014

    Qiang добавил поддержку вложенных транзакций через savepoint-ы:

    // верхняя транзакция
    $transaction1 = $connection->beginTransaction();
    try {
        $connection->createCommand($sql1)->execute();
     
        // внутренняя транзакция
        $transaction2 = $connection->beginTransaction();
        try {
            $connection->createCommand($sql2)->execute();
            $transaction2->commit();
        } catch (Exception $e) {
            $transaction2->rollBack();
        }
     
        $transaction1->commit();
    } catch (Exception $e) {
        $transaction1->rollBack();
    }
    17 комментариев
  4. Yii2: batch

    15 февраля 2014

    При работе с большим количеством данных важно не использовать слишком много памяти. Сегодня Yii2 обзавёлся решением. Работает за раз не со всеми данными, а частями:

    use yii\db\Query;
     
    $query = (new Query)
        ->from('tbl_user')
        ->orderBy('id');
     
     
    foreach ($query->each() as $user) {
        // $user — одна строка из tbl_user
    }
     
    foreach ($query->batch(10) as $users) {
        // $users — массив из 10 строк
    }

    То же работает с Active Record:

    foreach (Customer::find()->batch() as $customers) {
        // $customers — массив из 10 или менее объектов Customer
    }
    26 комментариев
  5. Ускоряемся в вёрстке, вебинар Юрия Артюха

    12 февраля 2014

    1 марта с 11:00 по 12:30 по Киевскому времени в формате вебинара можно будет послушать Юрия «akella» Артюха. Одного из самых опытных верстальщиков и автора cssing.org.ua. Известен он своими статьями и проектами, над которыми работал. Прежде всего kremlin.ru, subscribe.ru, sports.ru, ukr.net, zn.ua, delo.ua и pravda.com.ua.

    Рассказ будет про нешаблонную вёрстку в сжатые сроки и её автоматизацию.

    План:

    • Оптимизируем компьютер.
    • Выжимаем всё из текстового редактора.
    • Фотошоп, или не фотошоп.
    • Автоматизируем генерацию CSS и HTML.
    • Как назвать тот элемент, название которого вы до сих пор не придумали, или ускоряем мозг.

    Стоимость участия на данный момент 240 грн (30$).

    Регистрируемся

    Промо-код на скидку 10%: RMCREATIVE_WEBINAR.

    6 комментариев
  6. Yii2 minimal

    2 февраля 2014

    Собрал ещё один шаблон для приложения Yii2. Сделан на основе basic, отличается от него минимально возможным количеством зависимостей:

    • Без bootstrap. Вместо него свой CSS, который подключается без использования asset-ов.
    • Без mailer и страницы контактов.
    • Без тестов и инструментов тестирования.
    • Без Gii и debug.

    https://github.com/samdark/yii2-minimal

    Данный шаблон рекомендуется тем, кто не любит boostrap и всё хочет делать сам. Если же это не про вас, лучше воспользоваться официальными basic или advanced.

    16 комментариев
  7. Верстаем код с номерами строк

    27 января 2014

    Задачка оказалась не совсем тривиальной. Надо учесть следующее:

    1. Номера могут начинаться с какого угодно числа, могут разрываться, могут быть не числами (например, ... для обозначения того, что часть кода не приводится).
    2. Номера не должны копироваться.
    3. Длинные строки должны переноситься.

    Решается так:

    <table class="code">
        <tr>
            <th data-line-number="1"></th>
            <td>public static function autoload($className)</td>
        </tr>
        <tr>
            <th data-line-number="2"></th>
            <td>{</td>
        </tr>
    .code th:before {
       content: attr(data-line-number);
    }

    Важный момент тут использование data-attributes и псевдо-селектора :before. Первое позволяет расставить номера на стороне сервера, второе — вставить их в ячейку. При этом они не выделяются и не копируются.

    Живой пример

    13 комментариев
  8. Yii2: PSR-4

    12 января 2014

    Yii2 перешёл с PSR-0 на недавно принятый PSR-4, благодаря чему из загрузчика классов удалось выкинуть кучу кода, теоретически сделав его быстрее (не замеряли). Также немного уменьшилась вложенность директорий официальных пакетов, что, хоть и не имеет большого значения, делает структуру чуть более простой.

    Если вы уже использовали Yii2 через Composer:

    1. Выполнить composer self-update.
    2. Правим пути в index.php, index-test.php и yii. Там нужно убрать один уровень /../.
    3. Удаляем всё кроме .gitignore из vendor и composer.lock, делаем заново composer install --prefer-dist.

    Ещё одна приятная штука, расширения теперь можно делать по-человечески, складывая классы прямо в корневую директорию репозитория.

    17 комментариев
  9. Yii2: JOIN вернулся

    8 января 2014

    В Active Record Yii2 вернулся JOIN. Внутри всё значительно проще, чем было в Yii 1.1, но возможностей сильно больше.

    Сразу скажу, что поддержка noSQL никуда не делась. Более того, можно в одном «запросе» выбрать JOIN-ом из нескольких SQL-таблиц, а часть связанных данных забрать, например, из MongoDB.

    Отличный пример привёл ORey на англоязычном форуме:

    // Выбираем MyModel с relation1 и relation2.
    // Все три забираем запросом с JOIN.
    $query = MyModel::find()
        ->joinWith(['relation1', 'relation2']);
     
    $countQuery = clone $query;
    $pages = new Pagination(['totalCount' => $countQuery->count(), 'pageSize' => 15]);
     
    $items = $query
        ->orderBy($sort->orders)
        ->offset($pages->offset)
        ->limit($pages->limit)
        // Забираем дополнительно relation3 и relation4.
        // Фильтровать по ним нам не нужно, так что будут
        // запросы вида WHERE ID IN (1,2,3,4) или аналоги
        // для noSQL.
        ->with(['relation3', 'relation4'])
        ->all();

    Официальная документация на тему

    25 комментариев
  10. Уменьшаем yii2-basic

    7 января 2014

    В почту прилетел вопрос «какого такого yii2-basic весит 180 мегабайт». Вопрос хороший. Разберём и попробуем разобраться, что же с этим всем делать, если размер критичен.

    Итак, 155 мегабайт занимают данные git, которые забираются при установке из composer без флага --prefer-dist (добавил его в readme). Осталось 25 мегабайт, что тоже немало.

    Из них:

    Yii + обязательные зависимости 4,9 мб
    debug-панель и gii 235 кб
    Twitter Bootstrap 4,5 мб
    Swiftmailer 6,2 мб
    Codeception и зависимости 8,6 мб

    Если нам не нужны какие-то пакеты, правим composer.json и удаляем оттуда ненужные нам пакеты (секции require и require-dev). Удаляем composer.lock и запускаем composer install --prefer-dist.

    Например, если нам не интересно автоматизированное тестирование, путём удаления из зависимостей Codeception получаем 16 мегабайт вместе с зависимостями и самим basic-шаблоном. При этом приложение остаётся полностью рабочим.

    Если в приложении не нужна работа с почтой и Twitter Bootstrap получим 5,3 мегабайта.

    UPD: доступен минимальный шаблон приложения без тяжёлых компонентов.

    4 комментария