Валидаторы w3c:как правильно проверить сайт на ошибки css и html

Введение

Валидация данных — проверка данных на соответствие заданным условиям и ограничениям.

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

В данной статье описан один из подходов к валидации исходящих данных, на конкретном примере выгрузки из 1С для сайта.

Используем JavaScript

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

Устанавливая атрибуты , и , мы можем быть уверены в правильности значения только тогда, когда пользователь использует специальные контролы числового поля. Но что мешает пользователю ввести вручную некорректные данные? Вот что произойдёт, если он вставит , и в три поля и отправит форму:

Стандартный тултип валидации

В результате всё, что получит пользователь — это сообщение об ошибке для первого поля. Кроме того, в этом сообщении будет указано лишь одно несоответствие из двух требуемых. Такое поведение можно исправить, изменяя показываемые валидатором сообщения.

Добавляем несколько сообщений об ошибках в один тултип

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

Примечание переводчика: Слово «mismatch» переводится как «несоответствие». Поэтому в значениях , и обратная логика: — значение не удовлетворяет атрибуту, — удовлетворяет.

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

Теперь при попытке отправить форму мы увидим вот это:

Отображаем несколько ошибок в одном тултипе

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

Это ограничение валидации, устанавливаемое браузером. Чтобы его побороть, нам нужно пойти другим путём.

Показываем все ошибки для всех полей.

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

Этого можно добиться какой-то парой дополнительных строчек в нашем коде:

Вот что происходит при клике на submit теперь:

Отображаем все ошибки для всех полей в DOM

Используем нестандартные проверки валидности

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

Так как мы уже проверяем все возможные ошибки вручную в нашей функции , мы можем просто-напросто добавить туда ещё несколько проверок.

Валидация в реальном времени

Хотя текущий способ выглядит намного лучше, он тоже не без изъянов. Наихудший из недочётов заключается в том, что пользователь не сможет увидеть никаких сообщений, пока не нажмёт на кнопку отправки формы. Было бы гораздо лучше, если бы валидация поля происходила сразу же при его заполнении. Можно выделить три правила для того, чтобы с формой было удобно работать:

  1. Требования для каждого поля чётко видны до того, как пользователь начал печатать.
  2. Как только пользователь начинает вводить данные, соблюдая требования, он сразу видит индикатор успешного заполнения поля или подсказки, если есть ошибки.
  3. Нужно отображать сообщения об ошибках таким образом, чтобы пользователь не мог отправить некорректно заполненную форму.

Пример валидации в реальном времени

Если вы хотите попробовать свои силы (и даже сделать получше), вы можете воспользоваться вот этим шаблоном.

Валидация пользователя

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

Если код введен неправильно, то пользователь не проходит валидацию, и ему не дают доступ к аккаунту.

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

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

Недавно я тоже поймал подобную штуку на компьютер. Открывал браузер и высветилась страница с призами от Гугла. Нужно было ввести номер карты и CVC-код.

Еще есть несколько более редких видов валидации — валидация данных и валидация очистки.

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

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

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

Что такое верификация и для чего она нужна

Верификация – это подтверждение правильности какого-либо действия, предмета или события после проверки. Термин произошел от двух латинских слов: verus («истинный») и facere («делать»). Буквально получаем – «делать что-либо истинным», «подтверждать». В переводе с английского языка понятие verification обозначает и проверку, и контроль, и засвидетельствование, и подтверждение под присягой.

Верификация используется в различных сферах – в производстве товаров и услуг, в медицине, в интернете. Верификация модели дает возможность создать качественный прототип будущего изделия. В IT-технологиях верификация применяется для подтверждения личности пользователя при работе в Сети или использовании платежных систем. С ее помощью выявляют подделки, бракованные изделия, корректируют медицинские диагнозы, регистрируются в онлайн-сервисах и соцсетях.

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

Принципы

Задача дизайнера — сделать так, чтобы пользователь не совершил ошибку и валидация не понадобилась, для этого:

  1. Ограничьте выбор заведомо неверных значений в списке: блокируйте эти значения или не показывайте в списке.
  2. Ограничьте ввод неподходящих символов. Если в поле нужно вводить только цифры, и это очевидно пользователю, игнорируйте ввод букв вместо того, чтобы показать ошибку. Используйте маски в полях, где у значений известен формат.
  3. Пишите подсказки для заполнения формы. Например, плейсхолдер в полях ввода.

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

Syslab

Сервис Syslab

SysLab — это онлайн сервис, который предоставляет возможность отслеживать, мониторить состояние серверов, доступность веб-сайтов и их позиции в поисковых системах, а также возможность балансировки DNS и отслеживания рабочего времени. Сервис имеет гибко настраиваемую систему, позволяющую самим установить необходимые позиции для мониторинга, с какой частотой, а также каким образом получать уведомления о результатах мониторинга. На данный момент можно получать уведомления по электронной почте, по ICQ и с помощью SMS. Кроме того, SysLab предоставляет ряд бесплатных сервисов. Таких, как быстрая проверка доступности ресурса, IP калькулятор, рейтинг хостингов, проверка сайта на вирусы.

Преимущества и возможности сервиса:

  • возможность добавление постоянной проверки с проверкой ресурса на доступность и вирусы;
  • определение позиций сайта в поисковой системе Яндекс;
  • удобная группировка, сортировка и фильтрация ключевых фраз;
  • проверка индексации сайта в Яндекс;
  • автоматическая проверка позиций один раз в сутки;
  • ручная проверка позиций в любое время;
  • проверка позиций конкурентов (до 5 конкурирующих сайтов) бесплатно;
  • предоставление гостевого доступа к проекту для анализа позиций сайта;
  • экспорт отчёта в csv или html форматах;
  • наличие облачного сервера и виртуального диска.

Тарифы

Стоимость внутрисистемной расчётной единицы на сервисе RM = 1 рублю. Syslab предоставляет услуг с фиксированной ценой от 0,004 RM за 1 проверку по протоколам. Есть возможность рассылки смс, а также калькулятор для расчета затрат по конкретным задачам. Имеется бесплатный тестовый период с начислением бонусных рублей.

Чем верификация отличается от валидации

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

Верификация Валидация
Что это такое Соответствие изделия, модели или концепции заявленным требованиям. Мы собрали автомобиль. Он полностью соответствует техзаданию и едет. Верификация пройдена. Применимость созданной модели, изделия или концепции на практике в конкретных условиях. Мы собрали автомобиль. Он соответствует техзаданию. Но не едет по льду. Валидация не пройдена.
Для кого имеет значение Для производителя, автора Для потребителя, аудитории
Кто проводит Авторы, производители, разработчики Тестировщики, потребители
Обязательность использования Обязательно (автомобиль должен быть сделан по техзаданию и должен ехать) Необязательно (если мы знаем, что автомобиль едет, можно пробовать пускать его по льду, а можно и без испытаний спрогнозировать, что для успешной поездки нужна доработка в виде установки резины с шипами).
Вид оценки Объективная (соответствует ли изделие/модель стандартам) Субъективная (годится ли изделие/модель для использования в конкретных условиях)

Виды валидации

Существует три вида валидаций: мгновенная, по потере фокуса и по отправке формы.

Чем раньше интерфейс сообщает об ошибке, тем лучше — пользователю проще вернуться и исправить ошибку.

Самый быстрый способ сообщить об ошибке — мгновенная валидация. Но она возможна только в тех случаях, когда в процессе ввода понятно, что значение некорректное. Обычно такие ошибки связаны с неправильной раскладкой клавиатуры (кириллица вместо латиницы) или вводом букв в цифровое поле (ИНН, КПП и др.) Для этих случаев мы используем поля с масками: ввод неподходящих символов в них заблокирован. Поэтому в наших интерфейсах есть только два вида валидации:

  • по потере фокуса — основной вид валидации
  • по отправке формы — для тех случаев, когда валидация по потере фокуса невозможна.

Консоль Внедренца v.3.6.2

Идея данной обработки заключается в создании простого, функционального и универсального инструментария для внедренцев и программистов 1С, который будет работать как в толстом клиенте на обычных и на управляемых формах, так и в тонком клиенте. Интерфейс и логика работы максимально идентичны у обычных форм и управляемых. Инструментарий включает в себя: Консоль кода, Консоль запросов, Консоль отчетов (СКД), Универсальную обработку объектов, Средства для работы с таблицами базы данных 1С, Редактирование регистров сведений базы, Инструмент по работе с табличными документами — загрузка данных из табличного документа.

1 стартмани

Webo pulsar

Сервис WEBO Pulsar

Преимущества и возможности сервиса:

  • мониторинг по API, мониторинг приложений, FTP-мониторинг, мониторинг в реальном времени;
  • доступность тестирования; 
  • журналы событий, уведомления по событиям;
  • показатели эффективности;
  • анализ причин.

Тарифы

Платёжная система сервиса построена на внутреннем балансе, измеряемом в (w). Если нужно проверить доступность адреса HEAD-запросом раз в 10 минут, это будет стоить 4 (w) в день, это составит порядка 0,4 руб. в день. В месяц — всего 12 рублей. Так проверка раз в минуту с СМС-уведомлениями и анализом ошибок составит 150 рублей в месяц. Проверка раз в день осуществляется бесплатно.

Тестирование, верификация и валидация – различия в понятиях

7.3.5 говорится о соответствии выходных данных, а в п. 7.3.6 — продукции. Это существенно! Это означает, что валидация проводится не для выходных данных, а для разработанной под конкретные условия продукции. Скажем, в деятельности института по разработке типовых проектов жилых зданий валидация не требуется — только верификация. А вот для деятельности по разработке проекта строительства жилого здания по тому же типовому проекту, но в конкретном месте, валидация уже необходима.

«7.5.2. Валидация процессов производства и обслуживания. Организация должна подтверждать все процессы производства и обслуживания, результаты которых нельзя проверить посредством последовательного мониторинга или измерения. К ним относятся все процессы, недостатки которых становятся очевидными только после начала использования продукции или после предоставления услуги. Валидация должна продемонстрировать способность этих процессов достигать запланировать результатов…».

Здесь также нет расхождений. Но при этом следует заметить, что в случаях, подпадающих под п. 7.5.2 характеристики продукции не могут быть измерены напрямую и их оценка будет проводиться косвенно (подробнее см. лекцию о специальных процессах).

Вопрос: к чему отнести деятельность ОТК?

Ответ: это верификация.

Вопрос: к чему отнести деятельность аудиторов?

Ответ: к верификации.

Вопрос: какую функцию выполняет подписывающий акт о сдаче в эксплуатацию объекта (услуги и т. п.)?

Кто должен проводить валидацию и чем она отличается от верификации

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

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

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

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

Прочие определения валидации

Рассмотрим теперь определения валидации:

  • Практическое определение того, насколько тот или иной продукт соответствует ожиданиям его непосредственных пользователей.
  • Процедура, которую проводят при необходимости. Это распространенный анализ заданных условий и оценка характеристик продукта касательно его эксплуатации в данной среде. Результат – вывод о возможности использования товара, изобретения в определенной сфере.
  • Подтверждение соблюдения требований системы стандартов, заказчика, непосредственного пользователя и проч.
  • Простыми словами – создан правильный продукт, удовлетворяющий потребителя.

Подсистема «Показатели объектов»

Если вашим пользователям нужно вывести в динамический список разные показатели, которые нельзя напрямую получить из таблиц ссылочных объектов, и вы не хотите изменять структуру справочников или документов — тогда эта подсистема для вас. С помощью нее вы сможете в пользовательском режиме создать свой показатель, который будет рассчитываться по формуле или с помощью запроса. Этот показатель вы сможете вывести в динамический список, как любую другую характеристику объекта. Также можно будет настроить отбор или условное оформление с использованием созданного показателя.

2 стартмани

Примеры верификации

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

Фармацевтический завод проверяет лекарства на соответствие конкретным требованиям. На вводе в производство устанавливается их безопасность для пациента в определенных дозах, отсутствие эффекта плацебо, неимение возможности проявления губительного привыкания и проч. Таким образом, верификация препаратом пройдена. А валидацию в этом случае проводит уже лечащий доктор: он определяет, поможет ли лекарство конкретному пациенту, не приведет ли его применение к риску для жизни и здоровья этого человека и т. д.

Рассмотрим на примере велосипеда. Проверяем, есть ли руль, сидение, цепи, колеса, тормозная система и проч. Все на месте? Верификация пройдена!

Этапы валидации

Всего выделяют 6 этапов валидации.

Название
Этап 1: Спецификация требований пользователей (международная аббревиатура URS) Общее описание того, что ждут пользователи от системы, процесса или продукта.
Этап 2: Специализация функций (FS) Подробно расписывается, каким стандартам должны соответствовать система, процесс или продукт, чтобы удовлетворить требования пользователей.
Этап 3: Спецификация (DS) Полное описание проектных, технических и иных характеристик системы, процесса или продукта, параметров оборудования.
Этап 4: Оценка (квалификация) монтажа (IQ) Проверяются документы, подтверждающие, что система, процесс или продукт созданы в соответствии с необходимыми стандартами и требованиями.
Этап 5: Проверка (квалификация) функционирования (OQ) Оценивается, действуют ли система, процесс или продукт в заявленных в спецификации условиях. Если в спецификации к автомобилю указано, что он разгоняется до 100 км/ч за 10 секунд, эти данные проверяются на ровном полигоне без встречного и попутного потока.
Этап 6: Проверка (квалификация) эксплуатации (PQ) Оценивается, как действуют система, процесс или продукт в конкретных условиях. Применительно к примеру о разгоне автомобиля до 100 км/ч проверяется, может ли он сделать это за 10 секунд в обычных дорожных условиях.

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

Whole value concept (Quantity pattern)

Я часто вижу, что этому концепту уделяют мало внимания при проектировании Value Objects, потому решил отдельно на нём остановиться.

Идея простая. Представим, что у нас есть геопозиция. Чтобы понять где именно находится точка нам нужна и широта и долгота. Поскольку сами по себе «широта» или «долгота» не имеют смысла друг без друга, значит они должны находиться в одном месте, внутри одного объекта. Другими словами не нужно создавать отдельные VO, если сами по себе они ничего не значат, а только являются составляющей другого объекта.

Наш пример (Money). У нас есть сумма денег, которую нам нужно сложить с другой суммой. Чтобы принять решение можем ли мы сложить две amount, мы должны проверить currency. Поскольку currency напрямую влияет на логику вычислений, то оно должно находиться там-же, где и amount.

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

Eсли у нас есть данные которые влияют на логику — они должны быть частью состояния объекта где эта логика реализована. Да-да, вычисления (логика) также должны находиться внутри (например сложение/вычитание денег или вычисление расстояния в случае с гео).

Если же в объекте хранятся данные которые на логику реализованную в этом объекте никак не влияют — было бы неплохо эти данные оттуда вынести чтобы не мешали.

Это не значит, что нужно совсем перестать оборачивать в VO примитивные типы (строки, числа и т.д.). Это значит, что при проектировании стоит задумываться о целесообразности того или иного объекта в вашей предметной области.

Не нужно создавать для Entity сервисы валидации

В доменном слое это усложнит вам жизнь. Вам придется делать бесконечные и ненужные геттеры внутри Entity (ведь для валидатора данные нужно будет как-то извлечь), следить за тем что нужно обновить сервис в случае изменения самой сущности и не забывать его вызвать каждый раз при её создании.

Связь с другой сущностью

Отношения лучше выстраивать с помощью идентификаторов, а не по ссылкам на объект. Таким образом мы понижаем связанность (Low Coupling), а также убираем возможность нежелательных изменений, которые могут происходить внутри связанной сущности.

Если в качестве связи с другой сущностью в метод или в конструктор мы передаём ID, то мы наверняка не можем быть уверены, что Entity с таким ID существует в рамках нашей системы, ведь на входе мы можем убедиться лишь в том, что ID соответствует определенному шаблону (например UUID).

Примеры верификации и валидации

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

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

Еще один пример, относящийся практически к любому предприятию. Отдел технического контроля осуществляет верификацию, а аудиторы проводят валидацию.

Чем отличаются верификация и валидация

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

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

Monitor-site

Сервис Monitor-site

Преимущества и возможности сервиса:

  • определение времени отклика;
  • оценка скорости загрузки страницы;
  • получение ответа от DNS;
  • отслеживание сроков действия доменов;
  • проверка актуальности SSL-сертификатов;
  • уведомление о проблемах в работе страницы.

Тарифы

Для новых пользователей сервис предоставляет пробный период на 15 дней (1 сайт, все задания, 15 смс включено) бесплатно. Далее стоимость рассчитывается исходя из частоты проверки (каждую минуту, каждые 2 минуты или 5 минут) и количества заданий по проверкам. При оплате пакета по выбранным параметрам сразу за год предоставляется скидка в 10 процентов.

Заключение

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

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

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

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

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Люкс-хост
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: