Back to Home:

1. Почему VBS, а не, скажем, С++?

Постарайтесь припомнить, как мы обучались в детстве. Ребенок видит сразу целый мир, он может охватить его одним взглядом, слышать своими ушами и трогать его руками. Не задумывается он над тем, что мир может быть на самом деле больше, чем виден, что есть еще океаны, горы, ледники и пустыни, которых рядом нет. Весь окружающий его мир -- един, и в то же время, такой огромный, поместился весь в его сознании. Это уже потом, удовлетворяя свое любопытство, он начнет дробить его на отдельные части, а затем изучать их. Чем более человек склонен к научным изысканиям, тем сильнее он подвержен болезни редукционизма, то есть веры в то, что мир управляется законами неких элементарных микрочастиц, веры, что общество движимо отдельными примитивными побуждениями людей, и уж конечно, каждый человек -- вершина природы. Постепенно человек теряет связь со смыслом окружающей его картины мира, все более углубляясь в созерцание размытых смысловых очертаний отдельных явлений и событий.

Как же это связано с выбором языка программирования, на котором вам нужно решить свою прикладную задачу? Самым непосредственным образом. Когда вам предлагают ознакомиться с устройством автомашины, то вам рассказывают, что это -- педаль газа, это тормоз, это руль, это щетки очистителей стекла, а вот это рычажок для их включения. Было бы странным начинать с термодинамики, максвелловских уравнений электродинамики и теории газовых потоков, или с обоснованности, с точки зрения гармонии, линий сопряжения объемов крыла и дверцы. Разумно хотя бы начать с рассмотрения отдельно кузова, двигателя, электродвигателей, гидравлических систем и механических соединений, грамотной компоновки объемов. То есть того, что выглядит очевидно раздельным функционально. Теперь посмотрим, как сегодня радиолюбитель собирает то или иное устройство. Он не изготавливает сам кнопки и переключатели, не колдует с селеновыми пластинками, и не использует в качестве резисторов баночки с раствором солей различной концентрации. Он прекрасно видит отдельные функции, которые сначала явились ему как необходимые в его сознани и узнаёт их затем в кем-то заботливо подготовленных кирпичиках-подсистемах, имеющихся в продаже, и использует как данность доступную ЭДС из настенной розетки или элементов питания. Видя перед собой задачу, он мыслит сразу готовым устройством с вполне понятным смыслом, а решить головоломку с собиранием и стыковкой компонентов -- лишь дело времени. Самое главное, знать, что такой компонент уже кем-то сделан и не тратить попусту время на повтор его в собственном варианте.

После такого сравнения можно наконец сказать, что VBS -- это плод долгого развития системы Windows, когда разработчики сознательно шли на дополнительные затраты и реализовывали почти каждую отдельную по смыслу задачу в качестве устройства со специально оставленным "многоконтактным разъемом" и разработанным протоколом общения по этому разъему. В результате, на сегодня Windows представляет собой кладку из таких кирпичиков-устройств, из каждого такого кирпичика торчит букет "разъемов" и все они работают по одному протоколу (интерфейсу). Это то, что Майкрософт называет COM-технологией. Образно говоря, ее смысл в том, чтобы вместо нового устройства-программы пересылать удаленному компьютеру набор команд на последовательность соединения его собственных компонентов. Удаленный компьютер как бы сам внутри себя создает необходимое устройство из имеющихся в нем самом COM-кирпичиков. За правильное подключение, то есть реагирование на ваши команды, отвечает Windows Host Engine, в данном случае это исполняемые файлы Wscript.exe и Cscript.exe, а за оставленные разъемы для подключения отвечает разработчик, то есть Майкрософт или иные разработчики., пожелавшие поддержать эту технологию. На сегодня COM-технологию поддерживают очень многие компании, изготовливающие сложные пакеты прикладных программ (Adobe, Symantic ...), оставляя концы для подключения.

А для чего же тогда языки типа С++? Они созданы как раз для разработки таких COM-объектов, или, если задача очень узкая и самодостаточная, а также при желании обезопасить от нежелательного вмешательства в исполняемый код, получается тот же объект, но не COM, попроще, в котором не открывается интерфейс для доступа.

Для того, чтобы понять, как работает компьютер, начинать нужно не с электродинамики, чтобы понять что там такое течет по проводничкам, и не с уравнений Кирхгофа, чтобы знать, как количественно течет, и не с команд процессора, и не с ассемблера. Начать нужно с попытки заставить работать то, что вы уже видите и осознаете на экране компьютера, в нужной вам степени автоматизации. Самое первое, что вы обнаружите, это возможность создания .bat файлов, то есть текстовых файлов, в которых в нужной последовательности записаны команды MS-DOS (например, копировать файлы, перемещать, добавлять один текст в конец другому и т.п.). Да, для этого, конечно, придется вначале просмотреть скучную вещь -- все команды MS-DOS, чтобы уложить в голове их возможности. Следующим этапом спускания по лесенке к более глубоким слоям как раз стоит VBS (Jscript). Поупражнявшись в нем, вы вскоре ощутите недостаток его инструментов для доступа к некоторым свойствам кирпичиков. Отсюда вы легко и незаметно перейдете уже к таким языкам как С++, вначале для того, чтобы соорудить транслятор (оболочку) для команд VBScript к требуемым свойствам или функциям, а затем и к собственно, написанию своих COM-объектов или законченных программ.

2. Код для архивирования форума на by.ru (архив)

Собственно, весь этап получения архива разбит на три части.

  • Получение стартовой страницы.
  • Получение из стартовой страницы списка линков, которые не работают с этой страницы (то есть отсутствуют на диске)
  • Удаление из файлов мусора.

Для этого в дополнение к VBS коду понадобится программа ReGet и два скрипта ~7К.

Есть удобный и бесплатный редактор специально для VBS, смотреть код нужно им, так как он правильно форматирует и подкрашивает ключевые слова, что сильно облегчает чтение [скачать ~192К]

В скрипте я использовал ActiveX элемент, который является оболочкой для компонента webBrowser, составной части программы IE. Загляните сюда, чтобы его установить.

3. Код для архивирования форума на web.referent.ru (второй, сырой вариант)

Для работы скрипта необходимо установить ActiveX объект. Загляните сюда, чтобы его установить. Код с комментариями смотрите здесь. Комментарии появляются как обычные подсказки в системе Windows (маленькие желтые окошки), если остановить курсор на выделенном цветом номере строки. Работает это, правда, только в IE, хотя такое поведение для браузеров рекомендовано.

 

Используются технологии uCoz