• Зачем нужны спринты в SCRUM? Как поставить цель спринта?

    @JustRoo
    Нужен кому?

    Менеджерам проектов спринты нужны для предсказуемости и планирования - чтобы знать, сколько фич команда может запилить за определённый промежуток времени.

    Команде - во-первых, для защиты беклога (в этот спринт она фокусируется на фичах А и Б и не отвлекается ни на что другое), во-вторых, для улучшения собственных результатов. Со спринтами можно говорить "раньше мы делали 12 сторипоинтов за спринт, а теперь делаем 15, мы молодцы" (я, понятно, упрощаю), без спринтов команда лишается метрик и, соответственно, возможности отлаживать процессы. Плюс внедрить рефлексию в жизнь команды без спринтов намного труднее.

    Если не удаётся поставить одну большую цель на спринт, ставьте несколько маленьких и независимых друг от друга, в чём проблема.
    Ответ написан
    1 комментарий
  • Что следует учесть, на что обратить внимание при переносе данных из старой таблицы в новую?

    @JustRoo
    Три раза проверьте все ключи - и внутренние, и внешние, чтобы ни один не потерялся при переносе. Создайте таблицу без ключей, потом ипортните данные, потом добавьте ключи. В остальном ничего страшного в этой операции нет.
    Ответ написан
  • Стоит ли смешивать шаблонизацию на уровне PHP с шаблонизацией JS?

    @JustRoo
    С Backbone никогда не работал, поэтому могу не понимать каких-то принципиальных вещей, учитывай это.

    Я в свое время пытался сделать нечто подобное, но натыкался на целый ряд граблей. Главная грабля - хранение состояний компонентов (и приведение компонентов к требуемому состоянию). Получается, что либо ты ограничен stateless-компонентами, чего не всегда достаточно, либо хранишь состояние компонента в URL'e, но тогда возникает конфликт между компонентами на одной странице и да хранят тебя боги, если ты вдруг задумаешь колдовать с этим через HistoryAPI, либо пытаешься сохранить состояние компонентов как-то еще и строишь собственный велосипед со всеми вытекающими. Вторая проблема - изоляция компонентов и, наоборот, обмен данными между ними.

    На самом деле, все зависит от того, что тебе нужно от компонентов. Чем меньше в них будет логики, тем более реализуема эта схема.
    Ответ написан
    Комментировать
  • Как сделать "модульную" cms?

    @JustRoo
    На уровне проектирования собственной CMS, тем более модульной, уже требуется переходить с банального "инклюдим файлы из папочки с модулями" на что-то посерьёзнее, а это требует и хорошего понимания самого PHP, и хорошего понимания ООП в целом: паттерны, инкапсуляция, наследование, полиморфизм, корректное использование замыканий и так далее. Лично я вижу два возможных пути развития в этом направлении:
    1) От практики к теории, то есть найти какой-то популярный фреймворк, расковырять его, посмотреть, как он устроен, и разобраться/спросить, почему он устроен именно так, а не иначе;
    2) От теории к практике: почитать про программную архитектуру (хотя бы книжку "банды четырёх" про паттерны и какие-то базовые вещи из Фаулера), продумать архитектуру своей CMS и начать думать, как это правильно закодить.

    Единственно правильного ответа на вопрос "как организовать модульность" не существует, есть разные подходы со своими плюсами и минусами. В качестве самого базового можно рассматривать паттерн Наблюдатель (в php традиционно реализуется через SplObserver, а одна из самых популярных его реализаций - система Event Dispatcher из Symfony). Про разные способы его воплощения в коде можно почитать вот здесь.
    Ответ написан
    Комментировать
  • Почему происходит закрытие websocket-соединений с кодом 1006?

    @JustRoo Автор вопроса
    Оказалось, это фича, а не баг. В коде (websocket.c):

    if (cmd_is_subscribe(cmd)) {
    r->keep_alive = 1;
    }

    Изменение этого параметра решило часть проблем.
    Ответ написан