Музыкальное сопровождение сайтостроения

     начальный курс английского языка 923 http:// лучшие игры +на компьютер|xxx     Check youtube video and save with deluxe coupons | Найти дешевый хостинг серверов

Первый сайт на Perl

Язык Perl создан системным программистом Ларри Уоллом (Larry Wall) как средство UNIX, позволяющее "склеивать" из программок, выполняющих отдельные функции, большие сценарии для решения комплекса задач, связанных с администрированием, обработкой текста и т. д. В дальнейшем он вышел за эти рамки, превратился в настоящий язык программирования, в котором нашли отражение многие тенденции, обозначившиеся в технологии программирования за последнее десятилетие, и получил широкое распространение в связи с развитием Inernet. Perl является основным средством создания приложений CGI, удобен для решения задач администрирования Web-серверов, электронной почты и других систем. Благодаря быстроте и легкости написания сценариев на этом языке он распространился и на другие платформы: DOS, Windows, OS/2, Mac, VMS и пр. Одно из основных достоинств языка Perl — его открытость и доступность. В сети Internet можно получить совершенно бесплатно исходные тексты интерпретатора perl (язык Perl — интерпретируемый, что в некоторых случаях является преимуществом) и модулей его расширения.

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

Введение в мир Perl
Что такое Perl? Это сокращенное название языка программирования Practical Extraction and Report Language (Практический язык извлечений и отчетов). Что подразумевается под "извлечениями" и "отчетами"? Почему практический язык? Для чего он предназначен? Какие задачи можно решать с его помощью? Эти и многие другие вопросы возникают, естественно, у любого человека, хоть немного знакомого с информатикой, когда он впервые сталкивается с новым для него языком программирования. Эта глава и задумывалась как ответ на поставленные выше вопросы, так как зная, что может, для чего предназначен язык программирования (а время универсальных языков, кажется, миновало), программист, в конечном счете, решает, а стоит ли тратить время на его изучение.

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

Типы данных
Приступая к знакомству с любым языком программирования, мы прежде всего выясняем, а какие типы данных он позволяет обрабатывать, предоставляет ли язык механизм создания новых типов из уже существующих. Ведь язык программирования, как знаковая система обработки информации, как раз и предназначен для обработки информации, представленной данными и алгоритмами. Данные определяются своим типом — множеством значений и набором допустимых операций. Одни языки программирования предлагают большое число разнообразных типов данных, как, например, универсальный язык С, в котором даже тип данных, используемый для хранения символов, может быть со знаком или без знака; другие могут обходиться всего лишь двумя типами данных, как, например, VBScript, в котором для хранения и обработки любых скалярных данных (числовых, строковых и булевых) используется единственный вариантный тип данных и существует возможность создания массивов скалярных данных.

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

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

Операции ввода/вывода
Ни одна программа не может функционировать сама по себе, не получая и не посылая информацию во внешнюю среду. Perl предоставляет несколько способов получения программой данных извне и вывода информации из выполняющегося сценария. В процессе функционирования программы может потребоваться выполнить некоторую команду операционной системы и проанализировать результаты ее выполнения, прочитать данные из внешнего файла или группы файлов, записать результаты вычислений во внешний файл или отобразить их на экране монитора — все эти действия реализуются разнообразными операциями и функциями языка Perl.

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

Форматы
Как мы помним, дословный перевод аббревиатуры языка Perl включает в себя слова "язык отчетов", т. е. язык Perl предназначен не только для извлечения и обработки информации из текстовых файлов, но и для генерирования отчетов на основе этой информации. Пока что мы для вывода информации использовали функцию print (), которая не очень-то удобна для создания отчетов — определенным образом отформатированной выходной информации. (Можно было бы воспользоваться функцией форматированного вывода printf о, но мы решили не нагружать нашего читателя изучением языковых средств, которыми он редко будет пользоваться, тем более что всегда можно обратиться к документации Perl.)

Ссылки
Ссылка на некоторую переменную содержит адрес этой переменной в оперативной памяти. Говорят, что ссылка указывает на переменную. Ссылки широко используются в современных языках программирования, таких как Pascal, C/C++. Вместо слова "ссылка" для обозначения термина может применяться слово "указатель". Основной областью применения ссылок является создание сложных структур данных, способных изменяться во время выполнения программы. Для ссылок используются специальные обозначения. В языке С это символ "*" перед именем переменной. В языке Pascal существует специальный тип данных для описания ссылок-переменных. Признаком этого типа является символ "^ " перед идентификатором, описывающим базовый тип данных. Ссылка может быть переменной или константой.

Работа со строками
Язык, созданный первоначально с главной целью — облегчить обработку большого количества отчетов, просто обязан располагать развитыми средствами для работы с текстом. Напомним, что в среде UNIX, из которой вышел язык Perl, средства для обработки текстовых строк имеются в различных утилитах: sed, awk, grep, cut. Командный интерпретатор shell, также обладающий некоторыми средствами для обработки строк, позволяет организовать совместную работу этих утилит, передавая выход одной программы на вход другой через механизм, называемый конвейером. Такой подход требует написания достаточно изощренных скриптов на языке shell в сочетании с обращением к внутренним командам утилит обработки текста sed или awk. Язык Perl, являясь средством создания программ-сценариев, в то же время один обладает всеми возможностями перечисленных утилит и даже их превосходит.

Подпрограммы и функции
Подпрограммы в языке Perl играют ту же роль, что и функции в языке С, или процедуры и функции в языке Pascal. Они выполняют две основные задачи: позволяют разбить одну (большую программу на несколько небольших частей, делая ее более ясной для понимания; объединяют операторы в'одну группу для повторного использования. В языке Perl не различаются понятия "подпрограмма" и "функция", эти слова являются синонимами.

Пакеты, библиотеки, модули
Область действия зависит от того, в каком месте вызвана для объявления пакета функция package о. Все идентификаторы, встретившиеся внутри этой области, принадлежат к пространству имен текущего пакета. Исключение составляют идентификаторы лексических переменных, созданных при помощи функции mу (). Объявление пакета может быть сделано несколько раз в разных точках программы. Каждое объявление означает переключение на новое пространство имен.

Объектно-ориентированное программирование в языке Perl
Эта глава не предназначена для того, чтобы изучать по ней основы объектно-ориентированного программирования (ООП). Мы лишь хотим дать представление о том, как основные идеи ООП реализованы в языке Perl. Начнем с краткого обзора этих идей. В основе ООП лежат понятия класса и объекта. Эти понятия тесно связаны друг с другом. Класс представляет собой сочетание структуры данных и тех действий, которые можно выполнить над этими данными. Данные называют свойствами, а действия — методами. Совмещение в классе структуры данных и действий над ними называют инкапсуляцией.

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

Язык Perl и CGI-программирование
Основу "всемирной паутины" WWW составляют Web-узлы. Это компьютеры, на которых выполняется специальная программа — Web-сервер, ожидающая запроса со стороны клиента на выдачу документа. Документы сохраняются на Web-узле, как правило, в формате HTML. Клиентом Web-сервера является программа-браузер, выполняющаяся на удаленном компьютере, которая осуществляет запрос к Web-серверу, принимает запрошенный документ и отображает его на экране.

Ресурсы Perl
Язык Perl распространяется и развивается в глобальной сети Internet. Самые последние новости из мира Perl можно найти на многочисленных Web-узлах и просто обычных страницах HTML, авторы которых являются апологетами языка Perl и входят в так называемое сообщество Perl — свободное объединение людей, использующих и развивающих язык Perl там, где требуется что-нибудь и как-нибудь автоматизировать. Задав в любой поисковой машине (например, AltaVista, Yahoo) поиск по ключевому слову "Perl", вы получите тысячи ссылок на различные ресурсы Internet, так или иначе связанные с языком Perl и программированием на этом языке. Чтобы читатель не запутался и не растерялся в этом обилии информации, мы решили в последней главе нашего самоучителя отметить основные ресурсы Internet — конференции, Web-узлы и FTP-серверы, с которых можно и стоит начинать вхождение в многообразный и интересный мир Perl.

Создание серверных приложений на языке PERL

Прежде чем приступить к последовательному ознакомлению с не знакомым для вас языком, должен оговориться и сказать, что все примеры да и сам язык описанию которого посвящена эта книга это Perl версии 5.003 для операционной системы FreeBSD версии 2.01. Существуют реализации этого языка для операционных систем OS/2 , MS-DOS и Windows NT но они немного отстают по возможностям от оригинала, рожденного в недрах Unix.

Постраничный вывод новостей с разбиением по датам
Предположим есть файл news.dat со строками(не суть что разделитель, разделитель определяется переменной $/, которую можно в начале кода переопределить)

Вывод хеша в порядке вставки с использованием Tie::IxHash
Модуль Tie::IxHash заставляет функции keys, each и values возвращать элементы в порядке занесения их в хэш. Если у Вас нет такого модуля IxHash.pm то нужно зайти на CPAN/modules, найти его и установить, если у вас нет прав на установку библиотек, то в первой строчке скрипта нужно написать #!/put'/do/perl'a -wT -I/put'/do/nugnogo/modulia и установить модуль в Вышей домашней директории

От простого к сложному
Прежде чем приступить к последовательному ознакомлению с не знакомым для вас языком, должен оговориться и сказать, что все примеры да и сам язык описанию которого посвящена эта книга это Perl версии 5.003 для операционной системы FreeBSD версии 2.01. Существуют реализации этого языка для операционных систем OS/2 , MS-DOS и Windows NT но они немного отстают по возможностям от оригинала, рожденного в недрах Unix.

Массивы и списочные данные
Список - это упорядоченные скалярные данные. Массив - переменная, которая содержит список

Apache
Данный документ я взял на сайте dizain, и он помог мне установить на моем компьютере сервер Apache, благодаря чему я смог настраивать php-скрипты непосредственно у себя. Из-за важности этой информации я включаю этот документ в дистрибьютив программы Паутина

Библиотеки и модули
Для простых программ вы уже теперь можете свободно писать собственные Perl-подпрограммы. Когда же задачи, для решения которых вы применяете Perl, станут более сложными, вам иногда будет приходить в голову мысль: "Кто-то, должно быть, это уже делал". И в подавляющем большинстве случаев вы окажетесь правы.

СGІ-программирование
Каждое предназначенное для ввода текста поле в зтой форме имеет имя (указанное в HTML-коде формы) и соответствующее значение, которым является все, что вы вводите в зтом поле. Сама форма связана (через HTML-директиву form) с CGI-программой, которая обрабатывает данные, введенные в форму. Когда вы, заполнив форму, щелкаете на кнопке Submit, броузер обращается к URL CGI-программы. Перед зтим он добав-ляет в конец URL так называемую строку запроса, которая состоит из одной или более пар имя=з наче ниє; каждое имя — зто имя поля, предназначенного для ввода текста, а каждое значение — данные, которые вы ввели.

Упражнения
Как и везде, первый наш урок очень важен для всего последующего обучения. Сегодня Вы узнаете много полезной и важной информации о CGI программировании. Начнем с того, что все свои программы Вы будете набирать не в интегрированной среде, как Вы привыкли в Pascal или C, а в текстовом редакторе. Подойдет и notepad. Это связано не с тем, что для Perl нет подобных сред, а с тем, что это благотворно скажется на усвоении материала, это сдисциплинирует Вас.

PERL: Библиотека программиста

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

Строки
В строковом контексте значение undef интерпретируется как пустая строка ( '"). В числовом контексте undef интерпретируется как 0, а в ссылочном — как нуль-ссылка. При этом во всех случаях оно считается ложным. Использование неопределенной величины там, где Perl ожидает получить определенную, приводит к записи в STDERR предупреждения времени выполнения (если был использован флаг -w). Для простого вопроса о том, является ли нечто истинным или ложным, предупреждение не выдается.

Поиск по шаблону
Задача поиска последнего совпадения также встречается довольно часто Простейшее решение — пропустить все начало строки Например, после / *\b(\w+)\s+ f ish\b/ переменная $1 будет содержать слово, предшествующее последнему экземпляру fish. Другой способ — глобальный поиск в списковом контексте для получения всех совпадений и последующее извлечение нужного элемента этого списка

Подпрограммы
В Perl существует нечто похожее на прототипы, но это сильно отличается от прототипов в традиционном понимании. Прототипы функций Perl больше напоминают принудительный контекст, используемый при написании функций, которые ведут себя аналогично некоторым встроенным функциям Perl (например, push и pop).

Использование termios
Представьте себе богатые возможности команды stty — можно задать все, от служебных символов до управляющих комбинаций и перевода строки. Стандартный модуль POSIX обеспечивает прямой доступ к низкоуровневому терминальному интерфейсу и позволяет реализовать хйг/-подобные возможности в вашей программе.

Сохранение формы в файле
Иногда данные формы сохраняются для последующего использования. Функция save_parameters и метод save модуля CGI.pm записывают параметры формы в открытый манипулятор. Манипулятор может быть связан с открытым файлом (желательно — открытым в режиме дополнения и заблокированным, как в решении) или каналом, другой конец которого подключен к почтовой программе.

Язык программирования Perl

Язык программирования Perl создал американский программист Ларри Уолл (Larry Wall) в 1987 году, когда он работал системным программистом в компании Unisys. Цели, которые преследовал Ларри при разработке нового языка программирования, отражены в его названии - PERL, которое позднее стало расшифровываться как Practical Extraction and Report Language, то есть "практический язык извлечения "данных" и "создания" отчетов". (Нетрудно заметить, что первые буквы всех слов названия составляют слово PEARL - "жемчуг". Одна из легенд о происхождении Perl гласит, что в то время уже существовал язык с таким названием, поэтому Ларри сократил название на одну букву, не изменив произношения. По иронии судьбы, сегодня тот язык не помнит никто, кроме историков, а Perl известен всему миру. Хотя, по другой версии, Ларри назвал созданный им язык по имени своей невесты.

Создание Perl
Прежде всего популярность Perl связана с тем, что Ларри Уолл создал действительно необычный язык: принципы его разработки сильно отличаются от применявшихся в программировании до этого. Новаторский характер Perl связан с уникальными особенностями личности автора языка, Ларри Уолла, и его разносторонними интересами.

Литералы
Perl - очень практичный язык, и изучить его основы довольно просто. Поскольку большинство синтаксических конструкций Perl основаны на языке С, то для программистов, знающих языки C, C++, C#, Java, JavaScript, Python или PHP, синтаксис Perl будет очень знакомым. Но и тот, кто раньше писал на языке Pascal, Fortran или Basic, легко привыкнет к нотации Perl.

Выражения
Операции (также называемые операторами) в Perl многочисленны и разнообразны, с их помощью образуются арифметические, логические, строковые и другие выражения - конструкции, вычисляющие некоторый результат, хотя он не всегда может использоваться. Элементы выражения, над которыми производится операция, называются операндами. Результат операции в Perl может зависеть от контекста, в котором она выполняется.

Термы и простые предложения
Минимальная синтаксическая единица языка программирования называется термом. Терм (term) - это все то, что может служить операндом в выражении, например, литерал или переменная. Выражение напоминает неоконченную фразу в естественном языке. Чтобы выражение стало законченным предложением (statement, называемым также утверждением), нужно после него поставить символ ";" (точка с запятой). Другими словами, простое предложение - это выражение, вычисляемое ради его побочного эффекта.

Списки и списочные литералы
Помимо уже изученных скалярных данных, в Perl широко применяется другой тип данных - списки. Если скаляры представляют в программе единичные объекты реального мира, то списки, как и в жизни, позволяют представить набор объектов, однотипных или совершенно разных, которые для решаемой задачи удобно рассматривать как единое целое (например, "список работников", "перечень документов", "опись товаров" и так далее).

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

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




Регулярные выражения
Когда некоторые говорят, что программы на Perl похожи на бессмысленную кучу символьного мусора, то это впечатление, скорее всего, возникло от вида какого-нибудь длинного регулярного выражения, а они действительно могут выглядеть как загадочный или бессмысленный набор символов, например: m/A[^]+?HREF\s*=\s*["']?([^'" ]+?)['"]?\s*/ig

Потоки ввода-вывода
Система ввода-вывода Perl основана на принципах, заложенных в системе Unix и распространившихся на все современные операционные системы. Одним из основных понятий работы в программе с внешними данными являются потоки ввода-вывода. В программе обращение к потоку ввода-вывода производится через файловый манипулятор (file handle), иногда неправильно называемый дескриптором файла. При запуске любой программы автоматически открывается три потока: стандартный ввод (stdin), стандартный вывод (stdout) и стандартный протокол (stderr). Поток стандартного ввода в диалоговой операционной среде связывается с клавиатурной, а потоки стандартного вывода и стандартного протокола - с дисплейной частью консоли операционной системы

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

Ссылки
Ссылки явно или неявно применяются во всех языках программирования. Они позволяют гибко создавать динамические структуры данных неограниченной сложности. Ссылки являются одним из скалярных типов данных языка Perl, наряду с числами и строками. Ссылка (reference) - это информация о том, где при выполнении программы располагается в памяти объект определенного типа. Эту информацию можно использовать для доступа к объекту ссылки (referent). Ссылка - это возможность обратиться к какой-то информации не по имени, которое известно при компиляции, а по ее расположению в памяти при выполнении программы.

Определение подпрограмм
Подобно определению термина в словаре, при определении подпрограммы (subroutine definition) с ее именем сопоставляется последовательность действий, которую нужно выполнить. Подпрограммы определяются с помощью ключевого слова sub, за которым следует имя подпрограммы и блок, называемый телом подпрограммы, в котором содержатся исполняемые предложения подпрограммы. Имя подпрограммы - это идентификатор, который записывается по тем же правилам, что и имя переменной.

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

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

Базы данных
Давно прошли те времена, когда информация хранилась только в простых "плоских" файлах (flat files) в двоичном и текстовом виде. Эволюция систем обработки данных привела к появлению многочисленных баз данных (БД), хранящих информацию в собственных форматах. Основное отличие базы данных от обычного файла с данными заключается в том, что база данных, помимо пользовательской информации, также содержит метаданные, описывающие хранимые в ней сведения.

Многозадачность
Современные операционные системы в том или ином виде поддерживают многозадачность (multitasking) даже на однопроцессорных компьютерах, не говоря уже о многопроцессорных системах. Операционная система (ОС) производит запуск системных и пользовательских программ в виде независимых процессов (process), выделяя для каждого из них отдельный участок оперативной памяти и другие ресурсы. Каждый процесс нумеруется своим уникальным числовым идентификатором процесса (Рrocess Identifier, PID).

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

Всемирная Паутина и программирование
Всемирная Паутина (World Wide Web, WWW или просто Web) стала важнейшим технологическим достижением в области обработки информации. Она не только сделала доступ к ресурсам сети Интернет простым и удобным для пользователей, но стимулировала развитие многих информационных технологий, а также утвердила в практике программирования новые подходы к работе с информационными ресурсами.

Perl для системного администрирования

По мере роста сложности рассматриваемой информации растет и важность служб каталогов, которые мы используем для доступа к этой информации. Хорошо, если системные администраторы будут не просто использовать эти службы, но и создавать собственные инструменты для работы с ними. В этой главе рассказано о некоторых из наиболее популярных служб, таких как LDAP и ADSI, а также показано, как с ними работать при помощи Perl.

Структура раздела
Мы начнем с рассмотрения принципиальных различий между файловыми системами каждой из операционных систем. Затем мы рассмотрим процесс исследования файловой системы средствами Perl и расскажем, когда это может оказаться полезным. И, наконец, мы узнаем, как работать с дисковыми квотами из Perl.

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

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

Информация о пользователях в Unix
При обсуждении этой темы мы будем иметь дело лишь с несколькими ключевыми файлами, поскольку в них хранится постоянная информация о пользователе. Говоря «постоянная», я имею в виду атрибуты, которые существуют до тех пор, пока существует пользователь, сохраняясь даже тогда, когда пользователь не зарегистрирован в системе. Иначе я буду называть это учетной записью. Если в системе у вас есть учетная запись, вы можете зарегистрироваться и стать пользователем данной системы.

Управление процессами в MacOS
«Управление» - слишком громко сказано для функциональных возможностей, предоставляемых MacOS, поскольку последняя является не многопользовательской, а просто многозадачной операционной системой. Используя модуль Mac::Processes, можно взаимодействовать с менеджером процессов Macintosh (Macintosh Process Manager) при помощи MacOS Toolbox API для управления процессами.

Файлы узлов
Первый подход, используемый для решения проблемы связи IP-адресов с именами, является самым простым и очевидным: он заключается в создании специального файла, в котором хранится таблица соответствий IP-адресов и имен компьютеров. В системах Unix это файл /etc/ hosts, в MacOS это Macintosh HD:System Folder:Preferences:hosts и \$systemroot$\System32\Drivers\Etc\hosts в NT/2000. В NT/2000 также есть файл Imhosts, назначение которого несколько иное, но об этом мы поговорим позже.

Что такое каталог?
Каталоги практически всегда связаны сетью. В отличие от некоторых баз данных, расположенных на той же машине, что и их клиенты (как хорошо известный файл /etc/passwd), службы каталогов обычно предоставляются по сетям.

Взаимодействие с SQL-сервером из Perl
Существует два стандартных способа взаимодействия с SQL-сервером: DBI (DataBase Interface) и ODBC (Open DataBase Connectivity). Когда-то DBI был стандартом Unix, a ODBC - стандартом Win32, но эти границы начали расплываться после того, как ODBC стал доступным в мире Unix, a DBI был перенесен на Win32. Еще сильнее стирает эти границы пакет DBD: :ODBC - DBD-модуль, «говорящий» на ODBC из DBI.

Отправка почты
Код, вызывающий sendmail, как было в нашем примере, во многих случаях будет работать отлично, но если в операционной системе не установлен агент передачи почты с именем «sendmail» (например, в NT или MacOS), он не будет работать никогда. В таких операционных системах выбор действий невелик.

Текстовые журналы
Журналы бывают разных типов, следовательно, нам нужно использовать различные подходы к их обработке. Самые распространенные журналы - полностью состоящие из строк текста. Популярные серверные пакеты, такие как Apache (веб), INN (новости Usenet) и Sendmail (электронная почта) записывают в журналы огромное количество текста. Большая часть журналов на Unix-машинах выглядит одинаково, потому что все они создаются одной и той же программой, известной под именем syslog.

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

Ссылки на подробную информацию
Очень распространенная система CVS (Concurrent Version System) - это следующий шаг наверх.

Организация данных в LDAP
До сих пор мы говорили только об одном элементе, но спрос на каталоги, содержащие только один элемент, очень мал. Как только мы станем рассматривать каталоги, содержащие много элементов, перед нами тотчас встанет вопрос, с которого начиналось данное приложение: как найти что-либо?

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

Создание/удаление баз данных и таблиц
Команда GO применяется с интерактивными клиентами баз данных и служит указанием на то, что необходимо выполнить предыдущую команду. Но это не SQL-оператор. В следующих примерах будем считать, что команду GO необходимо выполнять после каждого SQL-оператора, если используется один из таких клиентов. Кроме того, комментарии в SQL будут обозначаться при помощи «- -».

Perl практика

Практические примеры применения различных свойств языка

Список и массив
Список - это упорядоченные скалярные данные. Массив - переменная, которая содержит список.

Модификаторы выражений
Оператор читается справа налево. Другие формы с модификаторами: выражение1 unless выражение2; выражение1 while выражение2; выражение1 until выражение2;

Простейшая CGI-программа
Используется модуль CGI.pm. Программа, которая запрос: serv.edu.kiae.ru/~gds/cgi-bin/test.cgi?flavor=mint:

Блоки операторов
{ 1_operator; 2_operator; 3_operator; ... last_operator; # with or witout ";" }

Доступ к каталогам
Пример: chdir("/etc") die "cannot cd to /etc ($!)"; print "where do you want to go? "; chomp($where = STDINgt); if(chdir $where) { # OK } else { # NOT }

Открытие и закрытие дескрипторов файлов
Дескрипторы "по умолчаниюquot: STDIN, STDOUT, STDERR. Открытие декриптора файла на чтение: open(ДЕСКРИПТОР,"имя"); Открытие декриптора файла на запись: open(ДЕСКРИПТОР,"имя");

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

Что такое хеш
Хеш представляет собой набор скалярных данных, отдельные элементы которого выбираются по индексному значению. Индексные значения хеша - произвольные скаляры (ключи). Отдельные элементы хеша не стоят в каком-то определенном порядке. Порядок хранения пар ключ-значение изменить нельзя.

Ввод из STDIN
Операция чтения скалярного значения из STDINgt в $_ и использование этого значения в качестве переменной цикла: while(STDINgt) { # как "while(defined($_ = STDINgt))" chomp; # как "chomp($_)" # другие опрации с $_ }

Программа Hello
#!/usr/local/bin/perl -w use 5.004; use strict; print "What is you name? "; $main::name = STDINgt ; chomp($main::name); print "Hello, $main::name! \n";

Основные понятия
Регулярное выражение представляет собой образец - шаблон - который сопоставляется со строкой. Сопоставление со строкой дает либо успешный результат, либо неудачный.

Скалярные типы данных
Скаляр - это простейший тип данных Perl. В Perl числа и строки используются практически как взаимозаменяемые понятия.

Основы компьютерной музыки

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

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

Инструмент сведение и аранжировка
Аранжировка (оркестровка, инструментовка) неразрывно связана с сочинением музыки. Она является заключительной стадией творческого процесса. Без этапа аранжировки никакое музыкальное произведение не может существовать. Конечно, компьютерная аранжировка существенно отличается от аранжировки для живого оркестра. Но это отличие чисто техническое. Не каждый исполнитель на каком-либо инструменте сможет сыграть то, что вы "натворили". По разным причинам.

Программа Band-in-a-Box 3.1
С таким понятием, как Saund, мы надеемся, все понятно, хотя можно добавить несколько слов по этому поводу. Осуществить настоящий Saund в исполнений компьютера довольно сложно. В чем же дело? А дело в том, что "живые" музыканты никогда не играют абсолютно точно с точки зрения метронома и агогики, всегда есть какие-либо мельчайшие отклонения, которые и создают этот самый Saund. Попробуем пояснить: предположим, что мелодическая линия в определенном отрезке представляет собой последовательность восьмых нот.

Профессиональная виртуальная студия Cubase VST
Итак, прежде всего Cubase — это высококачественный MIDI-секвенсор, который позволяет производить любые операции с MIDI-информацией. Cubase осуществляет поддержку записи и воспроизведения 16-, 24- и 32-битных аудиоформатов, включая звук аналоговых магнитофонных записей. Cubase поддерживает ASIO-аудиокарты, которые являются одной из последних разработок и позволяют использовать программу в качестве современного синтезатора.

Работа с музыкальным материалом в программе Cubase
При создании аранжировки на синтезаторах типа PSR с автоаккомпанементом не всегда можно добиться приемлемого качества. В чем же это выражается? Дело, во-первых, в том, что исполнитель не в состоянии играть абсолютно точно ритмически, всегда есть или опережение, или отставание. Сам по себе этот факт не является чем-то недопустимым (в известных пределах), здесь все зависит от художественной задачи. Но в данном случае мы будем говорить о созданной аранжировке с применением автоаккомпанемента.

Работа в аудиоредакторах
Осваивать работу с аудио мы начнем с записи уже созданной нами MIDI-аранжировки. Для того чтобы сделать запись в аудиоформате, необходимо прежде всего установить определенные системные настройки в программе. В программе Cubase VST 32. 5.0 эти настройки находятся в меню Options/Audio Setup. После того как вы активизируете данный пункт меню, откроется диалоговое окно Audio System Setup

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

Приложение
Гармонизуйте данные мелодии и басы с № 1 по № 15 только средствами основных трезвучий и D7 в основном виде