Редактор для создания скриптов: Primal Script 4.0::Журнал СА 11.2005
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Архив номеров
Контакты
   

  Опросы
  Статьи

Электронный документооборот  

5 способов повысить безопасность электронной подписи

Область применения технологий электронной подписи с каждым годом расширяется. Все больше задач

 Читать далее...

Рынок труда  

Системные администраторы по-прежнему востребованы и незаменимы

Системные администраторы, практически, есть везде. Порой их не видно и не слышно,

 Читать далее...

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

 Читать далее...

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

 Читать далее...

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 9897
Комментарии: 0
Потоковая обработка данных

 Читать далее...

19.03.2018г.
Просмотров: 8108
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

 Читать далее...

19.03.2018г.
Просмотров: 8211
Комментарии: 0
Конкурентное программирование на SCALA

 Читать далее...

19.03.2018г.
Просмотров: 5197
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 5880
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

Друзья сайта  

 Редактор для создания скриптов: Primal Script 4.0

Архив номеров / 2005 / Выпуск №11 (36) / Редактор для создания скриптов: Primal Script 4.0

Рубрика: Программирование /  Веб-программирование

ИВАН КОРОБКО

Редактор для создания скриптов: PrimalScript 4.0

Существует множество редакторов, позволяющих создавать скрипты. Как правило, они поддерживают один-два языка программирования. Редактор PrimalScript 4.0, имеет встроенную поддержку более чем 30 языков программирования, начиная от HTML, XML и VBScript, и заканчивая узкоспециализированными, такими как KIXTart.

О том, как пользоваться этим редактором, вы можете узнать из встроенной справки в редактор или из официальной документации, опубликованной на сайте разработчика (http://www.sapien.com). Мы поговорим о недокументированных возможностях, вы сможете самостоятельно интегрировать в редактор свои собственные шаблоны, создавать описание новых языков программирования, при необходимости вносить изменения в объектную модель, отображаемую в виде подсказки.

Интегрируем собственные шаблоны

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

Создадим шаблон, в котором осуществляется соединение с Active Directory с помощью ADODB-соединения. За основу шаблона примем сценарий, с помощью которого осуществляется чтение всех пользователей в AD (о том, как осуществляется подключение и чтение данных из AD, см. статью «Программное управление ADSI: LDAP», №3, 2004 г. – http://www.samag.ru/cgi-bin/go.pl?q=articles;n=03.2004;a=09):

domain = "LDAP://" + GetObject("LDAP://RootDSE").Get("defaultNamingContext")

Set objConnection = CreateObject("ADODB.Connection")

Set objCommand = CreateObject("ADODB.Command")

objConnection.CommandTimeout = 120

objConnection.Provider = "ADsDSOObject"

objConnection.Properties("ADSI Flag")=1+2

objConnection.Properties("User ID")="msk\adminstrator"

objConnection.Properties("Password")="password"

objConnection.Properties("Encrypt Password")=TRUE

objConnection.Open "Active Directory Provider"

Set objCommand.ActiveConnection = objConnection

objCommand.properties("Page size")=10000

objCommand.properties("Timeout")=300

objCommand.properties("Cache Results")=false

Set st=objconnection.execute("SELECT Samaccountname, description FROM ' " & Domain & " '  WHERE objectClass='person')

st.Movefirst

Temp=""

Do Until st.EOF

SamAccountName=""

SamAccountName= St.Fields("Samaccountname").Value

Description=""

A_Description= St.Fields("Description").Value

For Each AA in A_Description

Description= Description+AA

Next

Temp=Temp+ "Имя: "+ SamAccountName + "Описание: " + Description +chr(13)+chr(10)

st.MoveNext

Loop

Wscript.Echo Temp

Из приведенного сценария можно сделать несколько шаблонов: шаблон определения длинного имени домена, соединения с AD, SQL-запрос обращения к объекту, чтения данных строка и массив.

Однако ограничимся созданием только одного шаблона. По местоположению в скрипте соединение с AD располагается в самом начале и сразу после него формируется SQL-запрос.

Выбор создания именно такого шаблона не случаен. Дело в том, что для успешного соединения с AD и чтения/записи данных необходимы административные права доступа. Как следствие, эти значения параметров необходимо указать, и они не статичны, поэтому для формирования шаблона скрипт необходимо трансформировать:

Admin_Name=" "

Password=" "

Set Domain= GetObject("LDAP://RootDSE").Get("defaultNamingContextм)

Short_Domain = mid(Domain, instr(Domain,"=")+1,instr(Domain,",")-instr(Domain,"=")-1)

Set objConnection = CreateObject("ADODB.Connection")

Set objCommand = CreateObject("ADODB.Command")

objConnection.CommandTimeout = 120

objConnection.Provider = "ADsDSOObject"

objConnection.Properties("ADSI Flag")=1+2

objConnection.Properties("User ID")= Short_Domain + "\"+Admin_Name

objConnection.Properties("Password")=Password

objConnection.Properties("Encrypt Password")=TRUE

objConnection.Open "Active Directory Provider"

Set objCommand.ActiveConnection = objConnection

objCommand.properties("Page size")=10000

objCommand.properties("Timeout")=300

objCommand.properties("Cache Results")=false

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

Определившись с содержанием шаблона, обратимся к файловой структуре редактора PrimalScript. Шаблон представляет собой текстовый файл с расширением snippet, расположенном в папке «C:\Program Files\SAPIEN\PrimalScript Professional\Snippets\», если программа установлена по умолчанию. Иерархическую структуру расположения шаблонов и описания функций различных языков определяет структура каталогов и файлы с расширением snippet (см. рис. 1).

Рисунок 1. Файловая структура PrimalScript

Рисунок 1. Файловая структура PrimalScript

Итак, создадим в каталоге «Snippets» подкаталог «Шаблоны на VBScript», а в нем файл «AD Connection.snippet», который является текстовым. Все его содержимое представляет собой шаблон.

После создания файла и заполнения его содержимым необходимо перезапустить PrimalScript, чтобы внесенные в файловую структуру изменения вступили в силу.

Войдя в редактор, необходимо вызвать меню «Snippets Windows», в котором находятся все шаблоны. Для этого необходимо в меню «Tools» выбрать пункт Options, а в появившемся окне войти в «Environment/Nexus Windows» и сделать активным меню «Snippet Browser», как это показано на рис. 2. Чтобы сделанные изменения вступили в силу, необходимо перезапустить редактор.

Рисунок 2. Вид окна Tools для управления отображения меню с шаблонами

Рисунок 2. Вид окна Tools для управления отображения меню с шаблонами

Рисунок 3. Snippet Browser. Пример использования шаблонов

Рисунок 3. Snippet Browser. Пример использования шаблонов

Описываем новую объектную модель

Создание собственных объектных моделей поможет вам избежать ошибок при создании кода.

Разберем простой пример. На рис. 4 изображена некая объектная модель, которую предстоит описать. В ней присутствует ряд объектов, которые имеют свойства.

Рисунок 4. Тестовая объектная  модель

Рисунок 4. Тестовая объектная  модель

Существует несколько правил описания модели. По структуре файл представляет собой INI-файлы, которые раньше активно использовались. Иерархии описываются с помощью имени раздела. Сами параметры, которые могут быть объектами или свойствами, различаются символами «P» или «M» соответственно. Синтаксис строки выглядит следующим образом: сначала пишется идентификатор P или M. Затем пишется название объекта или свойства, после него уточняющие параметры. Обратите внимание, что в названии раздела и описании значения раздела между идентификатором и именем объекта символ пробела не допускается!

Отображенная иерархическая модель описывается в файле, как показано на рис. 5, там же показана иерархическая связь объектов. Связанные объекты выделены одинаковыми цветами. Направления связей (дочерний/родительский объект) показаны на рисунке стрелками.

Рисунок 5. Описание объектной модели в файле

Рисунок 5. Описание объектной модели в файле

Рисунок 6. Демонстрация работы тестовой объектной модели

Рисунок 6. Демонстрация работы тестовой объектной модели

Добавляем новые функции в существующие языки программирования

Существует масса языков программирования, набор функций которых расширяется до сих пор: выходят новые версии. Ярким примером представителя такого языка программирования является KIXTart, который уже несколько лет находится в активной разработке. С выходом новой версии в нем становятся доступны новые функции, которые хотелось бы сделать «понятными» для редактора. Для этого нам опять же придется отредактировать соответствующий файл с расширением «sense», например, KIXTart.sense.

Приведу пример добавления абстрактной функции WriteToXml(), которая имеет три параметра: имя файла, записываемый текст и кодировку. Причем кодировка – не обязательный параметр. Исходя из этих условий, функция имеет синтаксис:

WriteToXml("filename", "doby" [, "encoding"])

Для того чтобы редактор воспринял «WriteToXml» как служебное слово, необходимо в файл Kixtart.sense добавить строку:

M, WriteToXml("filename", "doby" [, "encoding"])

Обратите внимание, что пробел между «M» и названием функции не допускается.

После сохранения файла также необходимо перезагрузить редактор, чтобы внесенные в файлы изменения вступили в силу.

Заключение

Теперь, когда вы знаете, как создать собственные шаблоны, добавлять описания новых функций и объектные модели различных объектов для разных языков, хочется надеяться, что программирование станет для вас еще большим удовольствием, поскольку сделан огромный шаг по предупреждению синтаксических ошибок и удобству использования созданных вами же шаблонов.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru