stringtranslate.com

Канонизация

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

Варианты использования

Имена файлов

Файлы в файловых системах в большинстве случаев могут быть доступны через несколько имен файлов . Например, в Unix -подобных системах строка " /./" может быть заменена на " /". В стандартной библиотеке C эта задача выполняется функцией realpath(). Другие операции, выполняемые этой функцией для канонизации имен файлов, включают обработку /..компонентов, ссылающихся на родительские каталоги, упрощение последовательностей из нескольких слешей, удаление конечных слешей и разрешение символических ссылок .

Канонизация имен файлов важна для безопасности компьютера. Например, веб-сервер может иметь ограничение, согласно которому C:\inetpub\wwwroot\cgi-binмогут быть выполнены только файлы в каталоге cgi. Это правило обеспечивается путем проверки того, что путь начинается с C:\inetpub\wwwroot\cgi-bin\, и только после этого выполняется. Хотя C:\inetpub\wwwroot\cgi-bin\..\..\..\Windows\System32\cmd.exeизначально файл кажется находящимся в каталоге cgi, он использует ..спецификатор пути для обхода иерархии каталогов в попытке выполнить файл за пределами cgi-bin. Разрешение cmd.exeна выполнение было бы ошибкой, вызванной невозможностью канонизировать имя файла до простейшего представления, C:\Windows\System32\cmd.exe, и называется уязвимостью обхода каталога . При канонизации пути становится ясно, что файл не должен выполняться.

Юникод

В Unicode многие буквы с ударением могут быть представлены более чем одним способом. Например, é может быть представлена ​​в Unicode как символ Unicode U+0065 (ЛАТИНСКАЯ СТРОЧНАЯ БУКВА E), за которым следует символ U+0301 (КОМБИНИРОВАНИЕ ОСТРЫМ УДАРЕНИЕМ), но его также можно представить как предсоставной символ U+00E9 (ЛАТИНСКАЯ СТРОЧНАЯ БУКВА E С ОСТРЫМ УДАРЕНИЕМ). Это усложняет сравнение строк, поскольку необходимо рассмотреть все возможные представления строки, содержащей такие глифы. Для решения этой проблемы Unicode предоставляет механизм канонической эквивалентности . В этом контексте канонизация — это нормализация Unicode .

Кодировки переменной ширины в стандарте Unicode, в частности UTF-8 , могут вызывать дополнительную необходимость канонизации в некоторых ситуациях. А именно, по стандарту в UTF-8 существует только одна допустимая последовательность байтов для любого символа Unicode, [1] но некоторые последовательности байтов являются недопустимыми, т. е. их нельзя получить путем кодирования любой строки символов Unicode в UTF-8. Некоторые неряшливые реализации декодеров могут принимать недопустимые последовательности байтов в качестве входных данных и выдавать допустимый символ Unicode в качестве выходных данных для такой последовательности. Если использовать такой декодер, некоторые символы Unicode фактически имеют более одной соответствующей последовательности байтов: допустимую и некоторые недопустимые. Это может привести к проблемам безопасности, аналогичным описанным в предыдущем разделе. Поэтому, если требуется применить некоторый фильтр (например, регулярное выражение, написанное в UTF-8) к строкам UTF-8, которые позже будут переданы декодеру, который допускает недопустимые последовательности байтов, следует канонизировать строки перед передачей их фильтру. В этом контексте канонизация — это процесс перевода каждого символа строки в его единственную допустимую последовательность байтов. Альтернативой канонизации является отклонение любых строк, содержащих недопустимые последовательности байтов.

URL

Канонический URL-адрес — это URL-адрес , определяющий единый источник истины для дублированного контента .

Использование Google

Канонический URL — это URL страницы, которую Google считает наиболее репрезентативной из набора дубликатов страниц на вашем сайте. Например, если у вас есть URL для одной и той же страницы, такие как https://example.com/?dress=1234и https://example.com/dresses/1234, Google выбирает один из них как канонический. Обратите внимание, что страницы не обязательно должны быть абсолютно идентичными; незначительные изменения в сортировке или фильтрации страниц списков не делают страницу уникальной (например, сортировка по цене или фильтрация по цвету элемента).

Канонический домен может находиться в другом домене, чем дубликат. [2]

Интернет

С помощью канонических URL-адресов поисковая система знает, какую ссылку следует предоставить в результате запроса.

Элемент канонической ссылки может использоваться для определения канонического URL.

Интранет

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

Разное

Канонические URL-адреса — это обычно URL-адреса, которые используются для действия «Поделиться».

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

Поисковые системы и SEO

В веб-поиске и поисковой оптимизации (SEO) канонизация URL-адресов касается веб-контента, который имеет более одного возможного URL-адреса. Наличие нескольких URL-адресов для одного и того же веб-контента может вызвать проблемы для поисковых систем, в частности, при определении того, какой URL-адрес должен отображаться в результатах поиска. [3] Большинство поисковых систем поддерживают элемент ссылки Canonical в качестве подсказки к тому, какой URL-адрес следует рассматривать как истинную версию. Как указал Джон Мюллер из Google, наличие других директив на странице, таких как элемент robots noindex, может давать поисковым системам противоречивые сигналы о том, как обрабатывать канонизацию [4]

Пример:

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

XML

Канонический XML- документ по определению является XML-документом в форме XML Canonical, определенной спецификацией The Canonical XML. Вкратце, канонизация удаляет пробелы внутри тегов, использует определенные кодировки символов, сортирует ссылки на пространства имен и устраняет избыточные, удаляет объявления XML и DOCTYPE и преобразует относительные URI в абсолютные URI.

Простым примером могут служить следующие два фрагмента XML:

  1. <node1 x='1' a="1" a="2">Data</node1    > <node2>Data</node2>
  2. <node1 a="2" x="1">Data</node1> <node2>Data</node2>

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

Полный перечень изменений канонизации приведен ниже:

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

В морфологии и лексикографии лемма — это каноническая форма набора слов . Например, в английском языке run , running , ran и running являются формами одной и той же лексемы , поэтому мы можем выбрать одну из них; напр. run , чтобы представить все формы. Лексические базы данных, такие как Unitex, используют этот тип представления.

Лемматизация — это процесс преобразования слова в его каноническую форму .

Смотрите также

Ссылки

  1. ^ RFC 2279: UTF-8, формат преобразования ISO 10646
  2. ^ «Объединение дублирующихся URL-адресов с каноническими | Центр поиска Google».
  3. ^ Каттс, Мэтт (4 января 2006 г.). «Советы по SEO: канонизация URL». Мэтт Каттс: Гаджеты, Google и SEO . Получено 3 сентября 2013 г.
  4. ^ "Канонический URL-адрес — noindex, nofollow" . Получено 20 апреля 2020 г. .

Внешние ссылки