Есть ли способ ранее определить временной интервал для настройки процесса? - PullRequest
0 голосов
/ 24 марта 2010

Ужасно сформулированный вопрос ... Я знаю.

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

Позвольте мне спросить это так. Если бы кто-то попросил вас создать настраиваемое программное обеспечение, как бы вы позволили пользователю указывать временные интервалы?

UPDATE

Я ищу текстовое представление. Вообразите что-нибудь, что будет помещено в файл конфигурации.

Ответы [ 2 ]

1 голос
/ 24 марта 2010

Вот как настроен API cron Google App Engine, он немного более удобен для пользователя, чем cron:

http://code.google.com/appengine/docs/python/config/cron.html#The_Schedule_Format

Исходный код Python (и Java?) Для его реализации должен быть доступен в SDK. Не смотрел, чтобы увидеть, как легко было бы извлечь, но он должен хотя бы дать некоторые идеи.

Я думаю, что было бы возможно добавить различные вещи в формат по мере необходимости - он достаточно структурирован, чтобы быть расширяемым. Например, в настоящее время отсутствует возможность сказать «каждый час через 4 минуты после», что является обычным в UNIX cron, но на самом деле не имеет отношения к GAE, потому что, хотя, возможно, механизм может выяснить, какие минуты заняты, а какие нет, и балансировать нагрузку пользователь, конечно, не может.

Очевидно, что основной недостаток предложения чего-то, что выглядит как естественный язык для среднего пользователя, заключается в том, что он будет думать, что ваш код экстрасенсорный, и ожидает, что он также будет понимать такие вещи, как «каждую среду, кроме недели после Пасхи», или "всякий раз, когда часы меняются"; -)

1 голос
/ 24 марта 2010

Я не уверен, правильно ли я понимаю ваш вопрос. Вы просите способ ввода временных интервалов?

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

Редактировать: Ах, командная строка (или файл конфигурации).

  • Можете ли вы разобрать файл XML? В этом случае вы можете просто сериализовать временной интервал (у большинства языков есть такой класс). Использование может редактировать файл XML, обычно просто заменяя, скажем, значение части <minutes>. Десериализовать этот XML-файл, чтобы снова получить Timespan, очень просто.

  • Если вы предпочитаете ввод открытого текста или командной строки, это немного менее просто. Однако многие языки поддерживают некоторый тип Timespan.Parse (текст строки, формат строки). Вы должны посмотреть, присутствует ли эта концепция в вашей среде.

  • Во многих средах есть некоторый тип sscanf (), который анализирует входную строку. Иногда также существует формат времени.

  • Если более ранние идеи не дают решения, вы можете попытаться проанализировать дату с помощью регулярных выражений. На этом сайте и в Интернете должно быть много ресурсов по этой теме.

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

  • Если вам не хочется разбивать пользовательский ввод на строки вручную, используйте Random.NextInt (1000) и надеемся, что никто не заметит. 0: -)

...