<rmcreative>

RSS
  1. Эффект второго фреймворка

    3 января 2016

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

    Проект, естественно, рано или поздно заваливается. На чём программист базирует свой следующий проект? Правильно. На чём угодно, лишь бы не на X.

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

    Обвинив во всём фреймворк X, программист выбирает Y. В этот раз всё идёт лучше. Но не потому, что фреймворк настолько хорош и решил за разработчика вопросы архитектуры, а потому что разработчик достаточно умён, чтобы не наступать второй раз на те же грабли.

    29 комментариев
  2. 2015

    30 декабря 2015

    Кончается год под номером 2015. Год получится насыщенный. Как на свершения, так и на статьи. Глобальные события упоминать не будем. Напишу про программистское и личное.

    Читаем

    11 комментариев
  3. Русский перевод PHP стандартов FIG

    29 декабря 2015

    PHP FIG решили убить переводы PSR и сделали это. Я не мог спокойно наблюдать за тем, как пропадает столько труда, поэтому сделал форк с русским переводом:

    https://github.com/samdark/fig-standards-ru

    4 комментария
  4. Параметры и аргументы

    24 декабря 2015

    Заметил, что многие путают.

    Параметры — это то, что ожидает метод. Аргументы — это то, что метод получает.

    Параметры объявляют:

    class Hello
    {
        public function say($name)
        {
            echo "Hello, $name!";
        }
    }

    Аргументы передают:

    $hello = new Hello();
    $hello->say('Alex');
    5 комментариев
  5. wnmp-dev 1.1.0

    16 декабря 2015

    Обновил набор для PHP-разработки под Windows. Удалось найти нормальный менеджер процессов без зависимостей и закрыть им проблему параллельной обработки нескольких скриптов.

    Написал его Пичулин Дмитрий уже давно, но выложил в OpenSource недавно. Утилита проверена им в продакшне. Менеджер стартует заданное количество php-cgi на одном порту. В случае умирания одного из php-cgi стартует новый. Кода там очень мало и им, кстати, заинтересовались в команде PHP for Windows. Надеюсь, PHP научится так делать из коробки.

    Кроме этого, поправил конфиги nginx и немного причесал батники.

    https://github.com/samdark/wnmp-dev

    9 комментариев
  6. Запустили тестовый сервер для нового yiiframework.com

    13 декабря 2015

    Carsten запустил код нового yiiframework.com на отдельном домене yiiframework.domain-na.me.

    Дизайн не финальный, в итоге решили делать по отличным макетам Сергея Хилькова, но ещё не переделали. Кстати, он до этого сделал макеты для yiiframework.ru.

    16 комментариев
  7. Выложил исходники intl.rmcreative.ru

    12 декабря 2015

    Выложил на GitHub исходники intl.rmcreative.ru, который я написал после копания во внутренностях intl, ICU и CLDR.

    https://github.com/samdark/intl-icu-data-tables

    3 комментария
  8. Yii 2.0 AR сделал все PHP ORM в независимом тесте

    6 декабря 2015

    Carsten из команды Yii добавил в тесты kenjis AR Yii 1.1 и Yii 2.0. Получились вот такие результаты. Yii 2.0 рвёт в клочья всех, кроме Phalcon.

    Сюрпризом это не стало, но, всё же, приятно.

    26 комментариев
  9. PHP 7.0.0

    1 декабря 2015

    Несколько часов назад Anatol Belski, релиз менеджер PHP, тегнул стабильный релиз PHP 7.0.0. Это значит, что сегодня-завтра мы увидим официальный анонс на php.net. Наконец, можно будет пользоваться новыми прекрасными возможностями: строгой типизацией, оператором ??, анонимными классами, безопасным рандомом и многим другим. Как приличный бонус все перешедшие получат значительный прирост производительности.

    Остальное на хабре

    Кстати, результаты опроса там очень и очень радуют.

    UPD: официальный анонс.

    5 комментариев
  10. Составные части хеш-строки bcrypt

    26 ноября 2015

    Хороший способ хранения данных для аутентификации — хеш-строки bcrypt. В PHP это реализуется при помощи crypt с алгоритмом blowfish. В более поздних версиях PHP — при помощи password_hash. В Yii для этого есть Security::generatePaswordHash(). Выглядит строка на выходе вот так:

    $2y$13$YUUgrko03UmNU/fe6gNcO.Hka4lrdRlkq0iJ5d4bv4fK.sKS.6jXu

    Длина в случае пароля всегда 60 символов.

    • 2y - версия алгоритма bcrypt. Мы используем blowfish, так что в новых версиях PHP должна быть всегда 2y.
    • 13 - cost. Стоимость вычислений. 2^13 итераций функции формирования ключа.
    • Оставшееся — конкатенированные соль и хеш, закодированные через base64 с немного нестандартным набором символов. Первые 22 символа — 16 байт соли. Оставшееся — хеш.

    При сравнении пароля bcrypt достаёт версию алгоритма, cost и соль из хеш-строки сохранённого пароля. Далее, используя их, вычисляет хеш нового пароля и сравнивает с сохранённым хешем.

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