<rmcreative>

RSS
  1. DevConf 2011, впечатления

    6 июня 2011

    Вчера вернулся с DevConf, где читал доклад про Yii и процесс его разработки. В общем доклад был похож на одноимённый с CodeFest, но включал себя багфиксы и раскрывал мысль несколько лучше. На вопрос «во что может превратиться Yii, если его разработчики станут компанией» я чётко ответил «в Битрикс», чем, сдаётся мне, поверг окружающих в лёгкий в шок. На самом деле оговорился :) Вопросы были, кстати, очень хорошие и правильные. Спасибо задававшим их людям.

    Читаем

    18 комментариев
  2. Рекурсивные анонимные функции PHP

    1 июня 2011

    // считаем факториал
    $fact = function($n) use (&$fact)
    {
        if($n==1)
            return 1;
     
        return $fact($n-1)*$n;
    };
    echo $fact(5); // =120
    26 комментариев
  3. jQuery Fundamentals

    29 мая 2011

    Хороший последовательный материал на английском для тех, кто хочет изучить jQuery. Описаны основы JavaScript, основы jQuery, ядро, работа с событиями, анимация, AJAX, плагины, оптимизация производительности, организация кода в больших проектах и создание своих событий.

    Читаем

    1 комментарий
  4. Google закрыл некоторые API

    29 мая 2011

    На Google I/O были анонсированы новые API, однако вскоре было объявлено и о закрытии некоторых старых API:

    Также пойдут под нож, хоть и неизвестно пока когда, Code Search API, Diacritize API, Feedburner APIs, Finance API, Power Meter API, Sidewiki API, Wave API.

    Из всего этого можно сделать вывод, что какое угодно API может неожиданно накрыться медным тазом и основывать на нём критически важные части приложения, мягко говоря, не стоит.

    6 комментариев
  5. Импорт больших SQL-дампов через PHP

    27 мая 2011

    Основная проблема при импорте большого SQL-дампа — нехватка памяти при чтении всего дампа. Решение очевидно: грузить в память только то, что нужно в данный момент.

    $f = @fopen("path/to/dump.sql", "r");
    if($f)
    {
        $q = '';
     
        while(!feof($f))
        {
            // читаем построчно в буфер $q      
            $q .= fgets($f);
     
            // пока не упрёмся в ;
            if(substr(rtrim($q), -1) == ';')
            {
                // выполяем запрос
                execute_sql($q);
     
                // обнуляем буфер
                $q = '';
            }
        }
    }
    20 комментариев
  6. Свои классы для правил роутера Yii

    24 мая 2011

    В следующей версии Yii появится возможность использовать свой класс для конкретного правила роутера:

    array(
      // стандартное правило CUrlRule
      '<action:(login|logout)>' => 'site/<action>',
     
      // свой класс
      array(
        'class' => 'application.components.MyUrlRule',
        'connectionID' => 'db',
      ),
    )

    Это позволит, например, с лёгкостью реализовать такую штуку, как наличие потенциально конфликтующих URL:

    /about
    /contact
    /my-cool-blog-post
    /my-cool-static-page
    

    Код уже в транке, если есть желание или необходимость — можете опробовать. Замечания и предложения приветствуются.

    12 комментариев
  7. Толстые контроллеры не так уж ужасны

    22 мая 2011

    Jani Hartikainen, разработчик, которого я всегда читаю с большим удовольствием, написал заметку о толстых контроллерах. Обычно преобладает академическая точка зрения, что контроллер должен быть тонким, т.е. вся логика должна быть вынесена в модели и сервисный слой. Как и почти всё академическое, идеальный тонкий контроллер — это крайность, которая не всегда нужна. В пользу толстого контроллера можно привести следующие аргументы:

    • Сервисный слой — дополнительная сложность. Чтобы работать с ним, нужно сначала посмотреть, что там и как, то есть увеличивается порог, который нужно преодолеть новым членам команды.
    • Проблема, которую дополнительные слои точно не могут решить — наличие слишком большого числа дополнительных слоёв.

    Слишком толстый контроллер — другая крайность. Выносить функционал в сервисный слой определённо стоит если:

    • Вы начинаете копировать свой же код.
    • Вы в точности знаете, что вам нужно и это что-то точно будет использоваться много раз.
    • Вы используете разработку через тестирование и хотите максимального покрытия кода.
    18 комментариев
  8. Как скомпилить libevent для PHP под Windows

    22 мая 2011

    Компилировать расширения PHP под Windows нет так уж и просто. Но задача вполне выполнимая.

    Читаем

    6 комментариев
  9. PHP, построение URL

    20 мая 2011

    При работе с разными API (и не только) требуется построить URL. На входе имеем массив параметров имя-значение, на выходе получаем URL. Решение очень простое:

    function getUrl($url, $params = array())
    {
        return $url.'&'.http_build_query($params);
    }
     
    // используем так
    echo getUrl('http://open.mapquestapi.com/nominatim/v1/search?format=json', array('q' => 'Olympiaturm, Spiridon-Louis-Ring 7, München 80809'));

    UPD: http_build_url.

    13 комментариев
  10. Короткий echo в PHP 5.4

    19 мая 2011

    Похоже, в 5.4 и последующих версиях PHP собираются включить короткий echo по умолчанию и сделать его независимым от short_tags. Меня лично данное известие радует

    <?=$username?>

    выглядит гораздо приятнее, чем

    <?php echo $username?>

    Единственное, что пока останавливает от повсеместного использования более короткого синтаксиса — необходимость писать продукты под дефолтные конфиги PHP. Хотя, например, в коде этого блога как раз используется короткий echo.

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