Просмотров: 6731

nnCron: планировщик на стероидах. Часть 2


Ранее мы разобрались с основами nnCron — консолью и скриптами, сегодня же, в заключительной части статьи, мы поговорим о графическом интерфейсе программы. nnCron — это нативное Windows-приложение, а значит, здесь должны быть и окна с множеством плюшевых настроек, удобных как минимум для начинающих пользователей компьютера. Ну, а для продвинутых пользователей,  я специально коснусь азов метаязыка Форт, на базе которого построен и неограниченно расширяется nnCron.

Действующие лица

Мы уже весьма подробно и педантично рассмотрели возможности по скриптованию и планированию событий в nnCron. Всё-таки для цельности картины нужно пройтись по его программным составляющим — файлам. Итак, представим действующих лиц: nncron.exe — само ядро программы, здесь сосредоточена почти вся рассмотренная ранее функциональность. Отмечу лишь наличие богатства ключей, что позволяет лихо общаться с программой из черной космической бездны командной строки. Ещё один важный момент — штатная возможность работы этого планировщика в качестве системного сервиса, что особенно оценят, думаю, суровые и бородатые админы, для которых стабильность работы и ресурсоемкость запущенных на их серверах задач часто особенно критичны. nnCron после запуска болтается свернутым значком в системном трее, всегда готовый прийти вам на помощь, а также четко отслеживая ранее поставленные в очередь задания.

Вторая составляющая комплекта — файлик tm.exe. Это — графическая оболочка, как сейчас принято выражаться — фронтенд для вышеописанного nncron.exe. Для тех, кому тяжело осваивать все обилие текстов документации с описанием богатых возможностей программы, основные её возможности теперь запросто и быстренько можно задействовать через эту симпатичную и интуитивно понятную окончатую оболочку. Кстати, у самого tm.exe, как и у любого настоящего джигита, также есть собственный набор ключей для работы с ним из командной строки, так что и тут подобрать нужные консольные ключики к трепетной душе этой программы, при большом желании на то, наверняка получится.

И последняя составная часть комплекса — nnguard.exe. Это — элемент реализации в терминологии самой программы её «непотопляемого режима». И что это значит в наши времена глобальной нестабильности? Рассказываю: поскольку nnCron призван выполнять важные (а иногда даже критические для системы и её хозяина) задачи, в нем предусмотрено специальное средство для обеспечения её повышенной «живучести».

Технически это реализовано как независимый процесс, который мониторит работу самого nnCron и который гарантированно и автоматически перезапустит nnCron в случае возникновения любой фатальной ошибки или его подвисания (попытка застраховаться от превратностей Windows и человеческой судьбы в частности). Логичный встречный вопрос: что защитит этот контролирующий процесс в случае его самоличного зависания, повреждения, затопления материка, локальных тайфунов или внезапного глобального катаклизма на нашей голубой планете к сожалению, этот вопрос создателем nnCron пока непровентилирован в должной мере. А если серьёзно, ставка делается на его просто жуткую простоту, с тайной программистской надеждой, что типа "тут-то и глючить в этих двадцати строчках кода нечему...".

Точка сборки всего: crontab

Напоследок даю наводку на самый главный файл, куда все кроновые и скриптовые инструкции, подробно рассмотренные нами ранее (доступные, напомню, в двух синтаксисах: классическом и расширенном), бережно записываются и перечисляются. Это так называемый кронтаб-файл, в котором хранятся все данные вами царские повеления и директивы к исполнению. В жизни это обычный текстовый файл, который может быть создан и/или отредактирован в любом подручном текстовом редакторе.

Количество подключенных кронтабов не ограничено, поэтому в случае масштабных автоматизационных действий против своей лени имеет смысл создать несколько разных кронтаб-файлов, чтобы тематически «разделить» запускаемые задачи: мне, например, удобно использовать кронтаб main.tab для повседневных задач, кронтаб backup.tab — для задач, связанных с резервным копированием, а кронтаб adv.tab — для всех задач, запускаемых по клавиатурным сокращениям и слежению за специальными папками и моей флешкой. По умолчанию программой создаётся и используется только один такой файл — nncron.tab.

Все многочисленные настройки программы сохраняются и изменяются либо через упомянутую выше графическую оболочку, либо по-старинке напрямик — в конфигурационном файле nncron.ini.

Также замечу, что для операций/автоматизаций с графическими оконными объектами (для получения текущих координат мыши, выяснения класса объекта, над которым находится мышь, получения информации о координатах основного и дочернего окна и т. п. деталей Win32API) вместе с программой поставляется в меру удобная бесплатная системная утилита WinSpy. А если вдруг вы программист, то я бы посоветовал вам самостоятельно обзавестись её более мощными сторонними аналогами —  комплектом из WinSpy++ и WinDozer.

Этот таинственный мистер Форт

Продолжим наше изложение с последнего озвученного мною допущения «а если вы вдруг программист». Поскольку мощь nnCron по-настоящему становится очевидной только при владении этим языком программирования, имеет смысл ну очень кратко остановиться и на нем. Фишка в том, что любая программная конструкция программы может быть как угодно «доразвита» за счет встроенной возможности интерпретировать команды языка Форт. Выходит, что вы получаете не просто законченный инструмент, а лишь мощную заготовку, которую вы можете доработать в соответствии со своими запросами (о'кей, альтернативный вариант — запросами вашего работодателя).

Итак, Форт (а точнее, его отечественный диалект SP-Forth) — это язык программирования, в котором программы записываются в постфиксной записи и в стековой нотации, при этом он поддерживает механизмы метарасширения для изменения семантики и синтаксиса языка при настройке на конкретную предметную область. Синтаксис базового уровня в Форте прост и состоит из единственного правила: «Все определения разделяются пробелами».

Определения Форта могут иметь любое сочетание символов, позволяя вам фактически строить свой, новый, язык на базе предыдущего языка (определений). Вот из этого слоеного теста и слеплен скриптовый язык-каркас для nnCron, оставляя за вами возможность долепить на его прочном фундаменте свою собственную «идеальную машину для автоматизации чего угодно» (или довольствоваться всем имеющимся). Именно поэтому я так и тянул, почти до конца статьи, со списком общих возможностей программы, потому что они… они бесконечны!

И самый простой вариант для такого расширения в nnCron — плагины. Это обычные текстовые файлы с расширением .spf, выполненные как дополнительные модули nnCron, также написанные на языке Форт, которые расширяют функциональность программы за cчет добавления собственных новых слов (операторов и инструкций). В дистрибутив nnCron включено больше десятка полезных (и не очень) плагинов, которые располагаются в подкаталоге plugins домашней директории nnCron.

В заключение, для всех начинающих метапрограммистов, очарованных магией языка Форт, я любезно приведу готовый ответ на первый ваш ещё невысказанный вопрос: как же вывести список всех Форт-слов, находящихся в словаре (читай — утробе) nnCron? Нет ничего проще: откройте Форт-консоль (для более традиционных программистов поясню, что это своего рода штатная дверь во внутренности программы, с которой вы, таким образом, имеете честь общаться, и это возможно как локально, так и удаленно - по сети) и введите туда команду WORDS. Да, чуть не забыл предупредить: приготовьтесь увидеть список, состоящий примерно из трех тысяч слов.

Для всех желающих научиться расширять nnCron: с одной стороны, предлагаю начать свой экскурс в богатый мир языка Форт с этой информативной FAQ-странички, а с другой стороны, доверительно сообщаю, что вот здесь можно скачать исходники самой программы nnCron (и в довесок традиционная плохая новость — это далеко не самая последняя её версия). Помните, Форт — очень лаконичный язык, требующий глубокого предварительного размышления и трансцендентной медитации над кодом, не загрязненной нашим суетным постиндустриальным бытием.

Для пояснения этой мысли просто процитирую первую строчку из книги «Пионеры программирования» знаменитого Чарльза Мура, начинающего главу №4 про язык Форт таким вот предложением:

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

Гибрид планировщика, автоматизатора и скриптера…

Долго идя от частного к общему, мы наконец-то вышли к перечислению основных направлений, которые эффективно решает nnCron, и вот на что он способен:

    • запускать произвольные программы (как и самого себя) как системные сервисы;
    • запускать задачи «от имени» указанных юзеров;
    • отслеживать и перезапускать просроченные задачи и напоминалки;
    • выключать или «усыплять» компьютер в заданное время, «будить» компьютер, чтобы запустить задачу;
    • отображать/скрывать/закрывать/убивать/сворачивать/разворачивать и прятать в системный трей заданные окна, добавлять в трей произвольные иконки и программы;
    • менять размер и местоположение окон, а также изменять их «прозрачность»;
    • выводить на экран и в лог-файл любые сообщения, в том числе и запросы на выполнение указанных действий;
    • работать с клипбордом, файлами и реестром;
    • эмулировать клавиатурный ввод и операции с мышкой;
    • звонить по модему и класть трубку;
    • воспроизводить аудиофайлы и «пищать» через системный динамик;
    • синхронизировать системное время;
    • присваивать процессам указанный приоритет и прерывать работу любых запущенных процессов;
    • автоматически перезапускаться после фатальных ошибок;
    • скриптовать всё остальное, неограниченно расширяя функциональность программы, на встроенном языке, метаязыке Форт, VBScript/Jscript, и всё это с поддержкой регулярных выражений;
    • nnCron способен отслеживать файлы, флаги, окна, процессы, движения мыши, время простоя компьютера, клавиатурные шорткаты, выход в онлайн/офлайн, появление диска в драйве, наличие хоста в сети (пинг), изменение удаленного ресурса по http-протоколу, количество свободного места на диске, загруженность оперативной памяти и многое-многое другое — после чего как-то автоматически обрабатывать все эти ситуации;
    • для тех, кому нужна «менее навороченная» и одновременно «более легкая» версия программы, специально собрана «лайт»-версия оной, которая тщательно оптимизирована и зачищена от излишеств, где оставлено лишь самое насущное и малогабаритное.

Последние напутствия к действию

У этой программы есть три существенных недостатка. Во-первых, обилие её полезных свойств таково, что для их эффективного использования надо сначала немного подучиться, посидеть и как следует разобраться (надеюсь, эта статья хоть немного поможет в этом). Кроме замечательной документации, начать изучение программы я рекомендую с очень доступного и простого пошагового «Вводного курса для начинающих», после чего желательно привентивно просмотреть FAQ к программе.

Во-вторых, пожалуй, самый неприятный и печальный момент — разработка программы заброшена с 2009 года. Отчасти запас прочности (в рамках её функционала), данный ей в последней существующей версии 1.93, позволяет прекрасно себя чувствовать и доныне в полностью автономном от разработчиков режиме жизни, но, как и любая заброшенная вещь, программа всё же начинает морально устаревать. И главная текущая проблема в этом плане — плохая совместимость с Windows 7, для которой она никогда не тестировалась и не предназначалась. Впрочем, ряд добровольцев уже собрали свои собственные неофициальные и «подпиленные сборки» под Win7.

Поэтому обладателям последней Windows можно сначала попробовать «специальные» сборки: можно взять такую от AskSoft или другую альтернативную от AlikasS (подробнее тута). У этих обеих сборок есть свои минусы и плюсы, поэтому призываю вас протестировать их и выбрать любимчика самостоятельно. Всем же остальным ОС-пользователям рекомендую воспользоваться официальной сборкой от nnSoft.

В-третьих, нужно иметь в виду, что nnCron самой судьбой уготовано работать в тесной связке с родственной утилитой от этого же производителя — nnBackup. Говоря кратко, она на редкость удачна и обладает во многом схожей с nnCron системой устройства (я писал  про неё ранее вот тута). При этом даже сложно выделить целевое предназначение этих двух утилит: они одинаково удачно приживаются как на персональном компьютере, так и на серверах под управлением серверных версий Windows (доступный режим работы «как сервис» особенно подходит к последнему варианту).

И в последнюю очередь приведу немаловажную деталь: nnCron бесплатен для граждан стран бывшего СССР (при условии некоммерческого и некорпоративного его использования). Подробную информацию о процедуре бесплатной регистрации можно найти тут.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter
Теги: , , , , ,
Эта запись опубликована: Вторник, 22 ноября 2011 в рубрике Обзоры.

1 комментарий

Следите за комментариями по RSS
  1. Отличная программка. Если бы не она, я бы наверное не сделал такой качественный обменник криптовалюты как bitok.in

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Зарегистрировать/комментатор

Для регистрации укажите свой действующий email и пароль. Связка email-пароль позволяет вам комментировать и редактировать данные в вашем персональном аккаунте, такие как адрес сайта, ник и т.п. (Письмо с активацией придет в ящик, указанный при регистрации)

(обязательно)


⇑ Наверх
⇓ Вниз