Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тестирование новых фич сайта "на лету" 
:(
    Опции темы
ksnk
Дата 7.2.2015, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Хотелось бы узнать, кто и как выворачивается в ситуации, когда заказчику нужна некая фича на сайте, а организовать "песочницу" по тем или иным причинам нельзя? При этом сайт нежелательно останавливать...

Вот, например, одна из схем. 
При указании в урл параметра `&test=flag1,flag2,flag3` формируется кука с именем test и содержимым `flag1,flag2,flag3`. После формирования куки происходит переход по адресу, с вычищеным от этого параметра значением URI.
При наличии этой куки, программист может, например, использовать функцию
Код

  if(is_testing('flag1')) {
    ...
  }

чтобы менять логику приложения. Как написать такую функцию - вопрос достаточно тривиальный...



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Aliance
Дата 9.2.2015, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



На моем прошлом месте работы (крупный известный сайт в РУ сегменте) мы делали примерно как ты сказал (с использованием get-параметров, но без кук) - в Url подставлялся некий ключ, далее имелось функция, проверяющая "офисный ли это ИПшник, либо userId из списка IDшников разработчиков (на случай, если из дома)" и тогда делаем, что нам нужно. В коде это выглядело примерно так:

Код

if ((isOurIP() || $User->isAdmin()) && $this->get('testFlag')) {
    // ...
}


На текущем же месте работы (другой highload), мы делаем чуть проще - проверяем, грубо говоря, по пользователю, из списка редакторов, внесенных вручную в админку:
Код

if ($User->isEditor()) {
   // ...
}


либо, через систему таргетингов (удобно для тестеров, когда не все их пользователи - редактора):
Код

if ($UserTargeting->isSuitable($User, 'myTestTargeting')) {
   // ...
}


А в админке таргетингов нужно создать таргетинг с именем myTestTargeting, например по тому же перечню IDшников, либо другому списку идентификаторов.
PM MAIL WWW ICQ Skype   Вверх
ksnk
Дата 9.2.2015, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Aliance, кука удобна тем, что внешне, для пользователя ничего не меняется, ни адреса на странице, ни функционал. Тестирование более полное... Так можно отладить не одну страницу, а целый плагин, с ajax'ом и формами. Параметры в адресной строке нужно будет либо передавать по генерируемым страницей ссылкам, либо ограничится отладкой одной страницы.

С специальнообученными пользователями - интересно, надо будет подумать. Навскидку понятно, что если плагин должен работать и без регистрации, возникнут проблемы с тестированием, оно будет неполным. 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Aliance
Дата 9.2.2015, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Для работы некого функционала "для своих", но не имея userId (например, страница для незалогиненных) можно ограничиться методом isOurIP() (воспринимай его как абстрактный поток мыслей, как реализовать - дело твое, можно по ИПу офиса, можно по куке).

По в любом случае проверять что-то только по куке - точно не секурно.
PM MAIL WWW ICQ Skype   Вверх
ksnk
Дата 9.2.2015, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Aliance, а что за проблемы с куками? Ну пусть я отлаживал сервис, проект заглох и я  благополучно забыл его на чужом сайте. Это само по себе косяк, оставить отладочные вставки, ну да ладно... Если плагин не содержит в себе устройство для взлома сайта - его внезапное появление для пытливого пользователя, вроде как, безопасно. 

Фильтр по IP несколько затрудняет демонстрацию фичи заказчику. Придется сначала выяснять этот самый IP... Хотя, в принципе, правильно.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Aliance
Дата 9.2.2015, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Я говорил о подобном функционале в целом, а не в частности - не разделяя на то, несет ли он в себе опасность или нет. И, кстати, что подразумевается под плагином? JS что ли, мы же в треде по PHP =)

Да и в целом, поделился опытом тех проектов, где я принимал участие. Но это не студии, там не было нужд делать то, что, возможно, нужно вам - возможно в вашем случае будет достаточно того, что проще и удобнее вам smile

Цитата
Фильтр по IP несколько затрудняет демонстрацию фичи заказчику.

для этого придумали стейджинговые сервера smile
PM MAIL WWW ICQ Skype   Вверх
ksnk
Дата 9.2.2015, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



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

Насчет плагинов
Задачки возникают разные и на разных платформах, разных CMS. Где-то что-то добавить/исправить - систему слежения за банерами, поиск по сайту, какие-то формы-подписки. Название  "плагин", imho, вполне подходит для задачи с неопределенным объемом работы  smile  
Тем более, что такая задачка, таким образом отлаживаемая, идеологически плагином и является - удалил флажок в куках - вот и нет его. А после отладки тот флаг можно заменить на флажок в конфигурации...
Все дело в системе определений. 



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
whatisnot
Дата 9.2.2015, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 14.12.2014

Репутация: 1
Всего: 2



Если вы пишите свое, и подключаете модуль (плагин в рамках РНР понятие резиновое), то вроде бы как рационально, чтобы модуль мог иметь режим активен/неактивен или отображается/не отображается. А что мешает добавить еще и режим "отладка"? Ну ладно бы они написаны вами "капитально и навека", но ведь и старое зачастую обновляется, и тоже возникает потребность в отладке.
Естественно, что режим отладки, в этом случае, доступен в режиме администрирования - тут и конфигурация, и опции, и "опознавание" не по временным кукам, а по входу администратора. А для пользователя этот режим тоже самое что и неактивен.   
PM MAIL   Вверх
ksnk
Дата 10.2.2015, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Чтобы не растекаться уж совсем мыслию по древу, вот пример для "посмотреть".
Код

class DBG {
    static $cookie_name='testing';

    /**
     * @param $flag
     * @return int
     * @sample if(DBG::is('test1')){ ...
     */
    static function is($flag){
        return isset($_COOKIE) &&
            isset($_COOKIE[self::$cookie_name]) &&
            preg_match('/\b'.preg_quote($flag).'\b/',$_COOKIE[self::$cookie_name]);
    }

    /**
     * setting up cookie in case user want to start debuging
     * @return bool
     * @sample if(DBG::init()) header('location: '.#clear URL from testing parameter#)
     */
    static function init(){
        if(isset($_GET) && isset($_GET[self::$cookie_name]) && !preg_match('/[^\w,\.\s]/',$_GET[self::$cookie_name])){
            if(''!=trim($_GET[self::$cookie_name]))
                setcookie(self::$cookie_name,trim($_GET[self::$cookie_name]));
            else
                setcookie(self::$cookie_name,"", time() - 3600);
            return true;
        }
        return false;
    }
}


whatisnot, меня интересует сам процесс монтажа уже "в принципе готового" модуля в работающую систему. Модуль еще требуется доработать напильником по месту, однако остальные пользователи системы не должны сильно пострадать. В идеальном случае - они не должны ощутить ничего, до момента окончания отладки. Этот класс и будет тем скотчем, на который можно "наживить" тот самый модуль и избежать, потенциально, отрицательных последствий для обычных пользователей.

Класс статический, так как одно из назначений его - гарантировать текстово-единообразный след в исходниках. Можно просто тупо поискать `DBG::` по файлам и обнаружить все "точки склейки" модуля и системы. Собственно монтаж будет начинаться с подключения класса во все возможные точки входа системы, довольно удобно - добавить его в auto_prepend_file. Окончательная вклейка модуля в систему заключается в выкидывании упоминания DBG из "точек склейки" и чистка препенда.

Это сообщение отредактировал(а) ksnk - 12.2.2015, 15:49


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
whatisnot
Дата 10.2.2015, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 14.12.2014

Репутация: 1
Всего: 2



Хотите скачать, что без некоего индивидуального флага у модуля, без кук и припарок preg_match невозможно "отключить" пользователя? Ну это же не так. Для упрощения:

У меня в системе три ресурса - А, B, C. Могу ли я через конфигурацию отключить вывод любого из этого ресурсов пользователю, а для себя сделать доступным? Могу.
Пусть и ресурсы имеют подключаемые модули. Могу ли я и их через конфигурацию также сделать недоступными для пользователя? Могу.
Если я включаю режим отладки ресурсу/модулю, вхожу как администратор и в одном браузере открыт и раздел управления, и страница ресурса, то мне и кук не требуется, меня и сессия "опознает".

Я не говорю, что вы поступаете не так, каждый волен думать так, как он думает. Просто я исхожу из того, что если уж делать систему, то лучше ее делать кофигурируемой не только для случаев "А показывать в Б", но и показывать ли А и кому. 
PM MAIL   Вверх
ksnk
Дата 10.2.2015, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



whatisnot, Мы говорим о разных вещах. Тред назван ` Тестирование новых фич сайта "на лету"`. Вероятно, нужно было назвать "монтаж".
К примеру, на некий сайт требуется поставить поиск. По каким-то причинам (самодельный CMS, неподходящий набор плагинов...) разумной системы поиска у него нет. 
Монтируемый модуль поиска имеет "точки вклейки" в систему
-- шаблон вывода header'а - туда нужно вставить вывод формы поиска,  скриптовые и стилевые изменения.
-- вывод страницы с результатами поиска - отдельные страницы в дизайне сайта
-- настройка плагина в админке  (очистка результатов, переиндексация, параметры ets...)

Изменений дофига и уследить за корректным и сразу 100% работающим кодом достаточно сложно. Ломать внешний вид сайта и обижать клиенов на время отладки нельзя.

Класс расчитан именно на это время, от начала монтажа, до окончания отладки. После этого он удаляется с сервера за ненадобностью.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
whatisnot
Дата 10.2.2015, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 14.12.2014

Репутация: 1
Всего: 2



Не знаю, видимо у нас разные понимания и понятия модуль, и что такое подкулючить модуль. В моем понимании составляющие модуля, а это html-код его, стили, клиентский сценарий (если есть) не живут сами по себе, и если их "хозяин" (серверный скрипт) не запущен, то и их нет у клиента. Кто при этом и как может что-то поломать на клиенте, я не понимаю.
PM MAIL   Вверх
ksnk
Дата 10.2.2015, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(whatisnot @  10.2.2015,  14:28 Найти цитируемый пост)
Не знаю, видимо у нас разные понимания и понятия модуль, и что такое подкулючить модуль.

Видимо, да. В моей практике регулярно повляются самодельные и native-php сайты, и `модуль`или `плагин` для них - достаточно резиновое понятие. 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
whatisnot
Дата 10.2.2015, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 14.12.2014

Репутация: 1
Всего: 2



Если ваш "самодельный" не имел модуля поиска, то как он работал без него, ничего в нем "не ломалось"? Думаю нет. Добавили модуль, кторый доступен только вам, что-то "поломалось", кто это видит, вы или все? Видимо только вы. А что видит пользователь? Прежнее. В чем беда, я не понимаю.
Я так понимаю, что это и есть ваш аргумент в пользу кук с классами. Но до меня он не доходит, ибо по логике вещей такого просто быть не может. А если моудуль не изолированный, как тот же поиск, и так или иначе затрагивает русуры страницы, если это можно сделать через конфигурацию, то и поставить всю страницу в режим отладки нет проблем - в этом режиме она будет опять таки доступна только вам. И по большому счету, как это будет сделано роли не играет, вопрос только в гибкости и удобстве.

А где там точка входа у модуля, это ну никак не должно влиять на саму суть отладки, а плодить еще и какие-то классы, которые после отладки еще и выковыривать надо... Ну коли считаете это необходимостью, заради бога.
PM MAIL   Вверх
baldina
Дата 10.2.2015, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



ksnk, у вас есть уже кука (или другой подходящий идентификатор) - сессия.
что касается выковыривания отладки, я в целом согласен с whatisnot. пусть ваша отладка живет постоянно, вы только меняете политику применения конкретного функционала ("модуля") - переводите его из тестирования в продакшн через конфигурацию.
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1173 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.