Что лучший подход должен переместить CGI в Платформу?

Итак, оказалось, что Gmail только что вернул первоначальную оценку. Пытаясь воспроизвести его сейчас, он показывает знакомое «о результатах X», так что, вероятно, я упустил это из виду. При переходе по другим (более ранним) электронным письмам оценка увеличивалась. В итоге конечное число результатов превысило 200, и оно оказалось выше (как и ожидалось) для поиска, в котором было указано «ИЛИ».

Одна проблема, на мой взгляд, состоит в том, что оба числа были приблизительными оценками. Я действительно не понимаю, почему оценка для подмножества будет ниже, чем оценка для объединения. Но это, вероятно, связано со сложными внутренностями алгоритма поиска. Я также думаю, что приблизительные оценки должны выглядеть приблизительными (например, 100 или 120 вместо 119 и 121). Но в основном я бы сказал, что извлеченные уроки, я буду уделять больше внимания тому, является ли результат приблизительным в будущем.

7
задан VP. 29 September 2008 в 09:10
поделиться

5 ответов

Тесты записи сначала (например, с Test::WWW::Mechanize). Затем при изменении вещей, Вы всегда знаете, повреждается ли что-то, и чем случается так что повреждения.

Затем извлеките HTML в шаблоны и наиболее часто используемые нижние индексы в модули. После этого это - кусок пирога для переключения на платформу.

В целом пойдите шаг за шагом так, чтобы у Вас всегда было рабочее приложение.

10
ответ дан 6 December 2019 в 07:53
поделиться

В этом виде ситуации, переписывая с нуля в основном, старый код полезен для A) тестирования и B) деталей дизайна. Идеально Вы сделали бы ряд тестов для всей основной функциональности, которую Вы хотите копировать, или по крайней мере тестирует тот синтаксический анализ страницы конечного результата, таким образом, Вы видите, что новый код возвращает ту же информацию для тех же исходных данных.

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

Одна вещь не забыть делать сначала, узнайте, сделал ли кто-либо что-то подобным в платформе, Вы используете. Вы могли сохранить себя МНОГО времени и денег.

3
ответ дан 6 December 2019 в 07:53
поделиться

Высвободите HTML из логики обработки в сценарии CGI. Определите весь код, который влияет на вывод HTML, поскольку это кандидаты на становление переменными шаблона. Разделите это на файл HTML с определенными частями, отмеченными с переменными шаблона. В конечном счете Вы сможете осуществить рефакторинг страницу, таким образом, что вся обработка сделана в начале кода и шаблона HTML, просто представленного на рассмотрение в конце всей обработки.

4
ответ дан 6 December 2019 в 07:53
поделиться

Одно из предположений, что платформы делают, - то, что URL отображаются на код. Например, в платформе Вы будете часто видеть следующее:

http://app.com/docs/list
http://app.com/docs/view/123

Обычно, хотя старые сценарии CGI не работают как этот, у Вас, более вероятно, будет что-то как:

http://app.com/docs.cgi?action=view&id=123

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

Также платформы оказывают поддержку для своего рода ORM (возразите реляционному картопостроителю), который абстрагирует вызовы базы данных и позволяет Вам только иметь дело с объектами. Для Catalyst это обычно DBIx::Class. Необходимо оценить, какова стоимость переключения на это будет.

Вы, вероятно, найдете, что хотите сделать, полное переписывает со старым кодом как базовая платформа. Это может быть намного меньшим количеством работы, чем Вы ожидаете. Однако начните с нескольких игрушечных сайтов получать ощущение того, какой бы ни framework/orm/template Вы решаете пойти с.

3
ответ дан 6 December 2019 в 07:53
поделиться

Вот то, как я сделал это с помощью Python вместо Perl, но это не должно иметь значения:

  1. Выделенный HTML и код в отличные файлы. Я использовал движок шаблонов для этого.
  2. Эмпирические функции из кода, который представил шаблон с рядом параметров.
  3. Организованный функции (который я назвал представлениями, вдохновленными Django) разумным способом. (Администраторские представления, Пользовательские представления, и т.д.), представления все следуют тому же соглашению о вызовах!
  4. Пересмотренный база данных и запрос наполняют так, чтобы представления только содержали бы представление определенный код (чтение: Обработка ДОБИРАЕТСЯ, запросы POST, и т.д. но ничто низкий уровень!). Положенный в большой степени на существующие библиотеки для этого.

Я здесь в данный момент.:-) Следующий очевидный шаг, конечно:

  • Запишите диспетчеру, который отображает URL на Ваши представления. Это также приведет к более хорошим URL и более хорошим 404-и обработке ошибок, конечно.
3
ответ дан 6 December 2019 в 07:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: