i21sys/Docu.Полезные сведения/О рабочих папках и серверном режиме.odc

О рабочих папках и серверном режиме

Что такое серверный режим
Как включать серверный режим
Как подготовить файл-пускач
	Автоматическая подготовка
	Подготовка вручную
Что приятно в серверном режиме

Главная (основная) папка Блэкбокса  это та папка, где лежит BlackBox.exe. Это может быть папка на сетевом диске, открытая только для чтения.
Рабочая папка  любая папка вне главной, куда пользователь имеет право записывать файлы. Разные рабочие папки назначают разным проектам или учащимся. Обычно рабочую папку нужно подготовить для запуска Блэкбокса в особом серверном режиме.

Что такое серверный режим
Это когда создается иллюзия, что рабочая папка и есть главная, и все новые файлы записываются в рабочую папку. 
Дело в том, что Блэкбокс все свои штатные операции выполняет, оперируя относительными путями (когда компилирует модули, ищет исходники, документацию и т.п.).
Но при простом запуске (двойным кликом по BlackBox.exe) эти относительные пути отсчитываются от главной папки, а при запуске в серверном режиме  от рабочей.
При этом все файлы записываются только в рабочей папке по штатным правилам Блэкбокса (с соответствующими относительными путями), а читаться они могут и из главной папки, если в рабочей папке нужного файла нет.
То есть любой файл в рабочей папке как бы заслоняет собой файл в главной папке с таким же относительным путем, но незаслонённые файлы из главной папки как будто лежат прямо в рабочей. 
В частности, в рабочей папке можно менять, перекомпилировать и перезагружать штатные модули Блэкбокса (скажем, DevCompiler). При этом создается иллюзия, что работа идет в главной папке, в которой эти файлы заменены. Но на самом деле главная папка остается нетронутой.
Таким способом нельзя подменить только BlackBox.exe и скомпилированные модули, в него скомпонованные: Kernel, Files, HostFiles, StdLoader. 
Осторожно! Если файл извне рабочей папки открыт в Блэкбоксе с помощью Ctrl+O или перетаскиванием мышью из окна файлового менеджера на окно Блэкбокса, то штатные правила Блэкбокса неприменимы, и Блэкбокс оперирует с таким файлом, используя его абсолютный адрес в системе. И все изменения тоже будут сохраняться по этому абсолютному адресу. Поэтому не стоит так открывать, например, исходники штатных модулей из главной папки Блэкбокса. Хотя бинарники, создаваемые компилятором, будут в любом случае сохраняться в рабочей папке по штатным правилам.
Прелесть тут в том, что разные активации Блэкбокса в разных рабочих папках ничего друг о друге не знают  и даже не знают, где на самом деле находится главная папка, если не используют внештатные средства (то есть прямые обращения к операционной системе).

Как включать серверный режим
В конечном счете для запуска в серверном режиме нужно задать некоторые параметры командной строки при запуске Блэкбокса. Это можно сделать разными способами  используя подготовленный ярлык, разные файлы-пускачи (сценарии/скрипты) и т.п.
Недостаток ярлыка  для каждой рабочей папки (т.е. для каждого учащегося!) нужно настраивать отдельную копию ярлыка. Поэтому ниже этот вариант не обсуждается (в главной папке Блэкбокса на всякий случай есть пример такого ярлыка  BlackBox.lnk). 
Опыт показал, что проще всего использовать специальный файл-пускач  текстовый файл с расширением .vbs. Такой файл достаточно подготовить один раз для данной инсталляции Блэкбокса, а затем просто копировать в любую рабочую папку, запуская 
в ней Блэкбокс двойным кликом по этой копии. 
В хороших файловых менеджерах можно обойтись вообще без копирования пускача. Например, в программах-клонах легендарного Norton Commander'а достаточно поставить в меню Start вызов единственного файла-пускача, остающегося лежать в главной папке.

Как подготовить файл-пускач
Это текстовый файл с расширением vbs, подготовить который можно в Блокноте (Notepad). Он должен содержать такой текст:

Option Explicit
Dim prg
'-----------------------------------------------
prg = """C:\BlackBox\BlackBox.exe"""
'-----------------------------------------------
Dim sh
Set sh = WScript.CreateObject("WScript.Shell")
sh.Run prg & " " & "/use """ & sh.CurrentDirectory & """", 1, false

С одиночной кавычки начинаются строки комментариев.
Настраивать нужно строку prg = ..., прописывая там полный путь к BlackBox.exe, но не трогая три двойных кавычки слева и справа (благодаря им в именах папок можно использовать пробелы).

Автоматическая подготовка
Чтобы создать пускач для конкретной инсталляции Блэкбокса, в комплектах Блэкбокса от проекта Информатика-21 предусмотрена специальная команда меню (Help -> Create vbs или Справка -> Создать файл-пускач). 
Команда создаёт файл с расширением  .vbs в главной папке Блэкбокса. 
Этот файл правильно настроен для данной инсталляции и обычно имеет имя StartupBlackBox.vbs или пускач Блэкбокса.vbs 
Чтобы команда сработала, Блэкбокс должен быть запущен в главной папке (двойным кликом по BlackBox.exe).
После создания файла лучше переименовать его, чтобы различать пускачи для запуска разных инсталляций Блэкбокса.
См. также  документацию.
Подготовка вручную
Вручную приходится готовить файл в том случае, когда главная и рабочие папки находятся на разных компьютерах в локальной сети. Тогда в пускаче, предназначенном для копирования в рабочую папку, в параметре prg нужно прописать полный сетевой путь к файлу BlackBox.exe так, как он виден из данной рабочей папки.

Что приятно в серверном режиме
Можно иметь СКОЛЬКО УГОДНО рабочих папок ГДЕ УГОДНО на одном компе, достаточно в каждую скопировать подготовленный пускач.
Можно ОДНОВРЕМЕННО запустить в разных рабочих папках разные активации одной и той же инсталляции Блэкбокса -- они в нормальном режиме работы друг о друге не узнают и мешать друг другу не будут.
Можно в одной рабочей папке запускать РАЗНЫЕ ИНСТАЛЛЯЦИИ Блэкбокса (на одном компе таких инсталляций может быть сколько угодно; например, оригинальная инсталляция версии 1.5, ее школьный вариант с модифицированным инструментарием, новая бета-версия 1.6 и т.п.).
Можно ПЕРЕМЕСТИТЬ рабочие папки в любое другое место на компе -- файл-пускач будет продолжать правильно работать, пока не изменится местоположение файла BlackBox.exe на данном компе.
Можно ПЕРЕНОСИТЬ свою рабочую папку на флэшке целиком с компа на комп (из класса/офиса домой и обратно)  для этого достаточно иметь в этой рабочей папке по одному файлу-пускачу для каждого компа и на каждом компе вызывать Блэкбокс соответствующим пускачом.
В учебных комплектах могут быть дополнительные инструменты для организации компьютерных классов.

________________
info21@inr.ac.ru
последние изменения: 2010-10-23