<rmcreative>

RSS
  1. Flexbox froggy

    7 февраля

    Попалась отличная обучалка позиционированию элементов методом CSS Flexbox в виде детской игры по перемещению лягушек на листики. Метод отлично поддерживается новыми браузерами и решает большинство типичных проблем вёрстки очень легко.

    Учимся

    4 комментария
  2. JavaScript, задачка Trello

    3 февраля

    Как-то в Trello решили нанять фронтендщика и натвитили base64-urlencode строчку, которая при раскодировании вела на страницу с прекрасной задачкой. Задачку, как и страницу, похоже, уже выпилили, но у меня сохранилась.

    Write code to find a 7 letter string of characters that contains only letters from
    acdegilmnoprstuw
    such that the hash(the_string) is
    675202166929
    if hash is defined by the following pseudo-code:
    Int64 hash (String s) {
        Int64 h = 7
        String letters = "acdegilmnoprstuw"
        for(Int32 i = 0; i < s.length; i++) {
            h = (h * 37 + letters.indexOf(s[i]))
        }
        return h
    }
    For example, if we were trying to find the 7 letter string where hash(the_string) was 680131659347, the answer would be "leepadg".
    

    Ответ надо было прислать в subject письма HR-у. Первых сколько-то человек получали возможность пообщаться.

    Как по мне, поход просто замечательный.

    3 комментария
  3. Случайные байты, числа и UUID в PHP

    31 января

    Tom Worster, специалист по безопасности, помогающий поддерживать её в Yii на отличном уровне, поделился решениями для чистого PHP. Решения отличаются краткостью и отсутствием абстракции, что позволяет легко их проверить и избежать неприятных побочных эффектов.

    Пользуемся

    Комментировать
  4. Не стоит уходить по-английски

    23 января

    Недавно состоялся у меня диалог со знакомым разработчиком. Он спрашивал, как просить зарплату и обсуждение дошло до того, что, возможно, её не повысят и ему придётся найти другое место и уйти. Я посоветовал заранее сообщить работодателю об этом, на что получил удивлённо-возмущённое «Зачем? Ведь мне начнут искать замену!», что уже удивило меня. В очередной раз пришлось напомнить себе, что не все пытаются понять собеседника и оценить последствия решений как для одной, так и для другой стороны. Давайте попробуем разобраться в за и против...

    Читаем

    23 комментария
  5. Yii 1.1.17

    13 января

    Вышла последняя версия ветки 1.1 с улучшениями.

    • Совместимость с PHP 7.
    • CHttpRequest научился парсить JSON в запросах с типом application/json.
    • Реализован StatePersister, работающий с базой данных.
    • Автозагрузчик теперь не ругается на несуществующие классы в пространствах имён, что позволяет отработать другим загрузчикам.

    Анонс читайте на хабре.

    9 комментариев
  6. Аддоны для CodeMirror

    6 января

    Несколько дней назад написал пару аддонов для CodeMirror — отличного настраиваемого редактора текста и кода для веб. Идеи возникли в процессе написания нового yiiframework.com.

    codemirror-buttons добавляет панельку с кнопками. Какие это кнопки, что делают, а также горячие клавиши настраивается через простой конфиг.

    codemirror-autosuggest вызывает окошко с подсказкой вариантов слова сразу после того, как напечатан определённый символ.

    Вместе получается примерно вот так. Попробуйте понажимать на кнопки, использовать CTRL + B и напечатать @.

    Несмотря на то, что API CodeMirror очень мощный и, в принципе, есть документация, писать аддоны под него не прочитав и не осознав весь его код практически невозможно.

    6 комментариев
  7. Эффект второго фреймворка

    3 января

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

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

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

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

    28 комментариев
  8. 2015

    30 декабря 2015

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

    Читаем

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

    29 декабря 2015

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

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

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

    24 декабря 2015

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

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

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

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

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

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