Эта книга в первую очередь, сфокусирована не столько на изложении теоретического материала (который так или иначе уже достаточно известен специалистам, работающим в этой области), сколько на описании прикладных методов оптимизации. Перед прочтением материала рекомендуется ознакомиться с предыдущей книгой «Разгони свой сайт», чтобы представлять основные моменты и глубже проникнуть в излагаемые концепции.
И мы надеемся, что книга будет интересна как клиентским оптимизаторам со стажем, так и начинающим специалистам, желающим расширить свой кругозор.
Данный документ является частичным переводом документации InterBase 4.2. Документ содержить перевод книги SQL Statement And Function Reference, которая описывает синтаксис и использование каждой функции и инструкции InterBase SQL, дополненный главами из других разделов документации. Этот справочник описывает синтаксис и использование каждой функции и инструкции InterBase SQL. Он включает следующие темы:
Объекты и концепции базы данных* содержит краткую информацию об объектах и концепциях базы данных InterBase.
Соглашения синтаксиса* - соглашения, используемые при описании синтаксиса инструкций SQL.
Список инструкций содержит алфовитный список всех инструкций.
Список функций содержит алфовитный список всех функций.
Типы данных - список типов данных доступных в SQL инструкциях InterBase.
Обработка ошибок - список значений, которые возвращены в SQLCODE.
Обратите внимание: Некоторые функции и инструкции могут быть использованы в DSQL или ISQL. Где такое расширение доступно, это отмечено в конце подраздела Описание в разделе, посвященном описанию функции или инструкции. Если это не отмечено специально, то функция или инструкция могут быть использованы только в SQL.
От автора: В этом описании рассматривается СУБД MySQL. Руководство рассчитано на пользователей среднего уровня подготовки. Оно может быть использовано как в качестве справочного руководства по данной СУБД, так и в качестве учебника. В целях его использования в качестве справочника, в самом начале документа предусмотрено полное оглавление.
ЭТО НЕ ПЕРЕВОД ОРИГИНАЛЬНОЙ ДОКУМЕНТАЦИИ! Этот документ написан после прочтения фирменной документации, работы с пакетом и даже попыток его повалить, правда, не слишком удачных. Таким образом, в документе нашлось место и для личного мнения автора по ряду вопросов. Этот абзац мне пришлось включить на основании опыта подготовки подобной документации. Увы, описания, выстраданные кропотливым изучением программ, посчитали примитивным переводом, что говорит о том, что с ними просто не ознакомились должным образом. Я не отрицаю изучения мной оригинальной документации на пакет, но этот документ переводом не является.
Формат PDF был разработан фирмой Adobe Systems, чтобы решить проблему единства отображения и обработки полиграфической продукции в различных информационных средах (его кроссплатформенность) и довольно успешно справляется с этой задачей и по сегодняшний день. Однако со временем у этого формата появилось и иное предназначение. Универсальность этого формата спровоцировала рост его популярности, а, следовательно, увеличилось и количество публикаций, доступных в этом формате в электронном виде в Интернете.
Изначально файлы формата PDF в сознании многих людей ассоциировались именно с качественным уникальным контентом, т. к. с его помощью часто публиковались и публикуются различные отчёты, доклады, статьи, руководства и другая полезная информация. Конечно, было бы глупо упускать такой источник полезной информации. Со временем все популярные поисковые системы научились индексировать файлы PDF и ранжировать их, что автоматически поставило их наравне с привычными для нас файлами в формате HTML (веб-страницами).
Нам же важно не упустить возможную выгоду и научиться правильно оптимизировать файлы подобного рода для поисковых систем, чтобы обеспечить их лучшую видимость в результатах поиска. Долгое время файлы PDF воспринимались исключительно как файлы-архивы, для открытия которых необходимо было их загружать на компьютер и читать в сторонней программе (Например, в Adobe Reader – программе для просмотра формата PDF). Так было раньше, сейчас же многое меняется: значительно увеличиваются скорости Интернета, появляются встроенные в браузер плагины для чтения формата PDF, позволяющие просматривать файлы сразу же в браузере. Например, уже сегодня в браузере Opera можно читать файлы PDF прямо на сайте онлайн. А это всё прямое свидетельство того, что популярность этого формата в обозримом будущем будет только расти. Это теперь не только универсальный формат для хранения и редактирования полиграфии, но также и способ передачи информации в Интернете (выполняющий функции обычной веб-страницы).
В этой статье я старался систематизировать информацию, осветив как можно больше фактов, влияющих на индексацию поисковыми системами документов этого формата в Интернете, а также ответив на самые распространённые вопросы, которые возникают у веб-мастеров, использующих эти файлы на своих сайтах.
Любой веб-мастер и seo-оптимизатор должен понимать, что файл PDF - это такая же страница сайта, как и файл в формате HTML. Как правило, на этот файл ссылаются так, что он является тупиковым для поисковой системы, т. к. в нём почти никогда не содержатся ссылки на другие страницы сайта, а зря. Каждый PDF-файл (как и страница HTML) находится в индексе поисковых систем, следовательно, имеет и свой поисковый вес, передаваемый по ссылкам (вИЦ или PR, если хотите). Я настоятельно рекомендую вам в любом файле PDF, выложенным на сайте, делать ссылки на обычные HTML-страницы сайта и на другие страницы PDF (можно даже продублировать навигацию основного сайта). В данном случае вы будете только в выигрышном положении, т. к. помимо передачи поискового веса по ссылке, посетитель, скачав файл PDF с вашего сайта и ознакомившись с информацией в нём, может к вам вернуться, щёлкнув по ссылке, ведущей на ваш сайт из скачанного документа. К тому же файл PDF редко редактируется, поэтому часто сохраняется в первоначальном виде, а также как файловый архив может стремительно распространяться через различные файловые хостинги, а это, опять же, новые пользователи для вашего сайта (тот редкий случай, когда поисковая оптимизация напрямую влияет на непоисковое продвижение).
ПРОГРАММЫ ДЛЯ РАБОТЫ С ФАЙЛАМИ PDF
Для создания файлов PDF используйте программу Adobe Acrobat, т. к. она имеет целый арсенал средств, которые способны максимально качественно оптимизировать наши файлы. Несмотря на это, можно (но не рекомендуется) использовать и другие программы. Например, для создания файлов PDF вы можете использовать связку программ Adobe Pagemaker и Adobe InDesign или текстовые редакторы наподобие Word из пакета Microsoft Office или Write - из OpenOffice. Когда будете использовать текстовый редактор Word для создания документа формата PDF, то используйте теги H1, H2, H3 и другие подобные для оптимизации текста документа. Вы должны сделать полученный текст базирующимся на языке HTML, чтобы поисковые системы эффективно его индексировали.
Не используйте программы типа Photoshop и Illustrator, т. к. после обработки документа на выходе информация превращается в одно большое изображение, текст на котором не распознать поисковым системам. Однако часто случается и то, что у веб-мастера уже есть большое количество PDF-файлов, полученных от заказчика, или же специфика темы на сайте такая, что по ней есть информация в электронном виде только в этом формате. Если у вас именно такой случай, то не отчаивайтесь. Сейчас активно разрабатываются программы, способные распознавать текст на изображениях, что позволяет модифицировать текст на изображениях в обычный текст, который индексируется поисковыми системами. В России довольно успешно распознаванием текстов занимается компания ABYY. К примеру, вы можете воспользоваться их конвертером Abbyy PDF Transformer. Хочу сразу заметить, что это довольно уникальный продукт, аналогов которому почти нет. В его возможности входит конвертирование текста на картинках PDF в текст, способный индексироваться поисковыми системами.
Несколько слов, я думаю, можно сказать и про программы конвертеры. Если же вы решили, что по каким-то причинам формат PDF на сайте вас не очень устраивает, а контент вашего сайта состоит, в основном, из файлов PDF, то у вас есть возможность переконвертировать эти файлы в формат HTML, используя различные бесплатные и платные PDF конвертеры.
Вот небольшой список таких конвертеров:
* Advanced PDF to HTML
* Comfortable PDF to HTML
* Easy PDF to HTML
* Adobe Acrobat Pro Extended – это конвертер компании Adobe, но известно, что оптимизаторы испытывают сложности с этой программой.
Теперь, я думаю, самое время поделиться с вами секретами оптимизации файла PDF для поисковых систем.
ИЗОБРАЖЕНИЯ
Не используйте слишком много изображений или изображения большого размера. Картинки хоть и улучшают внешний вид, однако также увеличивается размер файла и время его загрузки. Как и на HTML-странице, если вы поставите много изображений (особенно неоптимизированных), то это потребует больше времени для их загрузки в браузер. Но помимо оптимизации размера изображений PDF-документа, необходимо также оптимизировать и подписи (альтернативный текст) к ним. У каждого изображения документа должна быть своя подпись, как к картинкам обычной HTML-страницы.
РАЗМЕР ФАЙЛА
Нужно всегда помнить, что поисковые системы не индексируют файлы, которые слишком много весят. Например, поисковая система "Яндекс" не будет индексировать файлы весом больше, чем 10 Мб, отсюда следует правило, что файл PDF не может быть больше 10 Мб.
Если говорить про оптимальный размер PDF-файла, то многие seo-оптимизаторы считают его величину в пределах 500 - 1000 Кб, т. к. с файлами именно таких размеров происходит меньше всего ошибок, связанных с индексацией файлов.
Для оптимизации размера в программе Adobe Acrobat есть специальная функция: Advanced > PDF Optimizer.
Внимание! При создании PDF-документа в любом редакторе обращайте внимание на версию получаемого файла. Рекомендуемая версия – 1.5 и ниже, т. к. такой файл гарантированно будет читаться всеми программами для просмотра PDF и роботами поисковых систем. Формат PDF позволяет оптимизировать также и копию документа, поэтому по возможности оптимизируйте и её.
ТЕКСТ ФАЙЛА
Старайтесь избегать большого количества текста в одном файле PDF, дробите один файл на несколько файлов, причём, линкуйте их ссылками внутри каждого такого документа (так, как бы вы это делали с обычными HTML-документами).
Оптимизируйте текст файла PDF под конкретные ключевые запросы, а здесь надо уделять внимание таким же показателям, как и на обычной веб-странице (плотность ключевых слов не выше 5% и прочим). Если вы хотите получить хорошо индексируемый и релевантный поисковым запросам контент PDF-документа, вы должны стараться избегать нагромождения страниц в нём. При внутренней оптимизации текста, а именно: заголовков и подзаголовков, ключевых слов и фраз, необходимых для вашего документа, - будьте очень осторожны, чтобы файл не выглядел заспамленным и не вылетел, в итоге, из индекса поисковых систем.
Если ваш файл PDF разбит на несколько частей, то настройте порядок отображения этих частей. От порядка чтения документа зависит то, какая информация будет предоставлена поисковому роботу сначала, а какая - потом. Помните, что наибольшую поисковую значимость имеют ключевые слова, находящиеся ближе к началу документа, поэтому если в документе обратное, то вам стоит перестроить логическую последовательность частей вашего PDF документа, чтобы выделить наиболее важные части и улучшить их поисковую видимость в Интернете.
Сделайте оглавление (поисковую карту документа), каждый пункт этого оглавления оформите ссылкой (закладкой) внутри PDF документа, для каждой ссылки пропишите ключевые слова в описании ссылки. Этот приём наиболее эффективен для документов, состоящих из нескольких логический частей и с большим количеством страниц – он обеспечивает качественную внутреннюю перелинковку документа, позволяющую эффективно индексировать документ поисковым роботам.
Если вы хотите создать справочник, руководство или другой документ, предполагающий большой объём информации в одном файле, то я рекомендую создавать подобные документы в формате DjVu. Страницы документов (контент) в этом формате не индексируются поисковыми системами. Но если по каким-то причинам у вас не получается уменьшить размер PDF-файлов и разбить их на несколько отдельных файлов, то можно воспользоваться очень удобной функцией в программе Adobe Reader - Optimize for Fast Web View, позволяющей просматривать уже загрузившиеся страницы документа, не дожидаясь его окончательной загрузки. Это удобно для тех пользователей, кто будет просматривать ваш PDF-файл непосредственно на вашем сайте в режиме онлайн.
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ (МЕТАПОЛЯ)
Очень важно заполнить всю дополнительную информацию о вашем файле PDF. Уделите особое внимание таким тегам как: Title (заголовок), Author (автор материала), Subject (тема), Keywords (ключевые слова документа), Descriptions (описание PDF-документа) и Copyright (авторские права). Все эти настройки можно найти в программе Adobe Acrobat в меню File > Document Properties. Метаданные файла PDF имеют схожее происхождение с метатегами файлов HTML, так что уделяйте им особое внимание при оптимизации.
КОДИРОВКА, ШРИФТЫ И РАСПОЛОЖЕНИЕ ФАЙЛА
Несколько слов нужно сказать и про оптимизацию шрифтов. Не забывайте включать в сам файл все необходимые (нестандартные) шрифты. Довольно часто для декоративных целей используются самые разнообразные и редкие полиграфические шрифты, которые могут плохо восприниматься поисковыми системами, поэтому, по возможности, старайтесь пользоваться стандартными шрифтами (Arial, Helvetica, Sans-Serif, Times New Roman и другими), которые хорошо индексируются поисковыми системами. Их плюс в том, что они присутствуют по умолчанию в любой операционной системе, поэтому из документа PDF их можно спокойно исключить, уменьшив тем самым размер файла.
Шрифты, которые не были добавлены в PDF-документ или отсутствуют в операционной системе, будут отображаться тем шрифтом, который имеется (самым близким по значению), что может привести к нежелательным последствиям, а именно к увеличению или уменьшению числа страниц, количества символов в строках, межстрочного интервала и других проблем метрики.
Довольно болезненный параметр для поисковых систем - кодировка файла. Если поисковая система не сумеет определить кодировку вашего PDF файла самостоятельно, то документ вообще не будет проиндексирован, поэтому всегда проверяйте, указана ли она. Желательно использовать самые известные и популярные кодировки.
Ваш файл PDF, как и обычная страница файла, должен быть максимально близок к корню сайта. Ссылайтесь на них ближе к главной странице, не пытайтесь засунуть его глубоко в структуру сайта, чтобы не понизить поисковую значимость вашего PDF документа.
Не давайте вашим документам в формате PDF слишком сложные имена. Упрощайте их. Несколько слов в названии самого файла разделяйте символом "_". Например: imya_documenta.pdf. Также для разделителя можно использовать и символ "-", но я рекомендую использовать первый вариант.
После всех проделанных операций по оптимизации можете выкладывать файл на сайт. Поисковые системы найдут файл, проиндексируют его и начнут выводить в результатах поиска, и если материал интересен, начнётся самораскрутка его среди посетителей - на файл начнут ссылаться, скачивать и публиковать его в других местах (а сам файл будет с ссылками на ваш сайт). Неплохо, не правда ли?
Напоследок, предоставлю вам пару ссылок, которые могут быть полезны в связи с опубликованным материалом:
http://ru.wikipedia.org/wiki/PDF - общая информация о файле PDF
http://get.adobe.com/reader/ - последняя версия Adobe Reader
http://www.adobe.com/products/acrobat/ - последняя версия Adobe Acrobat
http://www.abbyy.ru/pdftransformer/ - последняя версия Abbyy PDF Transformer
http://www.taurion.ru/acrobat - самоучитель работы в программе Adobe Acrobat
В этом обзоре я постарался ответить на наиболее распространённые вопросы по оптимизации файла PDF, которые задают люди, занимающиеся раскруткой сайтов. Но если у вас появились вопросы или что-то осталось непонятным, то, пожалуйста, сообщайте об этом! Буду рад любым отзывам от вас! Спасибо!
Использование функции file_get_contents() наиболее предпочтительно в случае необходимости получить содержимое файла целиком, поскольку для улучшения производительности функция использует алгоритм 'memory mapping' (если поддерживается операционной системой).
file_get_contents
Функция доступна с PHP 4 >= 4.3.0
file_get_contents -- Получает содержимое файла в виде одной строки
Данная функция идентична функции file() с той только разницей, что содержимое файла возвращается в строке. Замечание: Эта функция безопасна для обработки данных в двоичной форме.
Подсказка: Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция "fopen wrappers". Смотрите более подробную информацию об определении имени файла в описании функции fopen(), а также список поддерживаемых протоколов URL в Прил. J. Замечание: Поддержка контекста была добавлена в PHP 5.0.0.
Пример выборки html контента с помощью PHP и file_get_contents
Примечание - большая часть написанного здесь текста с примерами взята по памяти (пару лет назад изучал достаточно подробно, поэтому может что-то в алгоритмах не работать - я ведь их не копировал откуда-то, а прямо тут же и писал, так что за синтаксические ошибки не пинайте) - на данный момент я активно OLE не пользуюсь (не из-за каких-то проблем с самим OLE, а из-за отсутствия надобности в его использовании в текущий момент).
Основные преимущества, благодаря которым OLE активно используется:
* Для вызывающей базы "по барабану" - какой тип вызываемой базы (DBF или SQL)
* Объектами вызываемой базы можно управлять всеми известными методами работы с объектами в 1С (т.е. со справочниками работают методы ВыбратьЭлементы(), ИспользоватьДату() и т.п., с документами - ВыбратьДокументы() и т.п.), соответственно, можно напрямую решить - стоит отрабатывать конкретные объекты базы OLE или пропустить их.
Пример 1. Присоединение к базе 1С через OLE.
БазаОле=СоздатьОбъект("V77.Application"); // Получаем доступ к OLE объекту 1С
Локальная версия (на одного пользователя): V77L.Application
Сетевая версия: V77.Application
Версия SQL: V77S.Application
Далее вместо термина "вызываемая база" будет написано просто "база OLE", а вместо термина "вызывающая база" - "местная база"
Теперь, мы должны знать несколько параметров для запуска базы OLE: Каталог базы, имя пользователя и пароль. Ну, наверное, еще и желание запустить 1С в монопольном режиме :)
Комментарий: функции СокрЛП() стоят в примере на случай, если пользователь захочет указанные выше переменные сделать в форме диалога, а проблема при этом состоит в том, что в алгоритм программа передаст полное значение реквизита (т.е. допишет в конце значения то количество пробелов, которое необходимо для получения полной длины строки (указана в свойствах реквизита диалога)).
Пример 2. Доступ к объектам базы OLE.
Запомните на будущее как непреложный факт:
1. Из местной базы в базу OLE (и, соответственно, наоборот) напрямую методом присвоения можно перенести только числовые значения, даты и строки ограниченной длины!!! Т.е. местная база поймет прекрасно без дополнительных алгоритмов преобразования полученного значения только указанные типы значений. Кроме того, под ограничением строк подразумевается проблемы с пониманием в местной базе реквизитов объектов базы OLE типа "Строка неограниченной длины". К этому же еще надо добавить и периодические реквизиты. Естественно, под методом присвоения подразумеваются и попытки сравнить объекты разных баз в одном условии (например, в алгоритмах "Если" или "Пока" и т.п.).
2. Есть проблемы при попытке перенести "пустую" дату - OLE может ее конвертировать, например, в 31.12.1899 года и т.п. Поэтому вам лучше заранее выяснить те значения, которые могут появится в местной базе при переносе "пустых" дат, чтобы предусмотреть условия преобразования их в местной базе.
A) Доступ к константам базы OLE:
Б) Доступ к справочникам и документам базы OLE (через функцию "CreateObject"):
После создания объекта справочника или документа к ним применимы все методы, касающиеся таких объектов в 1С:
Заметьте, что если вместо "Сообщить(Спр.Наименование)" вы укажете "Сообщить(Спр.ТекущийЭлемент())", то вместо строкового/числового представления этого элемента программа выдаст вам в окошке сообщение "OLE". Именно это я и имел в виду, когда говорил, что напрямую мало что можно перенести. Т.е. не будут работать следующие методы (ошибки 1С не будет, но и результат работы будет нулевой). Рассмотрим следующий пример:
Однако, сработает следующий метод:
Отсюда вывод: возможность доступа к объектам базы 1С через OLE требуется, в основном, только для определенной задачи - получить доступ к реквизитам определенного элемента справочника или документа. Однако, не забываем, что объекты базы OLE поддерживают все методы работы с ними, в т.ч. и "Новый()", т.е. приведем пример противоположный предыдущему:
В) Доступ к регистрам базы OLE (Не сложнее справочников и документов):
Г) Доступ к перечислениям базы OLE (аналогичен константе):
ЗначениеПеречисленияOLE = БазаОле.Перечисление.Булево.НеЗнаю; // :)
Заметьте, что пользы для местной базы от переменной "ЗначениеПеречисленияOLE" особо-то и нет, ведь подобно справочнику и документу перечисление также напрямую недоступно для местной базы. Пожалуй, пример работы с ними может быть следующим (в качестве параметра условия):
По аналогии со справочниками и документами работает объект "Периодический", план счетов работает по аналогии с ВидомСубконто, ну и далее в том же духе… Отдельную главу посвятим запросу, а сейчас… стоп. Еще пункт забыл!
Ж) Доступ к функциям и процедурам глобального модуля базы OLE!
Как же я про это забыл-то, а? Поскольку при запуске базы автоматически компилируется глобальный модуль, то нам становятся доступны функции и процедуры глобального модуля (поправлюсь - только те, у которых стоит признак "Экспорт"). Плюс к ним еще и различные системные функции 1С. А доступны они нам через функцию 1С OLE - EvalExpr(). Приведем примеры работы с базой OLE:
На самом деле, в последней строке примера я исхитрился и забежал немного вперед. Дело в том, что как и запрос (см. отдельную главу), так и EvalExpr() выполняются внутри базы OLE, причем команды передавается им обычной строкой, и поэтому надо долго думать, как передать необходимые ссылки на объекты базы OLE в строке текста местной базы. Так что, всегда есть возможность поломать голову над этим…
Алгоритмы преобразования объектов в "удобоваримый вид" между базами.
Ясно, что алгоритмы преобразования нужны не только для переноса объектов между и базами, но и для такой простой задачи, как попытки сравнить их между собой.
И еще раз обращу внимание: ОБЪЕКТЫ ОДНОЙ БАЗЫ ПРЕКРАСНО ПОНИМАЮТ ДРУГ ДРУГА, ПРОБЛЕМЫ ВОЗНИКАЮТ ТОЛЬКО ТОГДА, КОГДА ВЫ НАЧИНАЕТЕ СВЯЗЫВАТЬ МЕЖДУ СОБОЙ ОБЪЕКТЫ РАЗНЫХ БАЗ, т.е. команда
будет прекрасно работать без ошибок. Не забывайте это, чтобы не перемудрить с алгоритмами!
Итак, повторяюсь, что напрямую перенести, да и просто сравнить можно только даты (причем не "пустые"), числа и строки ограниченной длины. Итак, как же нам сравнить объекты разных баз (не числа, не даты, не строки), т.е. как их преобразовать в эту самую строку/число/дату.
А) Преобразование справочников/документов базы OLE (если есть аналогичные справочники/документы в местной базе). В принципе, преобразование их было уже рассмотрено в примерах выше и сводится к поиску их аналогов в местной базе. Могу еще раз привести пример, заодно с использованием регистров:
Б) Преобразование перечислений и видов субконто (подразумевается, что в обоих базах есть аналогичные перечисления и виды субконто). Вся задача сводится к получению строкового или числового представления перечисления или вида субконто.
Не поймите это как прямую команду воспользоваться функцией Строка() или Число() :)) Нет. Для этого у нас есть обращение к уникальному представлению перечисления и вида субконто - метод Идентификатор() или ЗначениеПоНомеру(). Второй вариант не очень подходит, так как зачастую в разных базах даже перечисления бывают расположены в другом порядке, а вот идентификаторы стараются держать одинаковыми в разных базах. Отсюда вывод, пользуйтесь методом Идентификатор(). Кстати, не путайте вид субконто с самим субконто! Привожу пример преобразования:
То же самое относится и к плану счетов - принцип у него тот же, что и у вида субконто…
В) Преобразование счетов:
Во многом объект "Счет" аналогичен объекту "Справочник". Отсюда и пляшем:
Работа с запросами и EvalExpr().
Наконец-то добрались и до запросов. Надо пояснить несколько вещей, касаемых запросов (да и EvalExpr() тоже). Самое главное - компиляция текста OLE-запроса (т.е. разбор всех переменных внутри запроса), как и сами OLE-запросы выполняются внутри базы OLE и поэтому ни одна переменная, ни один реквизит местной базы там недоступны, да и запрос даже не подозревает, что его запускают по OLE из другой базы!!! Поэтому, чтобы правильно составить текст, иногда требуется не только обдумать, как передать параметры запроса в базу OLE, но и обдумать, что нужно добавить в глобальный модуль той самой OLE-базы, чтобы как-то собрать для запросы переменные!
1. Поскольку сам текст запроса и функции EvalExpr() является по сути текстом, а не набором параметров, то напрямую передать ему ссылку на элемент справочника, документ, счет и т.п. нельзя. Исключение может быть составлено для конкретных значений перечислений, видов субконто, констант, планов счетов и т.п.
2. Хоть и многим и так понятно, что я скажу дальше, но я все-таки уточню: при описании переменных в тексте запроса не забывайте, что объекты базы надо указывать напрямую, без всяких префиксов типа "БазаОле".
3. Отрабатывать запрос сложно тем, что ошибки, например, при компиляции напрямую не увидеть. Поэтому начинаем пошагово готовится к отработке запроса в базе OLE.
Вначале допишем в глобальном модуле базы OLE немного строк, которые нам помогут в работе:
Теперь начинаем потихоньку писать сам запрос. Что мы имеем:
В форме диалога местной базы несколько реквизитов диалога (либо местные переменные):
* Даты периода (НачДата и КонДата)
* Элементы справочников для фильтрации (ВыбТовар, ВыбФирма, ВыбКлиент, и т.д.)
* Какие-либо флажки (ТолькоЗамерзающийЗимойТовар , ..)
Мы начинаем писать запрос и сразу попадаем в такую ловушку:
ТекстЗапроса = " Период с НачДата по КонДата; ";
Вроде все в порядке, но такой запрос не выполнится в базе OLE, так как там понятия не имеют, что такое НачДата и КонДата :)) Ведь эти переменные действительны только для местной базы! Переписываем запрос заново:
Казалось бы все очень просто. По аналогии - если уникальность для товаров ведется по наименованию, то простой заменой слова "код" на "наименование" мы решаем вопрос и здесь. Теперь рассмотрим, когда мы выбрали группу, т.е. текст условия должен будет выглядеть так:
И здесь, правда можно проблему решить "двумями путями" :)) Первый пусть - когда мы имеем дело с двухуровне вымсправочником. Тогда проблема группы решается также просто, как и в 1-м варианте:
А если справочник очень даже многоуровневый? Вот для этого мы и используем написанную ранее функцию. Предположим, что список значений запроса с индексом массива " 1 " мы будем использовать для хранения подобных значений (например, хранить в нем группы товаров, клиентов) для хитрых условий. Итак, например, в ВыбТовар у нас указана группа товаров, а в ВыбКлиент - группа клиентов, которым мы товары группы ВыбТовар продавали. Кроме того, мы должны пропустить накладные возвратов поставщикам, и не забыть, что товары надо еще отбирать по флажку ТолькоЗамерзающийЗимойТовар:
Ну, а с реквизитами запроса разбираемся так же, как указано было выше в предыдущих разделах… И не забываем, что кроме хранения конкретных значений, можно использовать другие списки значений запроса. Например, можно заполнить какой-либо список значений запроса списком клиентов и использовать его в запросе:
Для программирования расширенных хранимых процедур Microsoft предоставляет ODS (Open Data Service) API набор макросов и функций, используемых для построения серверных приложений позволяющих расширить функциональность MS SQL Server 2000.
Расширенные хранимые процедуры - это обычные функции написанные на С/C++ с применением ODS API и WIN32 API, оформленные в виде библиотеки динамической компоновки (dll) и призванные, как я уже говорил, расширять функциональность SQL сервера. ODS API предоставляет разработчику богатый набор функций позволяющих передавать данные клиенту, полученные от любых внешних источников данных (data source) в виде обычных наборов записей (record set). Так же, extended stored procedure может возвращать значения через переданный ей параметр (OUTPUT parametr).
Как работают расширенные хранимые процедуры.
* Когда клиентское приложение вызывает расширенную хранимую процедуру, запрос передаётся в TDS формате через сетевую библиотеку Net-Libraries и Open Data Service ядру MS SQL SERVER.
* SQL Sever находит dll библиотеку ассоциированную с именем расширенной хранимой процедуры и загружает её в свой контекст, если она не была загружена туда ранее, и вызывает расширенную хранимую процедуру, реализованную как функцию внутри dll.
* Расширенная хранимая процедура выполняет на сервере необходимые ей действия и передаёт набор результатов клиентскому приложению, используя сервис предоставляемый ODS API.
Особенности расширенных хранимых процедур.
* Расширенные хранимые процедуры - это функции выполняющиеся в адресном пространстве MS SQL Server и в контексте безопасности учётной записи под которой запущена служба MS SQL Server;
* После того, как dll библиотека с расширенными хранимыми процедурами была загружена в память, она остаётся там до тех пор, пока SQL Server не будет остановлен, или пока администратор не выгрузит её принудительно, используя команду :
DBCC DLL_name (FREE).
* Расширенная хранимая процедура запускается на выполнение так же, как и обычная хранимая процедура:
EXECUTE xp_extendedProcName @param1, @param2 OUTPUT
@param1 входной параметр
@param2 входной/выходной параметр
Внимание!
Так как расширенные хранимые процедуры выполняются в адресном пространстве процесса службы MS SQL Server, любые критические ошибки, возникающие в их работе, могут вывести из строя ядро сервера, поэтому рекомендуется тщательно протестировать Вашу DLL перед установкой на рабочий сервер.
Создание расширенных хранимых процедур.
Расширенная хранимая процедура эта функция имеющая следующий прототип:
Параметр pSrvProc указатель на SRVPROC структуру, которая является описателем (handle) каждого конкретного клиентского подключения. Поля этой структуры недокументированны и содеражат информацию, которую библиотека ODS использует для управления коммуникацией и данными между серверным приложением (Open Data Services server application) и клиентом. В любом случае, Вам не потребуется обращаться к этой структуре и тем более нельзя модифицоравать её. Этот параметр требуется указывать при вызове любой функции ODS API, поэтому в дальнейшем я небуду останавливаться на его описании.
Использование префикса xp_ необязательно, однако существует соглашение начинать имя расширенной хранимой процедуры именно так, чтобы подчеркнуть отличие от обычной хранимой процедуры, имена которых, как Вы знаете, принято начинать с префикса sp_.
Так же следует помнить, что имена расширенных хранимых процедур чувствительны к регистру. Не забывайте об этом, когда будете вызвать расширенную хранимую процедуру, иначе вместо ожидаемого результата, Вы получите сообщение об ошибке.
Если Вам необходимо написать код инициализации/деинициализации dll, используйте для этого стандартную функцию DllMain(). Если у Вас нет такой необходимости, и вы не хотите писать DLLMain(), то компилятор соберёт свою версию функции DLLMain(), которая ничего не делает, а просто возвращает TRUE. Все функции, вызываемые из dll (т.е. расширенные хранимые процедуры) должны быть объявлены, как экспортируемые. Если Вы пишете на MS Visual C++ используйте директиву __declspec(dllexport). Если Ваш компилятор не поддерживает эту директиву, опишите экспортируемую функцию в секции EXPORTS в DEF файле.
Итак, для создания проекта, нам понадобятся следующие файлы:
* Srv.h заголовочный файл, содержит описание функций и макросов ODS API;
* Opends60.lib файл импорта библиотеки Opends60.dll, которая и реализует весь сервис предоставляемый ODS API.
Microsoft настоятельно рекомендует, чтобы все DLL библиотеки реализующие расширенные хранимые процедуры экспортировали функцию:
Когда MS SQL Server загружает DLL c extended stored procedure, он первым делом вызывает эту функцию, чтобы получить информацию о версии используемой библиотеки.
Для написания своей первой extended stored procedure, Вам понадобится установить на свой компьютер:
- MS SQL Server 2000 любой редакции (у меня стоит Personal Edition). В процесе инсталляции обязательно выберите опцию source sample
- MS Visual C++ (я использовал версию 7.0 ), но точно знаю подойдёт и 6.0
Установка SQL Server -a нужна для тестирования и отладки Вашей DLL. Возможна и отладка по сети, но я этого никогда не делал, и поэтому установил всё на свой локальный диск. В поставку Microsoft Visual C++ 7.0 редакции Interprise Edition входит мастер Extended Stored Procedure DLL Wizard. В принципе, ничего сверх естественного он не делает, а только генерирует заготовку шаблон расширенной хранимой процедуры. Если Вам нравятся мастера, можете использовать его. Я же предпочитаю делать всё ручками, и поэтому не буду рассматривать этот случай.
Теперь к делу:
- Запустите Visual C++ и создайте новый проект - Win32 Dynamic Link Library.
- Включите в проект заголовочный файл - #include <srv.h>;
- Зайдите в меню Tools => Options и добавьте пути поиска include и library файлов. Если , при установке MS SQL Server, Вы ничего не меняли, то задайте:
- C:Program FilesMicrosoft SQL Server80ToolsDevToolsInclude для заголовочных файлов;
- C:Program FilesMicrosoft SQL Server80ToolsDevToolsLib для библиотечных файлов.
- Укажите имя библиотечного файла opends60.lib в опциях линкера.
На этом подготовительный этап закончен, можно приступать к написанию своей первой extended stored procedure.
Постановка задачи.
Прежде чем приступать к программированию, необходимо чётко представлять с чего начать, какой должен быть конечный результат, и каким способом его добиться. Итак, вот нам техническое задание:
Разработать расширенную хранимую процедуру для MS SQL Server 2000, которая получает полный список пользователей зарегистрированных в домене, и возвращает его клиенту в виде стандартного набора записей (record set). В качестве первого входного параметра функция получает имя сервера содержащего базу данных каталога (Active Directory), т.е имя контролера домена. Если этот параметр равен NULL, тогда необходимо передать клиенту список локальных групп. Второй параметр будет использоваться extended stored procedure для возварата значения результата успешной/неуспешной работы (OUTPUT параметр). Если, расширенная хранимая процедура выполнена успешно, тогда необходимо передать количество записей возвращённых в клиентский record set , если в процессе работы не удалось получить требуемую информацию, значение второго параметра необходимо установить в -1, как признак неуспешного завершения.
.
А вот шаблон расширенной хранимой процедуры, который нам предстоит наполнить содержанием:
Работа с входными параметрами
В этой главе я не хочу рассеивать Ваше внимание на посторонних вещах, а хочу сосредоточить его на работе с переданными в расширенную хранимую процедуру параметрами. Поэтуму мы несколько упростим наше техническое задание и разработаем тольку ту его часть, которая работает с входными параметрами. Но сначал не много теории
Первое действие, которое должна выполнить наша exteneded stored procedure , - получить параметры, которые были переданы ей при вызове. Следуя приведённому выше алгоритму нам необходимо выполнить следующие действия:
- Определить кол-во переданных параметров;
- Убедится, что переданные параметры имеют верный тип данных;
- Убедиться, что указанный OUTPUT параметр имеет достаточную длину, для сохранения в нём значения возвращаемого нашей extended stored procedure.
- Получить переданные параметры;
- Установить значения выходного параметра как результат успешного/неуспешного завершения работы extended stored procedure .
Теперь рассмотрим подробно каждый пункт:
Определение количества переданных в расширенную хранимую процедуру параметров
Для получения количества переданных параметров необходимо использовать функцию:
.
При успешном завершении функция возвращает количество переданных в расширенную хранимую процедуру параметров. Если extended stored procedure была вызвана без параметров - srv_rpcparams ввернёт -1. Параметры могут быть переданы по имени или по позиции (unnamed). В любом случае, нельзя смешивать эти два способа. Попытка передачи в функцию входных параметров по имени и по позиции одновременно - приведёт к возникновению ошибки, и srv_rpcparams вернёт 0 .
[pagebreak]
Определение типа данных и длины переданых параметров
Для получения информации о типе и длине переданных параметров Microsoft рекомендует использовать функцию srv_paramifo. Эта универсальная функция заменяет вызовы srv_paramtype, srv_paramlen, srv_parammaxlen, которые теперь считаются устаревшими. Вот её прототип:
.
.
.
.
.
.
.
.
.
.
pByte - указатель на переменную получающую информацию о типе входного параметра;
pbType задаёт порядковый номер параметра. Номер первого параметра начинается с 1.
pcbMaxLen - указатель на переменную, в которую функция заносит максимальное значение длины параметра. Это значение обусловлено конкретным типом данных переданного параметра, его мы и будем использовать, чтобы убедиться втом, что OUTPUT параметр имеет достаточную длину для сохранения передаваемых данных.
pcbActualLen указатель на реальную длину параметра переданного в расширенную хранимую процедуру при вызове. Если передаваемый параметр имеет нулевую длину, а флаг pfNull устанавлен в FALSE то (* pcbActualLen) ==0.
pbData - указатель на буфер, память для которого должна быть выделена перед вызовом srv_paraminfo. В этом буфере функция размещает полученные от extended stored procedure входные параметры. Размер буфера в байтах равен значению pcbMaxLen. Если этот параметр установлен в NULL, данные в буфер не записываются, но функция корректно возвращает значения *pbType, *pcbMaxLen, *pcbActualLen, *pfNull. Поэтому вызывать srv_paraminfo нужно дважды: сначала с pbData=NULL, потом, выделив необходимый размер памяти под буфер равный pcbActualLen, вызвать srv_paraminfo второй раз, передав в pbData указатель на выделенный блок памяти.
pfNull указатель на NULL-флаг. srv_paraminfo устанавливает его в TRUE, если значение входного параметра равно NULL.
Проверка, является ли второй параметр OUTPUT параметром.
Функция srv_paramstatus() предназначена для определения статуса переданного параметра:
.
.
.
.
.
n - номер параметра переданного в расширенную хранимую процедуру при вызове. Напомню: параметры всегда нумеруются с 1.
Для возврата значения, srv_paramstatus использует нулевой бит. Если он установлен в 1 переданный параметр является OUTPUT параметром, если в 0 обычным параметром, переданным по значению. Если, exteneded stored procedure была вызвана без параметров, функция вернёт -1.
Установка значения выходного параметра.
Выходному параметру, переданному в расширеную хранимую можно передать значение используя функцию srv_paramsetoutput. Эта новая функция заменяет вызов функции srv_paramset, которая теперь считается устаревашай, т.к. не поддерживает новые типы данных введённые в ODS API и данные нулевой длины.
.
.
.
.
.
.
.
.
n - порядковый номер параметра, которому будет присвоено новое значение. Это должен быть OUTPUT параметр.
pbData указатель на буфер с данными, которые будут посланы клиенту для установки значения выходного параметра.
cbLen длина буфера посылаемых данных. Если тип данных переданного OUTPUT параметра определяет данные постоянной длины и не разрешает хранение значения NULL (например SRVBIT или SRVINT1), то функция игнорирует параметр cbLen. Значение cbLen=0 указывает на данные нулевой длины, при этом парметр fNull должен быть установлен в FALSE.
fNull установите этот его в TRUE, если возвращаемому параметру необходимо присвоить значение NULL, при этом значение cbLen должно быть равно 0, иначе функция завершится с ошибкой. Во всех остальных случаях fNull=FALSE.
В случае успешного завершения функция возвращает SUCCEED. Если возвращаемое значение равно FAIL, значит вызов был неудачным. Всё просто и понятно
Теперь мы достаточно знаем, для того чтобы написать свою первую расширенную хранимую процедуру, которая будет возвращать значение через переданный ей параметр.Пусть, по сложившейся традиции, это будет строка Hello world! Отладочну версию примера можно скачать здесь.
. Не рассмотренными остались функции srv_sendmsg и srv_senddone. Функция srv_sendmsg используется для посылки сообщений клиенту. Вот её прототип:
msgtype определяет тип посылаемого клиенту сообщения. Константа SRV_MSG_INFO обозначает информационное сообщение, а SRV_MSG_ERROR сообщение об ошибке;
msgnum номер сообщения;
class - степень тяжести возникшей ошибки. Информационные сообщения имеют значение степени тяжести меньшее или равное 10;
state номер состояния ошибки для текущего сообщения. Этот параметр предоставляет информацию о контексте возникшей ошибки. Допустимые значения лежат в диапазоне от 0 до 127;
rpcname в настоящее время не используется;
rpcnamelen - в настоящее время не используется;
linenum здесь можно указать номер строки исходного кода. По этому значению, в последствие будет легко установить в каком месте возникла ошибка. Если Вы не хотите использовать эту возможность, тогда установите linenum в 0;
message указатель на строку посылаемую клиенту;
msglen определяет длину в байтах строки сообщения. Если это строка заканчивается нулевым символом, то значение этого параметра можно установить равным SRV_NULLTERM.
Возвращаемыме значения:
- в случае успеха SUCCEED
- при неудаче FAIL.
В процессе работы расширенная хранимая процедура должна регулярно сообщать клиентскому приложению свой статус, т.е. посылать сообщения о выполненных действиях. Для этого и предназначена функция srv_senddone:
status - статус флаг. Значение этого параметра можно задавать использую логические операторы AND и OR для комбинирования констант приведённых в таблице:
Status flag Описание
SRV_DONE_FINAL Текущий набор результатов является окончательным;
SRV_DONE_MORE Текущий набор результатов не является окончательным следует ожидать очердную порцию данных;
SRV_DONE_COUNT Параметр count содержит верное значение
SRV_DONE_ERROR Используется для уведомления о возникновении ошибок и немедленном завершении.
into зарезервирован, необходимо установить в 0.
count количество результирующих наборов данных посылаемых клиенту. Если флаг status установлен в SRV_DONE_COUNT, то count должен содержать правильное количество посылаемый клиенту наборв записей.
Возвращаемыме значения:
- в случае успеха SUCCEED
- при неудаче FAIL.
Установка расширенных хранимых процедур на MS SQL Server 2000
1.Скопируйте dll библиотеку с расширенной хранимой процедурой в каталог binn на машине с установленным MS SQL Server. У меня этот путь следующий: C:Program FilesMicrosoft SQL ServerMSSQLBinn;
2.Зарегистрирйте расширенную хранимую процедуру на серверt выполнив следующий скрипт:
Заключение
На этом первая часть моей статьи закончена. Теперь я уверен Вы готовы справиться с нашим техническим заданием на все 100%. В следующей статье Вы узнаете:
- Типы данных определённые в ODS API;
- Особенности отладки расширенных хранимых процдур;
- Как формировать recordset-ы и передавать их клиентскому приложению;
- Чстично мы рассмотрим функции Active Directory Network Manegment API необходимые для получения списка доменных пользователей;
- Создадим готовый проект (реализуем наше техническое задание)
Надеюсь - до скорой встречи!
Очевидно, что администрирование работы сетевых служб подразумевает выполнение некоторых дополнительных процедур, направленных на обеспечение корректной работы всей системы. Вовсе не обязательно, чтобы эти функции выполнял один человек. Во многих организациях работа распределяется между несколькими администраторами. В любом случае необходим хотя бы один человек, который понимал бы все поставленные задачи и обеспечивал их выполнение другими людьми.
1. Введение
Идея создания сетей для передачи данных на большие и не очень большие расcтояния витала в воздухе с той самой поры, как человек впервые задумался над созданием телекоммуникационных устройств. В разное время и в различных ситуациях в качестве «устройств передачи информации» использовались почтовые голуби, бутылки с сообщениями «SOS» и наконец, люди — гонцы и нарочные.
Конечно, с тех пор прошло немало лет. В наши дни для того, чтобы передать от одного человека к другому приглашение на субботний футбольный матч, множество компьютеров обмениваются электронными сообщениями, используя для передачи информации массу проводов, оптических кабелей, микроволновых передатчиков и прочего.
Компьютерные сети сегодня представляют собой форму сотрудничества людей и компьютеров, обеспечивающего ускорение доставки и обработки информации.
Сеть обеспечивает обмен информацией и ее совместное использование (разделение). Компьютерные сети делятся на локальные (ЛВС, Local Area Network, LAN), представляющие собой группу близко расположенных, связанных между собой компьютеров, и распределенные (глобальные, Wide Area Networks, WAN)
Соединенные в сеть компьютеры обмениваются информацией и совместно используют периферийное оборудование и устройства хранения информации.
Очевидно, что администрирование работы сетевых служб подразумевает выполнение некоторых дополнительных процедур, направленных на обеспечение корректной работы всей системы. Вовсе не обязательно, чтобы эти функции выполнял один человек. Во многих организациях работа распределяется между несколькими администраторами. В любом случае необходим хотя бы один человек, который понимал бы все поставленные задачи и обеспечивал их выполнение другими людьми.
Основные задачи системного администратора
2.1. Подключение и удаление аппаратных средств
Любая компьютерная сеть состоит из трех основных компонентов:
1. Активное оборудование (концентраторы, коммутаторы, сетевые адаптеры и др.).
2. Коммуникационные каналы (кабели, разъемы).
3. Сетевая операционная система.
Естественно, все эти компоненты должны работать согласованно. Для корректной работы устройств в сети требуется их правильно инсталлировать и установить рабочие параметры.
В случае приобретения новых аппаратных средств или подключения уже имеющихся аппаратных средств к другой машине систему нужно сконфигурировать таким образом, чтобы она распознала и использовала эти средства. Изменение конфигурации может быть как простой задачей (например, подключение принтера), так и более сложной (подключение нового диска).
Для того чтобы принять правильное решение о модернизации системы, как системному администратору необходимо проанализировать производительность системы. Конечными узлами сети являются компьютеры, и от их производительности и надежности во многом зависят характеристики всей сети в целом. Именно компьютеры являются теми устройствами в сети, которые реализуют протоколы всех уровней, начиная от физического и канального (сетевой адаптер и драйвер) и заканчивая прикладным уровнем (приложения и сетевые службы операционной системы). Следовательно, оптимизация компьютера включает две достаточно независимые задачи:
* Во-первых, выбор таких параметров конфигурации программного и аппаратного обеспечения, которые обеспечивали бы оптимальные показатели производительности и надежности этого компьютера как отдельного элемента сети. Такими параметрами являются, например, тип используемого сетевого адаптера, размер файлового кэша, влияющий на скорость доступа к данным на сервере, производительность дисков и дискового контроллера, быстродействие центрального процессора и т.п.
* Во-вторых, выбор таких параметров протоколов, установленных в данном компьютере, которые гарантировали бы эффективную и надежную работу коммуникационных средств сети. Поскольку компьютеры порождают большую часть кадров и пакетов, циркулирующих в сети, то многие важные параметры протоколов формируются программным обеспечением компьютеров, например начальное значение поля TTL (Time-to-Live) протокола IP, размер окна неподтвержденных пакетов, размеры используемых кадров.
Тем не менее выполнение вычислительной задачи может потребовать участия в работе нескольких устройств. Каждое устройство использует определенные ресурсы для выполнения своей части работы. Плохая производительность обычно является следствием того, что одно из устройств требует намного больше ресурсов, чем остальные. Чтобы исправить положение, вы должны выявить устройство, которое расходует максимальную часть времени при выполнении задачи. Такое устройство называется узким местом (bottleneck). Например, если на выполнение задачи требуется 3 секунды и 1 секунда тратится на выполнение программы процессором, а 2 секунды — на чтение данных с диска, то диск является узким местом.
Определение узкого места — критический этап в процессе улучшения производительности. Замена процессора в предыдущем примере на другой, в два раза более быстродействующий процессор, уменьшит общее время выполнения задачи только до 2,5 секунд, но принципиально исправить ситуацию не сможет, поскольку узкое место устранено не будет. Если же мы приобретем диск и контроллер диска, которые будут в два раза быстрее прежних, то общее время уменьшится до 2 секунд.
Если вы всерьез недовольны быстродействием системы, исправить положение можно следующими способами:
* обеспечив систему достаточным ресурсом памяти. Объем памяти — один из основных факторов, влияющих на производительность;
* устранив некоторые проблемы, созданные как пользователями (одновременный запуск слишком большого количества заданий, неэффективные методы программирования, выполнение заданий с избыточным приоритетом, а также объемных заданий в часы пик), так и самой системой (квоты, учет времени центрального процессора);
* организовав жесткие диски и файловые системы так, чтобы сбалансировать нагрузку на них и таким образом максимально повысить пропускную способность средств ввода-вывода;
* осуществляя текущий контроль сети, чтобы избежать ее перегрузки и добиться низкого коэффициента ошибок. Сети UNIX/Linux можно контролировать с помощью программы netstat. Если речь идет об сетевых операционных системах семейства Windows, то вам поможет утилита PerformanceMonitor.
* откорректировав методику компоновки файловых систем в расчете на отдельные диски;
* выявив ситуации, когда система совершенно не соответствует предъявляемым к ней требованиям.
Эти меры перечислены в порядке убывания эффективности.
2.2. Резервное копирование
Процедура резервного копирования довольно утомительна и отнимает много времени, но выполнять ее необходимо. Ее можно автоматизировать, но системный администратор обязан убедиться в том, что резервное копирование выполнено правильно и в соответствии с графиком. Практически любая сетевая операционная система содержит механизмы для создания резервных копий или зеркального ведения дисков. Например, в UNIX-системах самое распространенное средство создания резервных копий и восстановления данных — команды dump и restore. В большинстве случаев информация, хранящаяся в компьютерах, стоит дороже самих компьютеров. Кроме того, ее гораздо труднее восстановить.
Существуют сотни весьма изобретательных способов потерять информацию. Ошибки в программном обеспечении зачастую портят файлы данных. Пользователи случайно удаляют то, над чем работали всю жизнь. Хакеры и раздраженные служащие стирают данные целыми дисками. Проблемы c аппаратными средствами и стихийные бедствия выводят их строя целые машинные залы. Поэтому ни одну систему нельзя эксплуатировать без резервных копий.
При правильном подходе создание резервных копий данных позволяет администратору восстанавливать файловую систему (или любую ее часть) в том состоянии, в котором она находилась на момент последнего снятия резервных копий. Резервное копирование должно производиться тщательно и строго по графику.
[pagebreak]
Поскольку многие виды неисправностей способны одновременно выводить из строя сразу несколько аппаратных средств, резервные копии следует записывать на съемные носители, CD-диски, ZIP-дискеты и т.д. Например, копирование содержимого одного диска на другой, конечно, лучше, чем ничего, но оно обеспечивает весьма незначительный уровень защиты от отказа контроллера.
2.3. Инсталляция новых программных средств
После приобретения нового программного обеспечения его нужно инсталлировать и протестировать. Если программы работают нормально, необходимо сообщить пользователям об их наличии и местонахождении.
Как правило, самой ответственной и самой сложной задачей системного администратора являются инсталляция и конфигурирование операционной системы. От правильности ваших действий зависит, будете ли вы играть в Quake и просматривать любимые сайты или вам придется бегать между пользователями системы и заниматься рутинной работой.
Во многих современных операционных системах разработчики идут по пути исключения многих непродуктивных параметров системы, с помощью которых администраторы способны влиять на производительность ОС. Вместо этого в операционную систему встраиваются адаптивные алгоритмы, которые определяют рациональные параметры системы во время ее работы. С помощью этих алгоритмов ОС может динамически оптимизировать свои параметры в отношении многих известных сетевых проблем, автоматически перераспределяя свои ресурсы и не привлекая к решению администратора.
Существуют различные критерии оптимизации производительности операционной системы. К числу наиболее распространенных критериев относятся:
* Наибольшая скорость выполнения определенного процесса.
* Максимальное число задач, выполняемых процессором за единицу времени. Эта характеристика также называется пропускной способностью компьютера. Она определяет качество разделения ресурсов между несколькими одновременно выполняемыми процессами.
* Освобождение максимального количества оперативной памяти для самых приоритетных процессов, например процесса, выполняющего функции файлового сервера, или же для увеличения размера файлового кэша.
* Освобождение наибольшего количества дисковой памяти.
Обычно при оптимизации производительности ОС администратор начинает этот процесс при заданном наборе ресурсов. В общем случае одновременно улучшить все критерии производительности невозможно. Например, если целью является увеличение доступной оперативной памяти, то администратор может увеличить размер страничного файла, но это приведет к уменьшению доступного дискового пространства.
После инсталляции и оптимальной настройки операционной системы начинается практически бесконечный процесс установки программного обеспечения. И здесь на первый план выходят проблемы совместимости различных программ, а если вы устанавливаете серверное программное обеспечение, — то еще и о безопасности.
Если вы начинающий системный администратор — устанавливайте на свой сервер более простые программы — в них меньше ошибок. В UNIX — избавьтесь от sendmail, поставьте другой SMTP-демон, внимательно анализируйте исходный код всех устанавливаемых на сервер программ, особенно если имя производителя вам ничего не говорит. В Windows NT не стоит использовать монстры типа Microsoft Exchange Server, и желательно избегать установки на сервер всевозможных freeware-программок.
2.4. Мониторинг системы
Существует великое множество обязательных для исполнения ежедневных операций. Например, проверка правильности функционирования электронной почты и телеконференций, просмотр регистрационных файлов на предмет наличия ранних признаков неисправностей, контроль за подключением локальных сетей и за наличием системных ресурсов.
Все многообразие средств, применяемых для мониторинга и анализа вычислительных сетей, можно разделить на несколько крупных классов:
Системы управления сетью (NetworkManagementSystems) — централизованные программные системы, которые собирают данные о состоянии узлов и коммуникационных устройств сети, а также данные о трафике, циркулирующем в сети. Эти системы не только осуществляют мониторинг и анализ сети, но и выполняют в автоматическом или полуавтоматическом режиме действия по управлению сетью — включение и отключение портов устройств, изменение параметров мостов адресных таблиц мостов, коммутаторов и маршрутизаторов и т.п. Примерами систем управления могут служить популярные системы HPOpenView, SunNetManager, IBMNetView.
Средства управления системой (SystemManagement). Средства управления системой часто выполняют функции, аналогичные функциям систем управления, но по отношению к другим объектам. В первом случае объектами управления являются программное и аппаратное обеспечение компьютеров сети, а во втором — коммуникационное оборудование. Вместе с тем некоторые функции этих двух видов систем управления могут дублироваться, например средства управления системой могут выполнять простейший анализ сетевого трафика.
Встроенные системы диагностики и управления (Embeddedsystems). Эти системы выполняются в виде программно-аппаратных модулей, устанавливаемых в коммуникационное оборудование, а также в виде программных модулей, встроенных в операционные системы. Они выполняют функции диагностики и управления единственным устройством, и в этом их основное отличие от централизованных систем управления. Примером средств этого класса может служить модуль управления концентратором Distrebuted 5000, реализующий функции автосегментации портов при обнаружении неисправностей, приписывания портов внутренним сегментам концентратора, и ряд других. Как правило, встроенные модули управления «по совместительству» выполняют роль SNMP-агентов, поставляющих данные о состоянии устройства для систем управления.
Анализаторы протоколов (Protocolanalyzers). Представляют собой программные или аппаратно-программные системы, которые ограничиваются, в отличие от систем управления, лишь функциями мониторинга и анализа трафика в сетях. Хороший анализатор протоколов может захватывать и декодировать пакеты большого количества протоколов, применяемых в сетях, — обычно несколько десятков. Анализаторы протоколов позволяют установить некоторые логические условия для захвата отдельных пакетов и выполняют полное декодирование захваченных пакетов, то есть показывают в удобной для специалиста форме вложенность друг в друга пакетов протоколов разных уровней с расшифровкой содержания отдельных полей каждого пакета.
Оборудование для диагностики и сертификации кабельных систем. Условно это оборудование можно поделить на четыре основные группы: сетевые мониторы, приборы для сертификации кабельных систем, кабельные сканеры и тестеры (мультиметры).
Экспертные системы. Этот вид систем аккумулирует человеческие знания о выявлении причин аномальной работы сетей и возможных способах приведения сети в работоспособное состояние. Экспертные системы часто реализуются в виде отдельных подсистем различных средств мониторинга и анализа сетей: систем управления сетями, анализаторов протоколов, сетевых анализаторов. Простейшим вариантом экспертной системы является контекстно-зависимая help-система. Более сложные экспертные системы представляют собой так называемые базы знаний, обладающие элементами искусственного интеллекта. Примером такой системы является экспертная система, встроенная в систему управления Spectrum компании Cabletron.
Многофункциональные устройства анализа и диагностики. В последние годы в связи с повсеместным распространением локальных сетей возникла необходимость разработки недорогих портативных приборов, совмещающих функции нескольких устройств: анализаторов протоколов, кабельных сканеров и даже ряд возможностей ПО сетевого управления.
Однако в отдельной сети Ethernet формальные процедуры управления сетью внедрять, как правило, не стоит. Достаточно провести тщательное тестирование сети после инсталляции и время от времени проверять уровень нагрузки. Сломается — почините.
Если у вас задействованы глобальная сеть или сложные ЛВС, рассмотрите вопрос приобретения выделенных станций управления сетью со специальным программным обеспечением.
2.5. Поиск неисправностей
Операционные системы и аппаратные средства, на которых они работают, время от времени выходят из строя. Задача администратора — диагностировать сбои в системе и в случае необходимости вызвать специалистов. Как правило, найти неисправность бывает намного сложнее, чем устранить ее.
Если вы обнаружили, что какой-то из узлов сети работает некорректно или вовсе отказывается работать, вам стоит обратить внимание на светодиодные индикаторы при включенном концентраторе и компьютерах, соединенных кабелями. Если они не горят, то очень вероятно, что причина заключается в следующем:
* Адаптеры некорректно сконфигурированы. Чаще всего при инсталляции сети проблем не возникает до тех пор, пока не будут подключены кабели, а иногда и до попытки получить доступ к сетевым ресурсам. Обычно источником проблемы является конфликт IRQ (два устройства используют одно прерывание). Такие ситуации не всегда легко обнаружить программными средствами, поэтому внимательно проверьте установки прерываний для всех устройств компьютера (звуковые платы, параллельные и последовательные порты, приводы CD-ROM, другие сетевые адаптеры и т.п). Иногда в определении доступного прерывания может помочь программа конфигурирования и/или диагностики адаптера. В некоторых случаях проблемы возникают при использовании на современных компьютерах с шиной PCI для сетевого адаптера IRQ 15, даже если это прерывание не используется.
* Адаптер не отвечает на запросы. Если после включения компьютера программа диагностики не может обнаружить адаптер или детектирует сбой при внутреннем тесте, попробуйте заменить адаптер или обратитесь к его производителям.
* Если проверка адаптеров и кабелей доказала их работоспособность, причиной возникновения проблем могут быть некорректные параметры драйвера сетевого адаптера. Проверьте корректность параметров и сам драйвер (он должен быть предназначен для используемого вами адаптера). Дополнительную информацию можно найти в описании адаптера.
* Концентраторы редко являются источником проблем, однако одной из наиболее распространенных проблем такого рода является отсутствие питания. Иногда неисправный сетевой адаптер может нарушить работу порта в концентраторе. Для проверки адаптера пользуйтесь диагностическими программами из комплекта адаптера.
[pagebreak]
2.6. Ведение локальной документации
Настраивая конфигурацию под конкретные требования, вы вскоре обнаружите, что она значительно отличается от той, что описана в документации (базовой конфигурации). Скорее всего, вы не вечно будете занимать место системного администратора и рано или поздно на ваше место придет другой человек. Известно, что бывших супругов и бывших системных администраторов редко вспоминают добрым словом. Но, чтобы уменьшить количество «камней в ваш огород» и, что важнее, оградить себя от звонков и вопросов с места бывшей работы, системный администратор должен документировать все инсталлируемые программные средства, не входящие в стандартный пакет поставки, документировать разводку кабелей, вести записи по обслуживанию всех аппаратных средств, регистрировать состояние резервных копий и документировать правила работы с системой.
Также следует учитывать, что система учета, ядро, различные утилиты — все эти программы выдают данные, которые регистрируются и в конце концов попадают на ваши диски. Эти данные тоже являются локальной документацией, характеризующей работу конкретной системы. Однако срок полезной службы большинства данных ограничен, поэтому их нужно обобщать, упаковывать и наконец, выбрасывать.
Процедура ведения файлов регистрации в любой операционной системе представляет собой набор процедур, которые повторяются через определенное время в одном и том же порядке. Следовательно, ее необходимо автоматизировать.
В UNIX-системах для этой цели используется процесс cron. А программа syslog может удачно применяется в качестве полной системы регистрации. Она отличается высокой гибкостью и позволяет сортировать сообщения системы по источникам и степени важности, а затем направлять их в разные пункты назначения: в файлы регистрации, на терминалы пользователей и даже на другие машины. Одной из самых ценных особенностей этой системы является ее способность централизовать регистрацию для сети.
Администраторы Windows NT могут для тех же целей использовать утилиту PerformanceMonitor, разработанную для фиксации активности компьютера в реальном масштабе времени. С ее помощью можно определить большую часть узких мест, снижающих производительность. Эта утилита включена в Windows NT Server и Windows NT Workstation.
PerformanceMonitor основан на ряде счетчиков, которые фиксируют такие характеристики, как число процессов, ожидающих завершения операции с диском, число сетевых пакетов, передаваемых в единицу времени, процент использования процессора и другие. PerformanceMonitor генерирует полезную информацию посредством следующих действий:
* наблюдения за производительностью в реальном времени и в исторической перспективе;
* определения тенденций во времени;
* определения узких мест;
* отслеживания последствий изменения конфигурации системы;
* наблюдения за локальным или удаленными компьютерами;
* предупреждения администратора о событиях, связанных с превышением некоторыми характеристиками заданных порогов.
2.7 Контроль защиты
Основной особенностью любой сетевой системы является то, что ее компоненты распределены в пространстве, а связь между ними осуществляется физически — при помощи сетевых соединений (коаксиальный кабель, витая пара, оптоволокно и т.д.) и программно — при помощи механизма сообщений. К сетевым системам наряду с обычными (локальными) атаками, осуществляемыми в пределах одной операционной системы, применим специфический вид атак, обусловленный распределенностью ресурсов и информации в пространстве, — так называемые сетевые (или удаленные) атаки. Они характеризуются тем, что, во-первых, злоумышленник может находиться за тысячи километров от атакуемого объекта, а во-вторых, нападению может подвергнуться не конкретный компьютер, а информация, передающаяся по сетевым соединениям.
Системный администратор должен реализовывать стратегию защиты и периодически проверять, не нарушена ли защита системы.
Естественно, абсолютная защита сети невозможна, однако задача каждого администратора — сделать все возможное для максимального ее улучшения. При построении системы защиты разумно придерживаться следующих принципов:
* Актуальность. Защищаться следует от реальных атак, а не от фантастических или же архаичных.
* Разумность затрат. Поскольку 100% защиты вы все равно не обеспечите, необходимо найти тот рубеж, за которым дальнейшие траты на повышение безопасности превысят стоимость той информации, которую может украсть злоумышленник.
Конечно же, действия, которые вы должны предпринять для защиты своего сервера очень зависят от того, какую операционную систему вы используете. Однако есть ряд простых правил, которые пригодятся любому системному администратору.
* Внимательно прочитайте руководство по администрированию системы, вы наверняка найдете там полезные советы, которыми захотите воспользоваться.
* Запустите программу автоматизированного контроля вашего хоста — типа Internet Scanner. Система Internet Scanner может быть запущена на одной из платформ (Windows NT, Windows 2000, HP/UX, AIX, Linux, Sun OS, Solaris). Используется она для анализа защищенности систем.
* Загляните на серверы CERT (http://www.cert.org/) или CIAC (http://ciac.llnl.gov/) и внимательно прочитайте относящиеся к вашей ОС бюллетени за последнее время. Установите все рекомендуемые заплатки и сконфигурируйте систему, как полагается.
* Правильно настройте (или установите) межсетевой экран. Поставьте монитор всех входящих соединений (например, tcp_wrapper).
* Запустите последний взломщик паролей. Здесь у вас большое преимущество перед хакерами — у вас уже есть файл с хэшированными паролями.
* Проверьте настройки основных Интернет-служб (http, ftp). Максимально используйте анонимный доступ, чтобы предотвратить передачу паролей по сети в открытом виде. При необходимости разграничения доступа используйте стойкие протоколы типа SSL.
* У всех остальных сетевых служб также по возможности используйте аутентификацию, не включающую передачу пароля открытым текстом.
* Выбросьте некоторые малоиспользуемые службы. Особенно это касается администраторов UNIX-серверов: давно не используемый, но существующий на вашем сервере сервис типа finger, talk, rpc может стать той самой «дырой» в системе безопасности, через которую сможет проникнуть (или уже проник) хакер.
* Поставьте proxy-сервер для дополнительной аутентификации извне, а также для скрытия адресов и топологии внутренней подсети.
* Поставьте защищенную версию UNIX или другой операционной системы.
2.8. Подключение и удаление пользователей. Оказание им помощи
Создание бюджетов для новых пользователей и удаление бюджетов тех пользователей, которые уже не работают, — обязанность системного администратора. Процесс включения и удаления пользователей можно автоматизировать, но некоторые решения, от которых зависит включение нового пользователя, должен принимать администратор.
Очень часто сотрудники предприятия оказываются самым слабым звеном в системе его безопасности, поэтому системному администратору следует уделять больше внимания работе с пользователями системы. Иначе простой листочек бумаги с паролем, лежащий на рабочем месте забывчивой сотрудницы, сделает бесполезной выверенную настройку вашего межсетевого экрана.
Для усиления безопасности компьютерных систем компании разумными могут считаться следующие шаги:
* Привлечение внимания людей к вопросам безопасности.
* Осознание сотрудниками всей серьезности проблемы и принятие в организации политики безопасности.
* Изучение и внедрение необходимых методов и действий для повышения защиты информационного обеспечения.
Если вы работаете в крупной (более 100 человек) организации, то для определения уровня ее защищенности можно провести тест на проникновение. Этот метод позволяет выявить недостатки безопасности с точки зрения постороннего человека. Он позволяет протестировать схему действий, которая раскрывает и предотвращает внутренние и внешние попытки проникновения и сообщает о них.
Тест должен разрешить два основных вопроса:
* Все ли пункты политики безопасности достигают своих целей и используются так, как было задумано.
* Существует ли что-либо, не отраженное в политике безопасности, что может быть использовано для достижения злоумышленником своих целей.
Все попытки должны контролироваться обеими сторонами — как взломщиком, так и «клиентом». Это поможет протестировать систему гораздо более эффективно. Необходимо также свести к минимуму количество людей, знающих о проведении эксперимента.
Требуется создать и разработать различные варианты политики безопасности, определить правила корректного использования телефонов компьютеров и другой техники. Необходимо учитывать и неосведомленность в области безопасности, поскольку любые средства технического контроля могут быть использованы ненадлежащим образом. В итоге тестирование системы безопасности должно обеспечить вам защиту от проникновения.
3. Почему давят на системного администратора
Сети имеют тенденцию разрастаться, следовательно, вы будете вынуждены тратить все больше и больше времени на выполнение функций администратора. Вскоре окажется, что вы — единственный человек в своей организации, который знает, как решить целый ряд важнейших проблем.
Поскольку круг обязанностей системного администратора четко ограничить нельзя, от вас, скорее всего, потребуют, чтобы вы были не только штатным администратором, но и штатным инженером, писателем, а также секретарем.
Вместо этого мы предлагаем вам следующее: ведите работу на должном уровне, параллельно регистрируя время, затрачиваемое на системное администрирование. Собирайте доказательства, которые могут вам пригодиться, когда вы попросите руководство взять в штат еще одного администратора или освободить вас от «лишних» обязанностей.
С другой стороны, вы можете обнаружить, что системное администрирование вам нравится. В этом случае проблем с поиском работы у вас не будет.
Данная статья полностью посвящена такому аспекту раскрутки сайта, как регистрация в каталогах. На примерах рассмотрим регистрацию в наиболее популярных каталогах: Top.Mail.ru, Yandex, Rambler's TOP100.
В процессе размещения сайта в каталогах нет ничего сложного. Благо, эти системы становятся более совершенными и простыми в использовании для владельцев сайтов. Как правило, для добавления сайта в каталог нужно выбрать соответствующий раздел каталога (или подкаталог в нем). Потом вам необходимо будет вручную заполнить регистрационную форму. Нажимаем "Разместить", "OK", "Submit" (в разных каталогах по-разному, но суть одна) - и все, ваш сайт в каталоге. Правда, его еще проверят модераторы на соответствие тематики сайта выбранному каталогу. И не нарушает ли ваш ресурс законов страны, в которой расположен каталог. Как правило, это относиться лишь к сайтам, размещенным на бесплатном хостинге. Это еще один из доводов в пользу платного хостинга - бесплатный сыр может оказаться вовсе не бесплатным.
Модератор всегда прав
Когда размещаете свой сайт в каталоге, не забывайте о пользователях. Ведь именно для них он и предназначен, поэтому постарайтесь наиболее точно составить его описание. В лучшем случае модератор каталога просто изменит его описание, или перенесет сайт в другую рубрику. В худшем... Будем стараться, чтобы такого не случилось. Советую также внимательно читать правила размещения ресурса в каталоге. И, само собой, придерживаться его требований и правил. Как и в любом деле, здесь нужно быть очень аккуратным и следовать правилам предоставления данной услуги.
По поводу выбора каталога, хочу заметить еще кое-что. Как правило, пользователи не случайно заходят в тот или иной каталог (рубрику) - хотя бывают и исключения :) Получается, что человек заинтересован именно в сайтах данной тематики, он ищет информацию в определенной области (наука, новости, автомобили и т.д.). Я думаю, он вряд ли зайдет на сайт, который не соответствует интересующей его тематике. А, случайно попав не него, долго на нем не пробудет. Но это, как правило, а в реальной жизни все может быть.
Шаги к успеху
А теперь о размещении в каталоге более детально. При регистрации вам предлагают внести название вашего сайта и его краткое описание. В названии, как правило, необходимо разместить название вашей организации (если сайт о ней) или же просто официальное название вашего сайта. Пусть это будет "Интернет-магазин "Все для кошек", "Домашняя страничка кота Мурчика", "Молокозавод "Лакомства для кошек" и т.п.
Можно, конечно, попробовать разместить в названии несколько ключевых слов. Можно, но в данном случае все на ваш страх и риск. Тут главное не перестараться, дабы не снискать немилость у владельцев каталога. И чем ресурс-владелец каталога популярнее, тем с ключевыми словами ситуация сложнее.
Теперь остановимся на описании сайта. Оно располагается сразу же после URL'а вашего сайта. Как и название, описание сайта является не менее важным. Тут главное еще до регистрации придумать описание, сбалансированное как по краткости, так и по соответствию тематике. Я думаю, что не стоит в нем использовать какие-либо жаргонные слова и делать его слишком длинным. Скорее всего модератору это понравиться, и будьте уверены, что он его заменит на свой лад. Вот чтобы не проверять судьбу, лучше этого не делать.
Ну а если составить описание вам все же сложно, то посмотрите описания сайтов с похожей тематикой. Гляди и появится идейка-вторая. Только вот копировать описание точь-в-точь я бы не советовал - проявите смекалку, пофантазируйте, переберите кучу вариантов. И у вас обязательно получится - не сомневайтесь. "Зато такого описания ни у кого нет" - разве это не может не радовать?
Еще можно использовать свой meta-description тег (если он удачно подобран). А почему бы и нет? Смело вносите его в описание сайта для каталога, не забывая при этом о вышеперечисленных советах.
Еще посоветую использовать те слова, которые часто встречаются на страницах вашего сайта. Если таковых вы не находите, или их совсем маловато, то тут следует призадуматься. Сайт у вас один, регистрировать вы его будете один раз, а его содержание будете часто менять (в идеале). Так почему бы сразу не оптимизировать текст под несколько ключевых слов? Я думаю, намек вам понятен...
Поэтому постарайтесь максимально придерживаться моих рекомендаций и у вас все непременно получиться. Конечно, у каждого каталога свои правила и требования к размещению ресурса. Тем не менее, главными остаются правильно выбрать раздел и составить понятное/точное описание.
Поменьше слов - побольше дела!
Ну а теперь рассмотрим наиболее популярные каталоги РУнета.
1) Яндекс
Тут ничего сложного нет. У Яндекса самая простая (по крайней мере из всех, что мне попадались) регистрация. Итак, заходим на Яндекс, на сайте находим ссылочку добавить сайт. А далее все просто - в строку постредине страницы вносим URL вашего сайта и жмем "Добавить".
Не лишним будет заметить, что Яндекс регистрирует только русскоязычные сайты или же представляющие интерес для русскоязычной аудитории.
2) Рамблер
У Рамблера каталог называется Rambler's TOP100. Вот на него-то мы и заходим Rambler's TOP100. Нажимаем на ссылочку "добавить ресурс" и переходим к соглашению о регистрации в каталоге. Прочитав его, жмем на кнопку "зарегистрировать". Ну а дальше все должно быть понятно, как-никак русским же языком все написано :)
Советую при выборе цвета счетчика подумать, как он будет сочетаться с цветовой гаммой вашего сайта. И не жмите дважды кнопку "зарегистрировать" :)
3) Рейтинг@Mail.ru
С регистрацией в данном каталоге у вас тоже не должно возникунть проблем. Сверху есть ссылка "зарегистрироваться в рейтинге@mail.ru" (так вот у них каталог своеобразно называется - как их почта).
Одно замечание - так как тематических каталогов и подкаталогов у них довольно много, то советую выбрать тот из них, который максимально соответствует тематике вашего сайта (можете просто зайти в заинтересовавший вас каталог и посмотореть на сайты, которые в нем размещены).
В данной статье я бы хотел рассмотреть и сравнить между собой несколько способов раскрутки сайтов. Некоторые способы уже известны многим как быстрый путь к увеличению посещаемости сайта. Посмотрим так ли это на самом деле.
Достижение высоких позиций невозможно только редактируя meta-теги.
В свое время я прочел очень интересную книгу Стефана Ковея "7 привычек успешного человека". Мне в этой книге особенно понравился раздел "Персональная этика". В нем автор упоминает о том, как некоторые люди изо всех сил пытаются найти "быстрый и простой способ достичь успеха в жизни не работая и не совершенствуя свои профессиональные навыки".
Далее автор подводит итог: "Персональная этика - вещь иллюзорная и обманчивая. Вот поэтому пытаться достичь каких-либо значимых целей так просто и быстро так же утопично, как найти Эйфелеву башню на карте Мадрида".
Я думаю, что сказанное выше можно смело применить и к поисковой оптимизации: простых путей нет. Вот поэтому я считаю мифом, что раскрутить сайт можно только путем редактирования meta-тегов.
Почему meta-теги бессильны?
Все дело в том, что толком неизвестно насколько важными являются meta-теги для релевантности сайта. Да и вообще используют ли информацию из них поисковые машины.
Иначе обстоит дело с поиском внутри самого сайта. Вот здесь информация из meta-тегов как раз и помогает найти пользователю страничку на сайте с необходимой информацией. Или, по крайней мере, сузить количество возможных страниц до минимума.
К сожалению, разница между внутренним поиском и поиском с помощью поисковой машины (напр. той же Google) очень велика. Например, с помощью внутреннего поиска можно без проблем найти минимальное количество страничек, которые будут максимально соответствовать поисковому запросу. К тому же содержание сайта (контент) и meta-теги только помогут пользователю добраться до нужной ему информации.
С другой стороны, все главные поисковые машины интернета имеют свои базы данных, которые содержат информацию о всех интернет страничках, о которых они только знают. Они-то не всегда доверяют информации из meta-тегов, так как она запросто может отличаться от истинного содержания сайта. К примеру, вы как владелец сайта, желаете видеть свой сайт на верху результатов поиска по многим ключевым словам (фразам), но поисковик все равно поместит туда наиболее релевантные по данным ключевым словам сайты.
Вот по этой причине только изменять информацию в meta-тегах не приведет к росту рейтинга сайта и увеличению трафика.
И о контенте замолвим мы слово...
Бесспорно, вы можете наполнять свой сайт статьями любого содержания и тематики и надеяться на быстрый эффект. Но вот только написание хороших статей (т.е контента) требует времени и часто довольно много. Можно, конечно, потратить годы на написание статей, что в конечном итоге приведет к появлению довольно весомого архива полезной информации. Вот только у меня возникаю сомнения, что кто-то сможет писать 100 статей в неделю, да еще и интересных и полезных в информационном плане для посетителя. Тут нужно либо нахально воровать контент с других сайтов, либо пользоваться программами для его генерации, либо становиться роботом с множеством рук!
А как же ссылки?
Да, без сомнений, ссылки - это очень важный инструмент, который помогает вашему сайту хотя бы просто быть замеченным (проиндексированным) поисковой машиной. Вот только делается это не так и быстро, ввиду довольно большой инертности поисковиков. Да ведь играет еще и "вес" ссылающегося на вас сайта, а в данном случае лучше получит одну ссылки с сайта с PR=6-7, чем с сотни с PR=2-3. Но пока ваш сайт еще не раскручен, то крупные сайты вряд-ли поставят на ваш сайт ссылки. Зачем это им?
Так что лучше пока забудьте о популярности ссылки и вместо этого подумайте о привлечении на сайт целевой аудитории и как она узнает о существовании вашего сайта. Тут все проще пареной репы, как говорится. У вас есть сайт и вы занимаетесь бизнесом, который [лучше] [уникальнее] [качественнее] чем аналогичный у ваших конкурентов. Вам, естественно, нужно его заставить приносить прибыль. Не обязательно в вас должно быть много денег для рекламы вашего сайта.
Хорошая реклама в (пусть и не в самом популярной) газете, журнале или даже телепрограмме уже поможет обратить внимание на ваш ресурс. Ведь, чем популярнее сайт, тем о нем должны больше говорить. Можно даже использовать PPC (Paid per click, сервис показа баннеров с вашей рекламой с оплатой за клики), который поможет привлечь на ваш сайт заинтересованных посетителей.
Но, как бы вы не рекламировали свой сайт, не рассчитывайте на бум в течении суток.
А теперь снова вернемся к книге Стефана Ковея. Конечно, можно научиться быстро редактировать meta-теги и зарегистрировать сайт в тысячах поисковых машин, поставить свою ссылку на миллионах бесполезных сайтов. Тем не менее, если вы не потратите время на написание хорошего и уникального контента, который будет понятен и интересен посетителю, написан простыми словами без использования сленга, у вас никогда не будет долговременных положительных результатов.
Как достичь долговременных результатов
Одним из способов быстрой раскрутки есть оптимизация сайта под малоиспользуемые ключевые слов. Ваш ресурс-то будет высоко в поисковых рейтингах, да вот толку от этого маловато.
Но так как мы уже решили, что эффективная оптимизация - процесс довольно долгий, то следующие 5 советов помогут вам с пользой это время использовать.
1) Тщательно исследуйте нужные вам ключевые слова с помощью таких сервисов, как Wordtracker или KeywordDiscovery. Пусть эти сервисы и платные, но, как я считаю, чтобы заработать деньги, их нужно сначала потратить. Рано или поздно все к этому приходят. А вот как раз платные сервисы по анализу ключевых слов - совершенный инструмент раскрутки сайта.
2) Не перегружайте свой сайт графикой. Тут есть два недостатка: до сих пор толком неизвестно, как поисковые роботы обрабатывают графику; да и мало у кого из посетителей хватит терпения долго ждать загрузки вашей веб-странички.
3) Используйте понятный посетителю язык, на котором написана информация на сайте. Пусть посетителю будет понятно, что вы желаете ему рассказать. Не забывайте также оптимизировать текст под те ключевые слова, по которым вы желаете достичь высоких позиций в поисковиках.
4) Не лишним будет убедиться, что текст в теге "title" и в описании ссылки полностью сходится с контентом вашего сайта.
5) Будьте терпеливы и настойчивы. Как правило, нужно около 6-9 месяцев, чтобы получить стабильный трафик на ваш сайт с популярных поисковиков. Что поделать, так уж устроены поисковые алгоритмы - им нужно некоторое время, чтобы присмотреться к новым ресурсам. И тут не следует расстраиваться, лучше потратить время на наполнение сайта хорошим контентом.
И помните, что ваши труды по оптимизации - это работа на будущее. Как и все в этой жизни, если вы тратите время и деньги правильно и для конкретной цели, то ожидаемые результаты не заставят себя ждать.