Содержание

Валидация верстки популярных сайтов / Хабр

Не буду писать предисловий, перейду сразу к делу. Никто не задавался целью проверить валидность html кода нескольких жутко популярных сайтов?
С помощью полезного пункта меню в браузере Opera были проверены главные страницы вот этих сайтов:
1. google.com (английская версия)
2. yandex.ru
3. rambler.ru
4. bing.com
5. mail.ru
6. vkontakte.ru
7. facebook.com (русская версия)
8. twitter.com
9. wikipedia.org
10. artlebedev.ru
То есть 4 известных поисковика, 5 популярных сайтов и еще 1 просто хохмы ради.

google.com

47 ошибок
Можно сказать, что Google идет в ногу со временем — только тут и у Википедии применяется HTML 5. Но как-то странно смотрится комбинация HTML 5 и устаревших тегов и параметров (font, bgcolor и т. п.). Из-за этого валидатор и выводит ошибку в половине случаев. Вторая половина — амперсанды в яваскриптовых вставках типа onblur=«google&&google.
fade&&google.fade()».

yandex.ru

44 ошибки
Практически все ошибки из-за закрывающих тегов. Нет, они не отсутствуют, наоборот — отсутствуют открывающие теги. Ну и по мелочи еще: не указан альтернативный текст для изображения, амперсанды (& вместо & в ссылках), нет указания типа скрипта. При этом на минималистичном ya.ru всего 4 ошибки: не указан тип документа, дублируется идентификатор, используются атрибут autocomplete и тип поля search (валидатор определил страницу как HTML 4.01 Transitional).

rambler.ru

57 ошибок
Почти та же картина, что и у Яндекса: амперсанды и закрывающие теги при отсутствии открывающих. Легкая версия Рамблера r0.ru валидацию проходит.

bing.com

4 ошибки
Рекорд по числу ошибок среди четырех поисковиков поисковиков. Все четыре ошибки — недопустимые вложенные теги (div внутри a, p внутри span).

mail.ru

236 ошибок
Тоже своеобразный рекорд, но теперь уже на самое большое количество ошибок в этом тесте. Среди ошибок наиболее примечательны все те же амперсанды, отсутствие кавычек при определении параметров тегов и отстутствие параметра type у скриптов. Не знаю, то ли валидатор так работает, то ли из-за отсутствия этого параметра, но теги внутри строк в скрипте он тоже посчитал за ошибки.

vkontakte.ru

69 ошибок
Самое большое разнообразие ошибок: амперсанды, кавычки, теги не в том месте, незакрытые теги, отсутствующие обязательные параметры, присутствующие ненужные параметры и т. п.

facebook.com

39 ошибок
Почти такая же картина, что и у ВКонтакте, только дополненная дубликатами идентификаторов и новинками из HTML 5 (параметр autocomplete; на странице используется XHTML 1.0 Strict).

twitter.com

15 ошибок
Тут есть оригинальная ошибка: пробелы в параметре name. Ну и не в тех местах и не те мета-теги и ссылки на CSS.

wikipedia.org

0 ошибок
Единственная валидная главная страница — у Википедии.
Учитывая, что все остальное поставлено на коммерческую основу, а Википедия — открытый ресурс, есть над чем подумать… Кроме того, используется HTML 5.

artlebedev.ru

25 ошибок
Известная страница известного дизайнера с матом в заголовке и фразой «<N.B.>Лучший валидатор — это браузер</N.B.>» при попытке валидации напрямую. На странице отстутствует doctype, стоит закрывающий тег к link (чего сроду никто не делал), нет подписей к изображениям, не указан тип скрипта и CSS, амперсанды опять же… В-общем, не катит.

Важность валидность кода сайта, валидность верстки

Главная » Статьи » Валидность верстки

Компания Google заявляет, что валидный HTML код является сигналом качества.

У программистов нет единого мнения насчет важности валидного HTML кода и верстки. Некоторые думают, что это очень важно, в то время как другие говорят, что это не имеет значения. Недавно в компании Google отметили, что валидный HTML код является показателем качества:

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

Валидный HTML код, валидная верстка

Уделяя большое внимание валидации кода и валидной верстке, мы разработали систему, которую используем как метрику качества для измерения. Вот как мы делаем на наших собственных страницах. Мы даем каждой из наших страниц оценку от 0-10 баллов, где 0 является худшим показателем (страницы с 10 или более HTML и CSS ошибками проверки) и 10 (в идеале 0 ошибок валидации). Мы начали делать это около двух лет назад, вначале выборочно,а в настоящее время проверяем все наши страницы, в случае, если клиент принял решения о необходимости валидного кода.

Что такое валидный HTML код?

Большинство веб-страниц написаны на HTML. Как и в каждом языке, в HTML есть свои собственные грамматика, лексика и синтаксис, и каждый документ, написанный на HTML должен следовать этим правилам, то есть верстка должна быть валидной.

Как и любой язык, HTML постоянно меняется. HTML стал относительно сложным языком, и поэтому в нем очень легко сделать ошибку. HTML код, который написан не по правилам, называется не валидным HTML кодом.

Почему важен валидный HTML код?

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

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

Хотя большинство крупных поисковых систем может справляться с небольшими ошибками в HTML коде, отсутствие скобки в вашем HTML коде может быть причиной того, что ваша веб-страница не будет найдена в поисковых системах.

Если вы не закроете некоторые теги должным образом, или если некоторые важные теги отсутствуют, поисковые системы могут игнорировать все содержание этой страницы.

Как вы можете проверить валидность вашего HTML кода?

Откройте страницу валидатора и проверьте результат. Либо просто скопируйте адрес валидатора в адресную строку браузера: http://validator.w3.org/

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

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

  • HTML — Язык разметки гипертекста (Hypertext Markup Language) или расширяемый язык разметки гипертекста (Extensible Hypertext Markup Language, XHTML)
⇐ Заказать сайт-визиткуПричины почему сайт необходим любой серьезной организации ⇒

Отладка макета с помощью Layout Inspector и Layout Validation | Android Studio

Инспектор макетов в Android Studio позволяет отлаживать макет вашего приложение, показывая иерархию представлений и позволяя вам проверять свойства каждый просмотр. С помощью Layout Inspector вы можете сравнить макет вашего приложения с создавайте макеты, отображайте увеличенное или трехмерное изображение вашего приложения и изучайте детали его макета во время выполнения. Это особенно полезно, когда ваш макет построен на время выполнения, а не полностью в XML, и макет ведет себя неожиданно.

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

Чтобы открыть инспектор макетов, запустите приложение на подключенном устройстве. или эмулятор, а затем выберите Инструменты > Инспектор макетов . Если вы переключитесь между несколькими устройствами или проектами Инспектор макетов автоматически подключает к отлаживаемым процессам, запущенным на переднем плане подключенного устройства.

Рис. 1. Снимок Layout Inspector для примера приложения Sunflower. Расположение Инспектор отображает следующее слева направо: Дерево компонентов, Макет Дисплей и атрибуты.

  • Дерево компонентов : Иерархия представлений в компоновке.
  • Layout Display : отображение макета приложения в том виде, в котором оно отображается на вашем устройстве. или эмулятор с отображением границ макета для каждого представления.
  • Атрибуты : Атрибуты макета для выбранного представления. Инспектор макетов требует перезапуска активности для доступа к атрибутам. Для дополнительной информации, см. Перезапуск активности.

Дополнительные сведения о редакторе макетов см. Знакомство с редактором макетов.

Live Updates

Дисплей макета отображает макет вашего приложения так, как он отображается на вашем устройстве или эмулятор с отображением границ макета для каждого представления. Вы можете нажать на каждый компонент для проверки.

Live Layout Inspector предоставляет полную информацию о вашем приложении в режиме реального времени. Пользовательский интерфейс, когда он развернут на устройстве или эмуляторе с уровнем API 29 или выше.

Чтобы включить Live Layout Inspector, выберите Live Updates вариант от панель инструментов Layout Inspector .

Live Layout Inspector включает динамическую иерархию макетов, обновляющую Дерево компонентов и Компоновка Отображение по мере изменения представлений на устройстве.

Выберите или изолируйте представление

Представление обычно рисует то, что пользователь может видеть и с чем может взаимодействовать.

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

Чтобы выбрать вид, щелкните его в дереве компонентов или в отображении макета . Все атрибуты макета для выбранного представления отображаются в атрибутах панель.

Если ваш макет включает перекрывающиеся виды, вы можете выбрать вид, который не впереди, щелкнув его в дереве компонентов

или поворот макета.

Для работы со сложными макетами можно изолировать отдельные виды, чтобы подмножество макета показано на Дерево компонентов и визуализируется в Отображение макета .

Рисунок 2. Чтобы изолировать вид, щелкните его правой кнопкой мыши в дереве компонентов и выберите Показать только поддерево или Показать только родительские элементы .

Чтобы вернуться к полному представлению, щелкните его правой кнопкой мыши и выберите Показать все .

Скрыть границы макета и метки просмотра

Чтобы скрыть ограничивающую рамку или метки просмотра для элемента макета, нажмите Просмотр Опции в верхней части Layout Display и переключите Show Borders или Show View Этикетка .

Рисунок 3. Чтобы скрыть границы макета и просмотреть метки, нажмите на вторую Параметры просмотра на панели инструментов Layout Inspector .

3D-режим

Макетный дисплей обеспечивает расширенную 3D-визуализацию вашего иерархия представлений приложения во время выполнения. Чтобы использовать эту функцию, в Live Layout Окно инспектора, нажмите на 3D-режим кнопка и вращайте его, перетаскивая мышью.

Рис. 4. Повернутый трехмерный вид макета.

Рисунок 5. Чтобы развернуть или свернуть слои макета, используйте кнопку Ползунок Интервал между слоями .

Сравнение макета приложения с эталонным наложенным изображением

Чтобы сравнить макет приложения с эталонным изображением, например макетом пользовательского интерфейса, вы можете загрузите наложение растрового изображения в инспекторе макетов.

  • Чтобы загрузить наложение, выберите Загрузить наложение вариант из Инспектор макетов панель инструментов. Наложение масштабируется в соответствии с макетом.
  • Чтобы настроить прозрачность наложения, используйте ползунок Overlay Alpha .
  • Чтобы удалить наложение, нажмите Очистить наложение .

Захват снимков иерархии макетов

Инспектор макетов позволяет сохранять моментальные снимки макета запущенного приложения иерархии, чтобы вы могли легко делиться ими с другими или ссылаться на них позже.

Снимки фиксируют данные, которые вы обычно видите при использовании макета. Инспектор, включая подробный 3D-рендеринг вашего макета, дерево компонентов макета View, Compose или гибридного макета, а также подробные атрибуты для каждого компонент вашего пользовательского интерфейса. Чтобы сохранить снимок, выполните следующие действия:

  1. Откройте инспектор компоновки.
  2. Инспектор макетов должен автоматически подключаться к процессу вашего приложения. Если нет, выберите процесс приложения в раскрывающемся меню.
  3. Если вы хотите сделать снимок, нажмите Экспорт снимка из Layout Inspector панель инструментов.
  4. В появившемся системном диалоговом окне укажите имя и место, которое вы хотите сохранить снимок. Обязательно сохраните файл с расширением *.li .

Затем можно загрузить снимок Layout Inspector, выбрав File > Open из строку главного меню и открытие файла *. li .

Рис. 6. Создание снимка в Инспекторе макетов.

Inspect Compose

Layout Inspector позволяет проверить макет Compose внутри работающего приложения в эмулятор или физическое устройство. Вы можете использовать Layout Inspector, чтобы проверить, как часто компонуемый компонент перекомпоновывается или пропускается, что может помочь выявить проблемы с ваше приложение. Например, некоторые ошибки кодирования могут привести к перекомпоновке пользовательского интерфейса. чрезмерно, что может привести к снижению производительности. Некоторые ошибки кодирования могут помешать ваш пользовательский интерфейс от перекомпоновки и, следовательно, предотвращения отображения изменений вашего пользовательского интерфейса на экране.

Узнайте больше о Layout Inspector для Compose

Предотвращение перезапуска активности

Для работы Layout Inspector требуется один из следующих глобальных параметров правильно. Если вы не укажете глобальную настройку, Инспектор макетов автоматически устанавливает один.

  1. настройки оболочки adb положить глобальный debug_view_attributes_application_package <имя процесса>

    Эта опция генерирует дополнительную информацию для проверки указанного процесс.

  2. настройки оболочки adb поставить глобальные debug_view_attributes 1

    Эта опция создает дополнительную информацию для проверки всех процессов на устройстве.

Изменение глобального параметра может привести к перезапуску активности. Чтобы избежать деятельности перезапустить, вы можете либо изменить настройки в Android Studio, либо изменить Параметры разработчика в настройках вашего устройства.

Чтобы включить автоматическое обновление в Android Studio, откройте Запуск/Отладка Конфигурации , выбрав Выполнить > Редактировать конфигурации в меню. Затем перейдите на вкладку Miscellaneous и установите флажок Connect to Layout. Инспектор без перезапуска окна активности под Параметры инспектора макета .

Рисунок 11 . Включите автоматическое обновление из конфигураций запуска/отладки.

В качестве альтернативы, включите параметры разработчика вашего устройства и затем включите Включить проверку атрибутов вида из настройки разработчика устройства.

Проверка макета

Проверка макета — это визуальный инструмент для одновременного предварительного просмотра макетов для различных устройств и конфигураций дисплея, помогая вам выявлять проблемы в ваши макеты ранее в этом процессе. Чтобы получить доступ к этой функции, нажмите кнопку Вкладка «Проверка макета» в правом верхнем углу окна IDE:

Рисунок 12 . Вкладка «Проверка макета».

Для переключения между доступными наборами конфигурации выберите один из следующих из раскрывающегося списка эталонных устройств в верхней части проверки макета окно:

  • Эталонные устройства
  • Пользовательский
  • Дальтоник
  • Размеры шрифта

Рисунок 13 . Параметр раскрывающегося меню «Эталонные устройства».

Эталонные устройства

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

Рисунок 14 . Предварительный просмотр эталонного устройства в инструменте проверки макета.

Пользовательский

Чтобы настроить конфигурацию дисплея для предварительного просмотра, выберите один из множества настройки, включая язык, устройство или ориентацию экрана:

Рисунок 15 . Настройте пользовательский дисплей в инструменте проверки макета.

Цветовая слепота

Чтобы сделать ваше приложение более доступным для пользователей с цветовой слепотой, подтвердите ваш макет с симуляцией распространенных видов дальтонизма:

Рисунок 16 . Предварительный просмотр имитации дальтонизма в Layout Validation инструмент.

Размер шрифта

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

Рисунок 17 . Предварительный просмотр переменного размера шрифта в инструменте проверки макета.

xml — Проверка макета отличается от программы загрузки Android Studio

спросил

Изменено 2 года, 10 месяцев назад

Просмотрено 869 раз

Сравнение кода, конечного результата и проверки макета

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

 введите код здесь


    <линейный макет
        Android: layout_width = "match_parent"
        android:layout_height="wrap_content"
        андроид: ориентация = "вертикальный">
        <линейный макет
            android:id="@+id/linearLayout"
            Android: layout_width = "match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            андроид: ориентация = "горизонтальный"
            андроид: весСумм = "10">
            <линейный макет
                андроид: id="@+id/ly1"
                Android: layout_width = "0dp"
                андроид: layout_height = "match_parent"
                андроид: layout_weight = "9"
                андроид: ориентация = "вертикальный">
                <текстовый вид
                    Android: id="@+id/txN1"
                    Android: layout_width = "match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="@dimen/margeny_1"
                    андроид:текст="@строка/номер"
                    Android: textColor="@color/primary_text"
                    android:textSize="@dimen/texto_2" />
                <Редактировать текст
                    Android: id="@+id/txN2"
                    Android: layout_width = "match_parent"
                    android:layout_height="wrap_content"
                    Android: autofillHints = "имя пользователя"
                    андроид: фон = "@цвет/разделитель"
                    андроид: inputType = "текст"
                    Android: textColor="@color/secondary_text"
                    android:textSize="@dimen/textos_1" />
                <текстовый вид
                    Android: id="@+id/txf1"
                    Android: layout_width = "match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="@dimen/margeny_1"
                    андроид:текст="@string/fecha"
                    Android: textColor="@color/primary_text"
                    android:textSize="@dimen/texto_2" />
                <текстовый вид
                    Android: id="@+id/txf2"
                    Android: layout_width = "match_parent"
                    android:layout_height="wrap_content"
                    андроид: фон = "@цвет/разделитель"
                    Android: textColor="@color/secondary_text"
                    android:textSize="@dimen/textos_1" />
                <Кнопка
                    Android: id="@+id/btf1"
                    Android: layout_width = "wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="@dimen/margeny_2"
                    android:text="@string/deffecha"
                    android:theme="@style/Button1" />
                <текстовый вид
                    Android: id="@+id/txT1"
                    Android: layout_width = "match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="@dimen/margeny_1"
                    андроид:текст="@строка/телефоно"
                    Android: textColor="@color/primary_text"
                    android:textSize="@dimen/texto_2" />
                <Редактировать текст
                    Android: id="@+id/edT1"
                    Android: layout_width = "match_parent"
                    android:layout_height="wrap_content"
                    Android: autofillHints = "Телефон"
                    андроид: фон = "@цвет/разделитель"
                    андроид: inputType = "телефон"
                    Android: textColor="@color/secondary_text"
                    android:textSize="@dimen/textos_1" />
                <текстовый вид
                    Android: id="@+id/txE1"
                    Android: layout_width = "match_parent"
                    android:layout_height="wrap_content"
                    андроид:текст="@строка/электронная почта"
                    Android: textColor="@color/primary_text"
                    android:textSize="@dimen/texto_2" />
                <Редактировать текст
                    android:id="@+id/edE1"
                    Android: layout_width = "match_parent"
                    android:layout_height="wrap_content"
                    андроид: фон = "@цвет/разделитель"
                    Android: inputType = "textEmailAddress"
                    Android: textColor="@color/secondary_text"
                    android:textSize="@dimen/textos_1" />
                <текстовый вид
                    Android: id="@+id/txDC1"
                    Android: layout_width = "match_parent"
                    android:layout_height="wrap_content"
                    андроид:текст="@строка/описание"
                    Android: textColor="@color/primary_text"
                    android:textSize="@dimen/texto_2" />
                <Редактировать текст
                    android:id="@+id/edDC1"
                    Android: layout_width = "match_parent"
                    android:layout_height="wrap_content"
                    Android: autoSizeTextType = "униформа"
                    андроид: фон = "@цвет/разделитель"
                    андроид: inputType = "текст"
                    Android: textColor="@color/secondary_text"
                    android:textSize="@dimen/textos_1" />
            
        
        <Кнопка
            android:id="@+id/btSig"
            Android: layout_width = "match_parent"
            андроид: layout_height = "match_parent"
            Android: layout_marginBottom = "0dp"
            Android: baselineAligned = "ложь"
            андроид: текст = "Сигуиенте"
            android:theme="@style/Button1"
            приложение: layout_constraintBottom_toBottomOf="@+id/linearLayout"
            />
    
 
  • android
  • xml
  • android-studio
  • android-layout
2

Я не знаю, почему и как Вы хотите автоматически изменять размер контента, но я делаю что-то вроде этого:

  0" encoding="utf-8"?>

    
        <линейный макет
            Android: layout_width = "match_parent"
            android:layout_height="wrap_content"
            андроид: ориентация = "вертикальный">
            <текстовый вид
                Android: id="@+id/txN1"
                Android: layout_width = "match_parent"
                android:layout_height="wrap_content"
                андроид: текст = "номер" />
            <Редактировать текст
                Android: id="@+id/txN2"
                Android: layout_width = "match_parent"
                android:layout_height="wrap_content"
                Android: autofillHints = "имя пользователя"
                андроид: inputType = "текст" />
            <текстовый вид
                Android: id="@+id/txf1"
                Android: layout_width = "match_parent"
                android:layout_height="wrap_content"
                андроид: текст = "феча" />
            <текстовый вид
                Android: id="@+id/txf2"
                Android: layout_width = "match_parent"
                android:layout_height="wrap_content"
                андроид: текст = "4" />
            <Кнопка
                Android: id="@+id/btf1"
                Android: layout_width = "wrap_content"
                android:layout_height="wrap_content"
                андроид: текст = "деффеча" />
            <текстовый вид
                Android: id="@+id/txT1"
                Android: layout_width = "match_parent"
                android:layout_height="wrap_content"
                андроид: текст = "телефон" />
            <Редактировать текст
                Android: id="@+id/edT1"
                Android: layout_width = "match_parent"
                android:layout_height="wrap_content"
                Android: autofillHints = "Телефон"
                андроид: inputType = "телефон" />
            <текстовый вид
                Android: id="@+id/txE1"
                Android: layout_width = "match_parent"
                android:layout_height="wrap_content"
                андроид: текст = "электронная почта" />
            <Редактировать текст
                android:id="@+id/edE1"
                Android: layout_width = "match_parent"
                android:layout_height="wrap_content"
                Android: inputType = "textEmailAddress" />
            <текстовый вид
                Android: id="@+id/txDC1"
                Android: layout_width = "match_parent"
                android:layout_height="wrap_content" />
            <Редактировать текст
                android:id="@+id/edDC1"
                Android: layout_width = "match_parent"
                android:layout_height="wrap_content"
                Android: autoSizeTextType = "униформа"
                андроид: inputType = "текст" />
        
    
    <Кнопка
        android:id="@+id/btSig"
        Android: layout_width = "match_parent"
        android:layout_height="wrap_content"
        Android: baselineAligned = "ложь"
        андроид: текст = "Сигуиенте"
        приложение: layout_constraintBottom_toBottomOf="родительский" />
 constraintlayout.widget.ConstraintLayout>
 

(Конечно, я меняю строки и значения размеров)

Выглядит так:

Одна кнопка всегда внизу экрана, а остальные в прокрутке.

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.