Новые книги

Master the fundamental concepts of real-time embedded system programming and jumpstart your embedded projects with effective design and implementation practices. This book bridges the gap between higher abstract modeling concepts and the lower-level programming aspects of embedded systems development. You gain a solid understanding of real-time embedded systems with detailed practical examples and industry wisdom on key concepts, design processes, and the available tools and methods.

Delve into the details of real-time programming so you can develop a working knowledge of the common design patterns and program structures of real-time operating systems (RTOS). The objects and services that are a part of most RTOS kernels are described and real-time system design is explored in detail. You learn how to decompose an application into units and how to combine these units with other objects and services to create standard building blocks. A rich set of ready-to-use, embedded design “building blocks” is also supplied to accelerate your development efforts and increase your productivity.

Experienced developers new to embedded systems and engineering or computer science students will both appreciate the careful balance between theory, illustrations, and practical discussions. Hard-won insights and experiences shed new light on application development, common design problems, and solutions in the embedded space. Technical managers active in software design reviews of real-time embedded systems will find this a valuable reference to the design and implementation phases.

Qing Li is a senior architect at Wind River Systems, Inc., and the lead architect of the company’s embedded IPv6 products. Qing holds four patents pending in the embedded kernel and networking protocol design areas. His 12+ years in engineering include expertise as a principal engineer designing and developing protocol stacks and embedded applications for the telecommunications and networks arena. Qing was one of a four-member Silicon Valley startup that designed and developed proprietary algorithms and applications for embedded biometric devices in the security industry.

Caroline Yao has more than 15 years of high tech experience ranging from development, project and product management, product marketing, business development, and strategic alliances. She is co-inventor of a pending patent and recently served as the director of partner solutions for Wind River Systems, Inc.

About the Authors
Священные войны, они же

– непременный атрибут жизни FOSS-мира. И потому в этой книжке будут собраны все материалы на эту тему, сочинявшиеся на протяжении десятилетия. Они дополнены материалом злободневным –

трех дистрибутивов Linux из числа самых популярных: Fedora, openSUSE, Ubuntu.

holy wars

Большим сравнением

Spiders and Robots Exclusion

Исключение пауков и роботов
Spiders and Robots Exclusion

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

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

Данная статья объяснит, как контролировать поведение роботов и пауков на вашем узле. Для краткости я буду называть роботов и пауков одним словом - роботы.

Исключение роботов

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

Если робот найдет этот файл, то он проанализирует его содержимое для определения доступных и запретных документов. Настройка файла robots.txt позволяет управлять как поведением конкретных роботов, так и всеми роботами сразу.

Расположение файла robots.txt

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

GET /robots.txt

где под узлом подразумевается HTTP сервер, работающий на определенном хосте и порте. Приведу примеры правильных расположений файла (в первых трех случаях это один и тот же файл, а в последнем случае - другой):

http://www.webclub.ru/robots.txt
http://www.webclub.ru:80/robots.txt
http://webclub.ru/robots.txt
http://www.webclub.ru:8080/robots.txt

Обратите внимание, что узел может иметь только один файл "/robots.txt". Размещение файла в каталогах пользователей не имеет смысла. Поэтому вам придется объединять все в одном файле. Если вы этого не хотите делать, пользователи могут воспользоваться META тэгом "Robots".

Примите также во внимание, что URL чуствительны к регистру - "/robots.txt" должен состоять из строчных букв.

Приведу пример неправильных файлов robots.txt:

http://www.webclub.ru/admin/robots.txt
http://www.webclub.ru/~andy/robots.txt
http://www.webclub.ru/Robots.txt
http://www.webclub.ru/ROBOTS.TXT
ftp://ftp.webclub.ru/robots.txt

Содержимое файла robots.txt

Файл "/robots.txt" выглядит примерно следующим образом:

User-agent: *
Disallow: /cgi-bin/
Disallow: /private/
Disallow: /tmp/
Disallow: /~andy/

Обратите внимание, что для каждого запрещаемого URL требуется отдельная строка с "Disallow". Вы не можете сказать "Disallow: /cgi-bin/ /tmp/". Нельзя также оставлять пустые строки в одной записи - они служат для разделения нескольких записей.

Регулярные выражения не поддерживаются ни в строке User-agent, ни в строках Disallow. Знак '*' в строке User-agent имеет специальное значение "любой робот". То есть вы не можете указывать строки типа "Disallow: /tmp/*" или "Disallow: *.gif".

Также необходимо помнить, что строка

Disallow: /texture

запретит доступ как к каталогу /texture, так и к файлам /texture.*, в то время, как строка

Disallow: /texture/

запретит доступ только к каталогу /texture.

Для исключения всех роботов со всего узла воспользуйтесь записью

User-agent: *
Disallow: /

Для разрешения полного доступа всем роботам воспользуйтесь записью

User-agent: *
Disallow:

Или создайте пустой файл "/robots.txt".

Для исключения определенной области для всех роботов воспользуйтесь записью

User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /private/

Для исключения определенного робота воспользуйтесь записью

User-agent: TeleportPro
Disallow: /

Вы можете также разрешить доступ только определенному роботу:

User-agent: WebCrawler
Disallow:

User-agent: *
Disallow: /

META тэг "Robots"

В том случае, если файл "/robots.txt" вам не доступен, вы все равно можете управлять поведением роботов. Для этого вам достаточно воспользоваться META тэгом "Robots".

META тэг "Robots" позволяет авторам указать роботу, можно ли индексировать документ и можно ли собирать в нем ссылки.

META тэг "Robots" эвляется регистро-независимым.

Расположение META тэга "Robots"

Как и любой META тэг он помещается в секцию HEAD документа HTML:

<html>
<head>
<meta name="robots" content="noindex,nofollow">
<meta name="description" content="This page ....">
<title>...</title>
</head>
<body>
...

Содержимое META тэга "Robots"

Значение META тэга "Robots" содержит директивы, разделенные запятой. В настоящий момент определены директивы [NO]INDEX и [NO]FOLLOW. Директива INDEX указывает, что данную страницу можно индексировать. Директива FOLLOW указывает, что робот может следовать по ссылкам, содержащимся на данной странице. Директивы NOINDEX и NOFOLLOW имеют обратное значение. По умолчанию действуют INDEX и FOLLOW. Значения ALL и NONE устанавливают обе директивы: ALL=INDEX,FOLLOW и NONE=NOINDEX,NOFOLLOW.

Примеры:

<meta name="robots" content="index,follow">
<meta name="robots" content="noindex,follow">
<meta name="robots" content="index,nofollow">
<meta name="robots" content="noindex,nofollow">
<meta name="robots" content="all">
<meta name="robots" content="none">

Нельзя указывать повторяющиеся или конфликтующие директивы:

<meta name="Robots"
 content="INDEX,NOINDEX,NOFOLLOW,FOLLOW,FOLLOW">

Ниже приведен формальный синтаксис значения META тэга "Robots":

content    = all | none | directives
all        = "ALL"
none       = "NONE"
directives = directive ["," directives]
directive  = index | follow
index      = "INDEX" | "NOINDEX"
follow     = "FOLLOW" | "NOFOLLOW"

В заключение хочу сказать, что несмотря на все вышесказанное, ничто кроме самого HTTP-сервера не может запретить роботам ползать по всему вашему узлу. Оба этих способа исключения работают только с так называемыми "вежливыми" роботами. Хочу также заметить, что не все роботы поддерживают META тэг "Robots", хотя их процент растет.

Дополнительная информация: