AppleScript походит на очевидный выбор. Вот быстрый запуск в нем (с некоторыми примечаниями по приложениям, которые не манипулировали в минимальном тестировании, которое я сделал) (примечание: замените reportEvent чем-то более соответствующим...):
my TestApp("Address Book")
#my testApp("Aperture") # Aperture doesn't seem to understand activate -- WTF?
#my testApp("Automator") # Automator brings up a sheet when launched -- not sure how to dismiss
my TestApp("Calculator")
my TestApp("Chess")
my TestApp("Dictionary")
# etc...
my reportEvent("OS", "FinishedTest")
on TestApp(appName)
tell application appName to activate
delay 1
tell application "System Events" to count (application processes whose name is appName)
if result is 0 then
my reportEvent(appName, "QuitUnexpectedly")
end if
tell application appName to quit
delay 1
tell application "System Events" to count (application processes whose name is appName)
if result is not 0 then
my reportEvent(appName, "FailedToQuit")
end if
end TestApp
on reportEvent(appName, eventDesc)
do shell script "curl 'http://server/eventtracker.php?app=" & sanitizeSpaces(appName) & "&event=" & sanitizeSpaces(eventDesc) & "'"
end reportEvent
on sanitizeSpaces(dangerousString)
set AppleScript's text item delimiters to " "
set safeString to text items of dangerousString
set AppleScript's text item delimiters to "_"
return safeString as Unicode text
end sanitizeSpaces
... сохраните это как Приложение из Редактора AppleScript (таким образом, оно будет работать при открытии) затем добавьте его к тестовому списку Объектов Входа в систему учетной записи (область System Preferences-> Accounts-> вкладка Login Items).
Я задержу проблему того, чтобы заставлять сетевую учетную запись автовойти в систему при начальной загрузке. Я подозреваю, что существует not-too-hard способ сделать это (возможно, через управляемые предпочтения или просто заглядывание соответствующим файлам настроек "рукой" - т.е. сценарий поствосстановления), но у меня нет полезной тестовой установки удобной в данный момент.
Мое исходное предположение здесь - то, что Вы настроили обработчик через рычаг PerlHeaderParserHandler
которому Вам вручили $r
, или объект запроса.
Из документации для AssignUserId (параметр Вы хотите динамично настроить) контекст конфигурации должен быть виртуальным хостом. В предположении я подозревал бы, что это означает, что необходимо настроить на основе на сервер, а не на основе на запрос.
Посмотрите $s->add_config
документация в противоположность $r->add_config
.
Зависьте от обработки директив, возможно, что к тому времени, когда рычаг запроса назвали, обработка AssignUserId уже произошла, в этом случае нет много, можно сделать помимо статичного конфигурирования каждого субдомена как виртуальный сервер..
обновление 1: конечно, при попытке использовать $s->add_config
для каждого запроса Вы подвергаетесь опасности наличия громоздкой конфигурации сервера в памяти с той же директивой, повторенной много раз. Создание обновления конфигурации сервера каждый непрактичный запрос.
Возможно, все еще возможно сделать это с $r->add_config()
, замечание в документации, что "Конфигурационные директивы обрабатываются как будто данный в <Местоположение> блок". Вы попробовали тест не-Perl размещения параметра AssignUserId в <Местоположение> блок?
$r
) выделяется в начале обработки каждого запроса веб-страницы, затем выпустил после обработки того запроса веб-страницы. Таким образом, можно добавить так, как Вам нравится к нему, потому что та память будет освобождена после запроса. Серверный объект ($s
), однако, выделяется, когда серверный процесс запускает, и doesn' t выпущен, пока процесс не умирает. Таким образом, Вы хотите добавить к той конфигурации однажды, не каждый запрос . – PP. 23 November 2009 в 10:01AssignUserId
, не может быть помещен в < Location> директива затем Вы не можете использовать$r->add_config()
согласно документации. – PP. 23 November 2009 в 10:03