заголовок статті
Текст статті, який кимось написаний. Інко гнити - її автор.
Веб-дизайнери і розробники люблять кидатися жаргонами і незрозумілими фразами, які нам іноді складно зрозуміти. У цій статті мова піде про семантичному коді. Давайте розберемося, що ж це таке!
Що таке семантичний код?
Навіть якщо ви не веб-дизайнер, ви напевно знаєте, що ваш сайт був написаний в HTML. HTML був спочатку призначений як засіб описують зміст документа, а не як засіб, щоб зробити вигляд візуально приємним. Семантичний код повертається до цієї оригінальної концепції і закликає веб-дизайнерів писати код, який визначає зміст, а не те як воно має виглядати. Наприклад, заголовок сторінки може бути запрограмований таким чином:
Це заголовок сторінки
Це зробило б назва великим і жирним, надаючи йому вигляд заголовка сторінки, але в ньому немає нічого, що описує його як "заголовок" в коді. Це означає, що комп'ютер не може визначити це як заголовок сторінки.
При написання назви семантично для того, щоб комп'ютер розпізнавав його як "заголовок", ми повинні використовувати наступний код:
Зовнішній вигляд заголовка може бути визначений в окремому файлі, який називається "каскадні таблиці стилів" (CSS), при цьому не втручаючись в ваш описовий (семантичний) код HTML.
Чим важливий семантичний код?
Можливість комп'ютера правильно розпізнавати контент важливо з кількох причин:
Також у семантичного коду є й інші переваги:
Як переконатися в тому, що веб-сайт використовує семантичний код?
На даний момент не існує інструмента, який може перевірити наявність семантичного коду. Все зводиться до перевірки наявності в коді квітів, шрифтів або макетів, замість опису контенту. Якщо аналіз коду звучить страшнувато, то прекрасної відправною точкою буде питання до вашого веб-дизайнеру - кодує він дотримуючись семантику? Якщо він тупо на вас дивиться або починає безглузду балаканину, то тоді ви можете бути впевнені, що він не кодує даними способом. У цей момент ви повинні вирішити, надасте йому новий напрям в роботі, або знайдете собі нового дизайнера ?!
семантика (Фр. Sémantique від грец. Σημαντικός - позначає) - наука про розуміння певних знаків, послідовностей символів і інших умовних позначень. Ця наука використовується в багатьох галузях: лінгвістика, проксеміка, прагматика, етимологія і т.д. Ніяк не збагну, що ці слова означають і чим всі ці науки займаються. Та й не важливо, мене цікавить питання застосування семантики при верстці сайтів.
Тут не буду торкатися термін Семантичний веб. На перший погляд, може здатися, що теми Семантичний веб і семантичний HTML код - це майже одне і теж. Але насправді Семантичний веб поняття, досить філософське і з нинішньою реальністю має не так багато спільного.
У мові кожне слово має певний сенс, призначення. Коли ти говориш "ковбаса", ти маєш на увазі харчовий продукт, який представляє собою фарш (як правило, м'ясної) в довгастої оболонці. Коротше кажучи маєш на увазі ковбасу, а не молоко або зелений горошок.
HTML - це теж мова, його "слова", іменовані тегами, теж мають певний логічний зміст і призначення. З цього в першу чергу семантичний HTML код - це верстка з правильним використанням HTML тегів, Використанням їх за призначенням, так як їх задумували розробники мови HTML і веб стандартів.
microformats.org - спільнота, яка працює над втіленням ідеалістичних ідей Семантичного вебу в життя через зближення розмітки сторінок до тих самих семантичним ідеалам.
Якщо у мене на сайті інформація відображається так само як на дизайні, навіщо собі ще ламати мозок і думати про якусь семантиці ?! Це ж додаткова робота! Кому це потрібно ?! Хто це оцінить крім іншого верстальника?
Мені такі питання доводилося частенько чути. Давай розберемося.
Підвищує доступність інформації на сайті. В першу чергу це має значення для альтернативних агентів таких як:
Пошукові системи постійно вдосконалюють методи пошуку, щоб в результатах була та інформація, яку дійсно шукає користувач. Семантичний HTML сприяє цьому, тому що піддається набагато краще аналізу - код чистіше, код логічний (чітко видно де заголовки, де навігація, де вміст).
Хороший контент плюс якісна семантична верстка - це вже серйозна заявка на хороші позиції в ведучих пошукових систем.
Семантика коду HTML завжди є гарячим питанням. Деякі розробники намагаються завжди писати семантичний код. Інші критикують догматичних прихильників. А деякі навіть поняття не мають про те, що це таке і навіщо воно потрібне. Семантика визначається в HTML в тегах, класах, ID, і атрибутах, які описують призначення, але не задають точно зміст, яке в них укладено. Тобто мова йде про поділ змісту і його формату.
Почнемо з очевидного прикладу.
Текст статті, який кимось написаний. Інко гнити - її автор.заголовок статті
Незалежно від того, чи вважаєте ви, що HTML5 готовий до використання чи ні, напевно використання тега Але не все так чітко представляється тегами HTML5. Давайте розглянемо набір імен класів і розберемося з тим, чи відповідають вони вимогам семантики. Чи не семантичний код. Це класичний приклад. Кожна робоча середу CSS для модульної сітки використовує такого типу імена класів для визначення елементів сітки. Чи буде це "yui-b", "grid-4", або "spanHalf" - такі імена ближче до завдання розмітки, ніж до опису змісту. Однак їх використання в більшості випадків неминуче при роботі з шаблонами модульних сіток. Семантичний код. Нижній колонтитул (footer) придбав стійке значення в веб дизайні. Це нижня частина сторінки, яка містить такі елементи як повторювана навігація, права використання, інформацію про автора і так далі. Даний клас визначає групу для всіх цих елементів без їх опису. Якщо ви перейшли до використання HTML5, то краще застосовувати елемент Чи не семантичний код. Він точно визначає зміст. Але чому текст повинен бути більшим? Щоб виділятися серед іншого більш дрібного тексту? "StandOut" (виділення) більше підходить в даному випадку. Ви можете вирішити змінити стиль для виділяє тексту, але нічого не робити з його розміром, і в такому випадком назва класу може привести вас в замішання. Семантичний код. В даному випадку мова йде про визначення рівня важливості елементу в інтерфейсі програми (наприклад, параграфа або кнопки). Елемент з більш високим рівнем може мати яскраві кольори і більший розмір, а елементи з низьким рівнем можуть містити більше змісту. Але точного визначення стилів в даному випадку немає, тому код є семантичним. Дана ситуація дуже схожа на використання тегів Семантичний код. Якби кожне ім'я класу можна було так чітко визначити! В даному випадку ми маємо опис розділу, який має зміст, призначення якого легко описати, також як і "tweets", "pagination" або "admin-nav". Чи не семантичний код. В даному випадку мова йде про завдання стилю для першого параграфа на сторінці. Такий прийом використовується для залучення уваги читачів до матеріалу. Краще використовувати ім'я "intro", в якому відсутня згадка елемента. Але ще краще використовувати селектор для таких параграфів, наприклад article p: first-of-type або h1 + p. Чи не семантичний код. Це дуже узагальнене ім'я класу, яке використовується для організації форматування елементів. Але в ньому немає нічого, щоб стосувалося опису змісту. Різні теоретики семантики рекомендують в таких випадках використовувати ім'я класу на зразок "group". Цілком ймовірно, що вони мають рацію. Так як даний елемент, безсумнівно, служить для групування декількох інших елементів, і рекомендований назва буде краще описувати його призначення без занурення в деталі. Чи не семантичний код. Занадто детальний опис формату змісту. Краще підібрати інше ім'я, яке буде описувати зміст, а не його формат. Семантичний код. Клас дуже добре описує статус змісту. Наприклад, повідомлення про успішне завершення операції може мати зовсім інший стиль від повідомлення про помилку. Чи не семантичний код. В даному прикладі є спроба поставити визначення формату змісту, а не його призначення. "Plain-jane" дуже схоже на "normal" або "regular". Ідеальний код CSS повинен бути написаний так, щоб не виникало необхідності в іменах класу на зразок "regular", які описують формат змісту. Чи не семантичний код. Такого типу класи зазвичай використовуються для визначення елементів сайту, які не повинні включатися в ланцюжок посилань. В даному випадку краще використовувати щось на зразок rel \u003d nofollow для посилань, але не клас для всього змісту. Чи не семантичний код. Тут є спроба описати формат вмісту, а не його призначення. Припустимо, що у вас на сайті є дві статті. І ви бажаєте задати їм різні стилі. "Огляди фільмів" матимуть блакитний фон, а "Гарячі новини" - червоний фон і шрифт більшого розміру. Один із способів вирішити задачу такий: Інший спосіб такий: Напевно, якщо опитати кількох розробників про те, який код більш відповідає вимогам семантики, більшість вкаже на перший варіант. Він відмінно відповідає матеріалу даного уроку: опис призначення без посилань на форматування. А другий варіант вказує на формат ( "blueBg" - ім'я класу, який сформований з двох англійських слів, що означають "блакитний фон"). Якщо раптом буде ухвалено рішення поміняти дизайн оглядів фільмів - наприклад, зробити зелений фон, то ім'я класу "blueBg" перетвориться на кошмар розробника. А ім'я "movie-review" дозволить абсолютно спокійно змінювати стилі оформлення із збереженням відмінної рівня підтримки коду. Але ніхто не стверджує, що перший приклад краще в усіх без винятку випадках. Припустимо, що певний відтінок синього використовується в багатьох місцях на сайті. Наприклад, він є фоном для деякої частини нижнього колонтитула і областей в бічній панелі. Ви можете скористатися наступними селектором: Movie-review, footer\u003e div: nth-of-type (2), aside\u003e div: nth-of-type (4) (background: # c2fbff;) Ефективне рішення, так як колір визначається тільки в одному місці. Але такий код стає складним для підтримки, так як має довгий селектор, складний для візуального сприйняття. Також будуть потрібні інші селектори для визначення унікальних стилів, що призведе до повторення коду. Або ви можете використовувати інший підхід і залишити їх розділеними: Movie-review (background: # c2fbff; / * Визначення кольору * /) footer\u003e div: nth-of-type (2) (background: # c2fbff; / * І ще одне * /) aside\u003e div: nth-of- type (4) (background: # c2fbff; / * І ще одне * /) Такий стиль допомагає зберігати CSS файл більш організованим (різні області визначаються в різних розділах). Але платою є повторення визначень. Для великих сайтів визначення одного і того ж кольору може доходити до декількох тисяч разів. Жахливо! Варіантом вирішення може бути використання класу за типом "blueBg" для визначення кольору один раз і вставки його в HTML коді, коли потрібно використовувати даний дизайн. Звичайно, його краще назвати "mainBrandColor" або "secondaryFont", щоб відв'язатися від опису форматування. Можна пожертвувати семантикою коду на користь збереження ресурсів. МАТЕМАТИКА Укр. Ом. ун-ту. 2016. № 3. С. 7-9. УДК 512.4 В.А. Романьков ВАРІАНТ семантичного стійкого шифрування НА БАЗІ RSA * Основною метою статті є пропозиція іншого способу вибору одного з основних параметрів схеми шифрування заснованої на криптографічного системі RSA, запропонованої автором в попередніх роботах. Оригінальна версія базується на обчислювальної складності визначення порядків елементів в мультиплікативних групах модулярних кілець. Пропонований спосіб змінює цю основу на іншу важковирішувану завдання визначення приналежності елементів мультиплікативний груп модулярних кілець ступенями цих груп. Окремим випадком такого завдання є класична задача визначення квадратичності вирахування, яка вважається обчислювально важкою. Це завдання визначає семантичну стійкість відомої системи шифрування Гольдвассер-Мікалі. У запропонованій версії семантична стійкість схеми шифрування заснована на обчислювальної складності проблеми визначення приналежності елементів мультиплікативний груп модулярних кілець ступенями цих груп. Ключові слова: криптографічний система RSA, шифрування з відкритим ключем, модулярних кільце, квадратичний відрахування, семантична стійкість. 1. Введення Метою даної роботи є представлення нових елементів для версії схеми шифрування на базі RSA, введеної автором в. А саме: пропонується інший спосіб завдання фігурують в цій схемі підгруп. Цей спосіб призводить до заміни лежить в основі схеми обчислювально складної проблеми визначення порядків елементів мультиплікативний груп модулярних кілець на обчислювально складну проблему входження в задані ступеня цих груп. Окремим випадком останньої проблеми є класична задача визначення квадратичності вирахування елемента мультиплікативної групи модулярного кільця. Система шифрування з відкритим ключем RSA введена в обіг Ривестом, Шамір і Адлеманом в 1977 р. Вона широко використовується у всьому світі і входить практично в усі підручники криптографії. Щодо цієї системи і її криптографічного стійкості см., Наприклад. Базовий варіант системи є детермінованим і з цієї причини не має властивість семантичної секретності, найважливішим показником криптографічного стійкості системи шифрування з відкритим ключем. Тому на практиці використовують варіанти системи, мета яких - внести в неї імовірнісний елемент і тим самим забезпечити виконання властивості семантичної секретності. Установка: платформа шифрування Нехай n - твір двох великих різних простих чисел p і q. В якості платформи для системи шифрування вибирається кільце відрахувань Zn. Модуль n і платформа Zn є відкритими елементами системи, числа p і q - секретними. * Дослідження підтримано Російським фондом фундаментальних досліджень (проект 15-41-04312). © Романьков В.А., 2016 Романьков В.А. Через ф: N ^ N позначається функція Ейлера, в даному випадку приймає значення ф (п) \u003d (p-1) (q-1). Таким чином, порядок мультиплікативної групи Z * n кільця Zn дорівнює (p-1) (q-1). Щодо цих понять див., Наприклад. Далі вибираються дві підгрупи M і H групи Z * n взаємно простих періодів г і t, відповідно. Ці підгрупи пропонується задавати через їх породжують елементи M \u003d гр (g1, ..., gk), H \u003d гр (Й1, .., hl). Нагадаємо, що періодом t (G) групи G називається найменше число t, таке, що ДГ \u003d 1 для будь-якого елемента geG. Періодом групи Z * n служить число t (n), що дорівнює найменшого спільного кратного чисел p-1 і q-1. Підгрупи M і H можуть бути циклічними і задаватися одним породжує елементом. Породжують елементи підгруп M і H вважаються відкритими, в той час, як періоди підгруп г і t - секретними. В і пояснено, як ефективно здійснити зазначений вибір підгруп M і H, знаючи секретні параметри p і q. Більш того, можна спочатку поставити пані та t, а потім вибрати p і q, а вже потім здійснити подальші дії. Відзначимо, що побудова елементів заданих порядків в кінцевих полях виконується стандартною ефективною процедурою, описаною, наприклад. Перехід до побудови елементів заданих порядків в мультиплікативних групах Z * n модулярних кілець Znосуществляется очевидним способом з використанням Китайської теореми про залишки або. Установка: вибір ключів Ключ шифрування e - будь-яке натуральне число, взаємно просте з г. Ключ розшифрування d \u003d ^ обчислюється з рівності (Te) d1 \u003d 1 (modr). (1) Ключ d існує, так як параметр d1 обчислюється внаслідок взаємної простоти te і г. Ключ e відкритий, ключ d і параметр d1 - секретні. Алгоритм шифрування Для передачі по відкритій мережі повідомлення - m елемента підгрупи M, Аліса вибирає випадковий елемент h підгрупи H і обчислює елемент hm. Передача має вигляд c \u003d (hm) e (modn). (2) алгоритм розшифрування Боб розшифровує отримане повідомлення c наступним чином: cd \u003d m (modn). (3) Пояснення правильності розшифрування Так як ed \u003d 1 (modr), знайдеться ціле число k, таке, що ed \u003d 1 + rk. тоді cd \u003d (hm) ed \u003d (ht) edi m (mr) k \u003d m (mod n). (4) Отже, елемент h записується як елемент підгрупи H у вигляді значення групового слова u (x1,., Xl) від що породжують елементів h1t ..., hl підгрупи H. Фактично ми вибираємо слово u (x1,., xl), а потім обчислюємо його значення h \u003d u (h1t ..., hl). Зокрема це означає, що породжують елементи h1t ..., hl є відкритими. крипостійкість схеми Криптографічний стійкість схеми грунтується на труднощі визначення по заданих породжує елементів підгрупи H групи Z * n періоду або порядку цієї підгрупи. Якби порядок елемента можна було вирахувати ефективним алгоритмом, то підрахувавши порядки o rd (h1), ..., ord (hl) породжують елементів підгрупи H, ми могли б знайти її період t \u003d t (H), рівний їх найменшого спільного кратного . Це дозволило б прибрати з даного варіанту шифрування затеняющий множник h перетворенням з1 \u003d met (modri), звівши процедуру розшифрування до класичної системі RSA з відкритим ключем шифрування et. 3. Інший спосіб завдання підгрупи H У даній роботі пропонується інший варіант завдання підгрупи H в розглянутій схемі шифрування. Спочатку розглянемо його окремий випадок, пов'язаний з визнаною важкою задачею визначення квадратичності вирахування групи Z * n. Нагадаємо, що відрахування aeZ ^ називається квад-ратічн'м, якщо існує такий елемент xeZ * n, що х2 \u003d a (modn). Все квадратичні відрахування утворюють підгрупу QZ * n групи Z * n. Проблема визначення квадратичності довільного вирахування групи вважається обчислювально важкою. На цій властивості базується відома семантично стійка система шифрування Гольдвассер-Мікалі. Її семантична стійкість повністю визначається важкою проблемою визначення квадратичності вирахування. Припустимо, параметри p і q вибираються з умовою p, q \u003d 3 (mod 4), т. Е. P \u003d 4k +3, q \u003d 41 +3. У схемах, пов'язаних з квадратич-ністю відрахувань це припущення виглядає природним і зустрічається досить часто. Якщо воно виконано, відображення р: QZ * n ^ QZ * n, p: x ^ x2, є біекція. Підгрупа квадратичних лишків QZ * n групи має в Z * n індекс 4 см., Наприклад. Її порядок про ^^ 2 ^) дорівнює ф (п) / 4 \u003d (4k + 2) (41 + 2) / 4 \u003d 4kl + 2k + 21 + 1, т. Е. Є непарним числом. Вважаємо в поступовим зниженням дози шифрування H \u003d QZ * n. Будь-який елемент підгрупи H має непарний порядок, так як період t (Z * n), що дорівнює найменшого спільного кратного чисел p - 1 \u003d 4k +2 і q - 1 \u003d 41 +2, ділиться на 2, але не ділиться на 4. Максимально можливий вибір для M - підгрупа порядку 4, елементи якої мають парні порядки 2 або 4. Якщо існує ефективний спосіб обчислення порядку (або хоча б його парності) довільного елемента Варіант семантично стійкого шифрування на базі RSA групи 2 * п, то ефективно вирішується і проблема визначення квадратичності вирахування. Недоліком схеми при такому виборі є маломощность простору текстів -Підгрупи М. Фактично схема дублює вже згадувану відому схему Голь-двассер-Мікалі. Великі можливості ми отримуємо при наступному виборі. Нехай s - просте число, яке можна вважати досить великим. Нехай р і q - прості числа такі, що хоча б одне з чисел р - 1 або q - 1 ділиться на s. В і пояснено, що можна вибрати s, а потім ефективно знайти р або q з даними властивістю. Скажімо, число р шукається у вигляді 2sx +1. Змінюється х і проводиться перевірка на простоту отриманого р доти, поки воно не виявиться простим. Визначимо підгрупу Н \u003d, що складається з s-ступенів елементів групи 2 * п (при s \u003d 2 це підгрупа QZ * n). Якщо р \u003d 52К + su + 1 і q \u003d 521 + sv +1 (або q \u003d sl + V +1), де числа і і V не діляться на s, то порядок про ^ (Н) підгрупи Н має в групі 2 * п індекс б2 (або індекс s, якщо q \u003d sl + V +1), дорівнює Б2к1 + БКУ + б1п + ш\u003e. Цей порядок взаємно простий з s. Зокрема це означає, що елементи підгрупи Н мають порядку не діляться на s. Якщо елемент знаходиться поза підгрупи Н, то його порядок ділиться на s, так як s ділить порядок групи. Якщо проблема обчислення порядку елемента групи 2 * п (або визначення його подільності на s) ефективно вирішити в групі 2 * п, то в ній також ефективно вирішується проблема входження в підгрупу При виборі зазначеним способом підгрупи Н у нас з'являється можливість вибору в якості М циклічної підгрупи порядку г \u003d 52 (або близько s). Така підгрупа існує, так як порядок групи 2 * п, рівний (р-1) ^ - 1) \u003d (52К + ві) ^ 21 + sv) (або (52К + ві) ^ 1 + V)), ділиться на 52 (на s). Для завдання Н досить вказати s. При цьому для будь-якого вибору підгрупи М маємо М * 2 \u003d 1. Якщо при розшифровці повідомлення т вдасться отримати елемент виду тіл, де ed взаємно просто з s, то знайшовши цілі числа у і z такі, що edy + s2z \u003d 1, можна обчислити тілу \u003d т. Однак породжують елементи підгрупи Н при завданні виду не вказуються, тому, якщо існує алгоритм обчислення порядків елементів групи 2 * п, це не дозволяє обчислити період підгрупи H, що було б можливо в початковій версії з. Криптографічний стійкість версії схеми з заснована на труднощі завдання визначення порядку елемента групи 2 * п. У запропонованій версії вона заснована на труднощі визначення періоду підгрупи Z * s. Семантична стійкість Нехай відомо, що c \u003d (hm ") e (modn) - зашифроване повідомлення виду (2), де heH, т" \u003d т1 або т "\u003d т2. Шифрування вважається семантично стійким, якщо не можна ефективно визначити, чому ж все -таки відповідає с. Правильна відповідь mt (i \u003d 1 або 2) по-променя тоді і тільки тоді, коли cmje належить H. Значить, шифрування семантично стійке, якщо і тільки якщо проблема входження в H ефективно нерозв'язна. в даному цією статтею випадку це проблема входження в підгрупу s-виче-тов Z * s. в окремому випадку s \u003d 2 отримуємо відому вважається важкою проблему входження в Q2 * n, на якій заснована семантична стійкість системи шифрування Гольдвассер-Мікалі і ряду інших систем шифрування. ЛІТЕРАТУРА Романьков В. А. Нова семантично стійка система шифрування з відкритим ключем на базі RSA // Прикладна дискретна математика. 2015. № 3 (29). С. 32-40. Rivest R., Shamir A., \u200b\u200bAdleman L. A method for obtaining digital signatures and public-key cryptosystems // Comm. ACM. 1978. Vol. 21, № 2. P. 120126. Hinek M. Cryptanalysis of RSA and its variants. Boca Raton: Chapman & Hall / CRC, 2010 року. Song Y. Y. Cryptanalitic attacks on RSA. Berlin: Springer, 2008. Stamp M., Low R.M. Applied cryptanalysis. Breaking ciphers in the real world. Hoboken: JohnWiley & Sons, 2007. Roman "kov V.A. New probabilistic public-key encryption based on the RAS cryptosystem // Croups, Complexity, Cryptology. 2015. Vol. 7, № 2. P. 153156. Романьков В.А. Введення в криптографію. М.: Форум, 2012. Menezes A., Ojrschot P.C., Vanstone S.A. Handbook of Applied Cryptography. Boca Raton: CRC Press, 1996.. Goldwasser S., Micali S. Probabilistic encryption and how to play mental poker keeping secret all partial information // Proc. 14th Symposium on Theory of Computing, 1982. P. 365-377.
,
,
, І так далі, але до інших елементів інтерфейсу.
Але ...