Компиляция задачи в EXE файл.

Обсуждение программ nnCron и nnCron LITE

Компиляция задачи в EXE файл.

Postby Halfer » Thu, 26 Feb 2009, 06:13

Что-то читал я читал про компиляцию, так и не понял нифига. У меня накопилась уже масса небольших задачек, которые не очень удобно держать в кронтабах. Хочу вывести их в отдельные исполняемые файлы. Например, есть задача синхронизации времени с локального сервера:
Code: Select all
#( set_time
Action:
   BEGIN
      180000 PAUSE
      HOST-EXIST: "192.168.0.1"
         IF
            SWHide   NormalPriority
            START-APPW: "c:\windows\system32\net.exe time \\192.168.0.10 /set /yes"
            EXIT
         THEN
   AGAIN
)#

Подскажите, как скомпилировать из неё экзешник, который я поставлю тупо на автозагрузку.
Halfer
 
Posts: 395
Joined: Wed, 09 May 2007, 13:23

Re: Компиляция задачи в EXE файл.

Postby Nicholas_Nemtsev » Thu, 26 Feb 2009, 09:00

Да проще в автозагрузку добавить ярлык с командой
c:\windows\system32\net.exe time \\192.168.0.10 /set /yes
Nicholas Nemtsev
User avatar
Nicholas_Nemtsev
Site Admin
 
Posts: 857
Joined: Thu, 01 Jul 2004, 22:25
Location: Псков

Re: Компиляция задачи в EXE файл.

Postby Halfer » Thu, 26 Feb 2009, 09:12

Nicholas_Nemtsev wrote:Да проще в автозагрузку добавить ярлык с командой
c:\windows\system32\net.exe time \\192.168.0.10 /set /yes

Я просто как пример задачу привёл :-) Хочется понять, как их компилировать в исполняемые файлы?
Halfer
 
Posts: 395
Joined: Wed, 09 May 2007, 13:23

Re: Компиляция задачи в EXE файл.

Postby Nicholas_Nemtsev » Thu, 26 Feb 2009, 11:08

Надёжнее выносить подобные задачи в отдельные файлы и запускать их через -runfile
Для скорости (когда это возможно) добавлять ключ -wp для отмены загрузки плагинов. Некоторые продолжительные задачи предпочтительно выносить в отдельные скрипты, чтобы не зависеть от перезагрузки кронтабов и от других задач, которые могут, например, обрушить крон, и, ко всему, сами такие задачи влиять на устойчивость крона не будут.
Nicholas Nemtsev
User avatar
Nicholas_Nemtsev
Site Admin
 
Posts: 857
Joined: Thu, 01 Jul 2004, 22:25
Location: Псков

Re: Компиляция задачи в EXE файл.

Postby Halfer » Fri, 27 Feb 2009, 03:02

Как я понял, компилировать задачи в исполняемые файлы не рекомендуется.
Halfer
 
Posts: 395
Joined: Wed, 09 May 2007, 13:23

Re: Компиляция задачи в EXE файл.

Postby elos » Fri, 27 Feb 2009, 08:19

Да никто не запрещает. Это надо применять там, где хочешь спрятать содержимое табов от "шаловливых" ручек (но никто не мешает этим ручкам полазить в ini и нагадить там...).

Тебе же не надо на машине пачка кронов, отличающихся только малой толикой слов, вкомпилированных к основному телу. Поэтому и предлагается использовать раздельный запуск. Да и сервисом ты скорее всего только один запустить сможешь (даже если и переименуешь бинарники, то в его теле имя сервиса все равно останется прежним - nncron).
elos
 
Posts: 665
Joined: Tue, 25 Apr 2006, 11:15

Re: Компиляция задачи в EXE файл.

Postby Halfer » Fri, 27 Feb 2009, 08:26

Ну вот хоть немного пролито света на мой вопрос. Я вообще думал, что скомпилированный экзешник может работать на любом компе без установленного nnCron'a. Оказывается, что нет. Ну тада он нафиг не нужен! :-)
Halfer
 
Posts: 395
Joined: Wed, 09 May 2007, 13:23

Re: Компиляция задачи в EXE файл.

Postby VoidVolker » Fri, 27 Feb 2009, 09:58

В целях ускорения компиляции можно использовать хеширование http://fforum.winglion.ru/viewtopic.php?p=16887#16887 Кстати, Николай, думаю стоит сделать хешированый поиск по-умолчанию - а то стандартный набор слов 3000, а если еще и несколько кронтабов - то слов вообще болше 5000 становится, и классическое сравнение каждого слова заметно тормозит запуск крона и перечитывание кронтабов.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Компиляция задачи в EXE файл.

Postby Nicholas_Nemtsev » Fri, 27 Feb 2009, 12:46

В юникодной версии форта, которым собирается nnBackup 3.х у меня уже встроено хеширование. Ускорение действительно значительное. Можно попробовать встроить и в старый SP-Forth.
Nicholas Nemtsev
User avatar
Nicholas_Nemtsev
Site Admin
 
Posts: 857
Joined: Thu, 01 Jul 2004, 22:25
Location: Псков

Re: Компиляция задачи в EXE файл.

Postby AlikasS » Fri, 27 Feb 2009, 14:02

Halfer wrote:..... Я вообще думал, что скомпилированный экзешник может работать на любом компе без установленного nnCron'a. Оказывается, что нет. Ну тада он нафиг не нужен! :-)
может и работает (nncron.ini здесь не причем), другое дело что в exe сохраняется вся наработанная система.
поэтому лучше делать SAVE из -runfile
например создаем такой файл H:\1.fex (где H - у меня др.диск)
Code: Select all
\ можно подключить плагины
\ INCLUDE "plugins\other\wincon.f"

 : re TMSG: "Hello, WORLD!" 10 ;

: main
 ['] re MAINX !
 S" 1.exe" SAVE
;

\EOF
\ или прям так
: main
 [NONAME TMSG: "Hello, WORLD!" 10 NONAME] MAINX !
S" 1.exe" SAVE
;

строка запуска
Code: Select all
"c:\program files\nncron\nncron.exe" -runfile H:\1.fex

P.S. есл запускать из каталога nncron где лежит ini, он (ini) подключится и соотвественно подключаться все табы и плагины
Last edited by AlikasS on Tue, 10 Mar 2009, 15:38, edited 1 time in total.
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Компиляция задачи в EXE файл.

Postby AlikasS » Fri, 27 Feb 2009, 16:40

интересно, почему
Code: Select all
 : re TMSG: "Hello, WORLD!" 10 BYE ;

: main
 ['] re MAINX ! \ TO <MAIN>
 S" 1.exe" SAVE
;
работает запуск 1.exe,
а
Code: Select all
 : re
WIN-INPUT-TEXT: "Just a test" "Please, enter your first name" "Type here" 0 0=
IF   2DROP
    MSG: "OK"
ELSE
    MSG: "NO"
THEN
;

: main
 ['] re MAINX ! \ TO <MAIN>
 S" 2.exe" SAVE
;
не работает запуск 2.exe
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Компиляция задачи в EXE файл.

Postby VoidVolker » Fri, 27 Feb 2009, 21:30

Nicholas_Nemtsev wrote:В юникодной версии форта, которым собирается nnBackup 3.х у меня уже встроено хеширование. Ускорение действительно значительное. Можно попробовать встроить и в старый SP-Forth.

Тему хеширования в ннкроне я уже поднял на форуме Winglion'а - я бы и сам сделал бы, вот только я плохо знаком с архитектурой СПФ'а. Поэтому может быть Вы посмотрите тему http://fforum.winglion.ru/viewtopic.php?p=16887#16887 - там есть решения для современной версии спф'а, а вот в кроне оно выдает ошибку непонятную.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Компиляция задачи в EXE файл.

Postby Nicholas_Nemtsev » Fri, 27 Feb 2009, 21:58

http://www.nncron.ru/download/spfw.zip
В файлах
src\compiler\spf_wordlist.f
src\compiler\spf_find.f
всё описано. Для каждого словаря используется своя хэш-таблица. Для разрешения коллизий в заголовок слова введено ещё одно поле.
Решение уже хорошо отлаженное и я особо выдумывать ничего не буду и перенесу его в SPF 3.75.
Nicholas Nemtsev
User avatar
Nicholas_Nemtsev
Site Admin
 
Posts: 857
Joined: Thu, 01 Jul 2004, 22:25
Location: Псков

Re: Компиляция задачи в EXE файл.

Postby VoidVolker » Sat, 28 Feb 2009, 15:31

Nicholas_Nemtsev wrote:Решение уже хорошо отлаженное и я особо выдумывать ничего не буду и перенесу его в SPF 3.75.

Отлично, будем ждать :)
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Компиляция задачи в EXE файл.

Postby Nicholas_Nemtsev » Mon, 02 Mar 2009, 17:52

nncron193b6.exe
Добавил поиск в словаре по хеш-таблице.
Nicholas Nemtsev
User avatar
Nicholas_Nemtsev
Site Admin
 
Posts: 857
Joined: Thu, 01 Jul 2004, 22:25
Location: Псков

Next

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: Bing [Bot] and 1 guest