Архив метки: Программирование

Try Catch в Javascript

Javascript — это переводческий язык программирования. Как и любой другой язык, разработчику или программисту часто требуется заботиться об обработке ошибок. В основном программисту или разработчику необходимо обрабатывать ошибки при доступе к базе данных или назначении некоторых данных для нее. Итак, обработка ошибок — неотъемлемая часть любого программного проекта. Существует три типа ошибок в программировании, с которыми часто сталкиваются программисты или разработчики.

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

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

Ошибка выполнения  — ошибка произошла во время выполнения. Например, вызов функции без ее объявления.

Ошибка, возникающая во время выполнения, также известна как  исключение . Исключительная управляемость очень важна. Потому что мы не можем сразу выкидывать ошибки и коды ошибок. Мы должны с этим справиться. Итак, в этой статье мы собираемся понять, как обрабатывать исключения с помощью блока try-catch в javascript. Мы также узнаем, как создать собственное сообщение об ошибке и как использовать блок «finally» с блоком try-catch.

 

Синтаксис

Синтаксис для использования блока try-catch очень прост и удобен в использовании. Мы можем просто использовать блок try-catch следующим образом

try {



// код для попытки или проверки



throw // генерировать настраиваемую ошибку для перехвата



} catch ( error ) {



// код после получения ошибки



} finally {



// код, который выполняется в любом случае



}




В этом синтаксисе мы сначала пишем несколько строк кода в блоке «try» для тестирования. Если этот код будет выполнен или успешно прошел тест. Блок «try» не выдаст ошибку в блок «catch» и не выполнит блок «finally». В противном случае он выдаст ошибку в блок «catch», где мы сможем обрабатывать исключения в соответствии с данной ошибкой. Мы также можем выбросить пользовательскую ошибку в блок «catch», используя ключевое слово «throw». Блок «Finally» будет выполнен в любом случае. Либо блок «попытка» выбрасывает их, либо нет. Давайте попробуем несколько примеров, чтобы лучше понять.

 

Примеры

Прежде всего, чтобы продемонстрировать простую и базовую работу блока try-catch. Мы пытаемся вызвать функцию, нигде не объявляя ее.

addition()

Это обязательно вызовет ошибку в консоли

Try Catch в Javascript

Но, если мы попытаемся вызвать это в блоке попытки сейчас

try {



addition()



} catch (error) {



}




 

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

try {



addition()



} catch (error) {



console.log("Сообщение об ошибке => " + error)



}




 

Мы можем увидеть наше собственное сообщение в консоли об ошибке.

Try Catch в Javascript

Итак, это очень простое использование блока try-catch. Теперь давайте узнаем, как генерировать пользовательскую ошибку в блоке try.

 

Throw

Предположим, мы хотим выдать другую настраиваемую ошибку на основе разных ошибок при попытке. Мы можем выдать специальную ошибку: «Определение функции не существует». Как это



try{



throw new Error ("Определение функции не существует")



} catch (err) {



console. log( "Сообщение об ошибке =>" + err)



}




Try Catch в Javascript

 

Как вы можете видеть в выходных данных, сообщение об ошибке теперь изменено на выданную нами настраиваемую ошибку.

 

ProTip

Предположим, мы пытаемся применить этот пример для асинхронной функции. Это не сработает. Поскольку движок переместился бы на следующую строку, выполните последний блок, и асинхронная функция будет выполнена позже. Например, если мы применим функцию setTimeout внутри блока try-catch.

try {



setTimeout (( ) => {



add() ;



} , 3000)



} catch (err) {



console. log ("Сообщение об ошибке =>" + err)



} finally {



console. log ("дошел до блока 'finally'")



}




Try Catch в Javascript

 

Вы можете заметить, что сначала выполняется блок «finally», а ошибка возникает позже, если мы посмотрим на ошибку. Это не ошибка блока catch, а исходная ошибка программирования, что означает, что блок catch не выполняется, потому что блок try не нашел никакой ошибки.

Хорошо! Теперь, если мы хотим, чтобы это работало. Мы должны применить блок try-catch внутри функции setTimeout, а не снаружи. Итак, истинный способ реализации асинхронной функции с блоком try-catch был бы таким.

setTimeout (() => {



try {



addition();



} catch (err) {



console. log ("Сообщение об ошибке =>" + err)



} finally {



console. log ("достигло блока 'finally'")



}



} , 3000 )




 

Try Catch в Javascript

 

Вы можете увидеть в выводе, что после задержки в 3 секунды из-за функции setTimeout. Сначала мы получили сообщение об ошибке из блока catch, а затем выполняется блок «finally».

 

Заключение

В этой статье мы научились поэтапно реализовывать блок try-catch в javascript таким простым и глубоким способом, что любой новичок, прочитав эту статью, сможет применить его где угодно.



2021-01-01T20:59:17
Программирование

Типы тестирования программного обеспечения

Стратегия тестирования каждого программного продукта разная. Перед разработкой стратегии тестирования программного обеспечения нам необходимо рассмотреть бизнес-цели и/или цель программного обеспечения. Например, программное обеспечение, которое работает в самолете, которое контролирует двигатель и безопасность полета, имеет другой бизнес-контекст, чем платформа для вирусного обмена видео в Интернете для детей. Для программного обеспечения самолета очень важно, чтобы абсолютно все было определено и проверено. Быстрая разработка и изменение новых функций не является приоритетом. Для платформы вирусного видео бизнесу нужны инновации, скорость и быстрое улучшение, которые гораздо важнее, чем гарантированная проверка системы. Каждый контекст отличается, и существует множество различных практик тестирования программного обеспечения. Построение стратегии тестирования будет состоять из смеси соответствующих типов тестирования из списка возможных типов тестирования, которые классифицируются ниже. В этой статье мы перечислим различные типы тестирования программного обеспечения.

 

Модульное тестирование

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

 

Функциональное тестирование

Функциональное тестирование — наиболее распространенная форма тестирования. Когда люди относятся к тестированию программного обеспечения без каких-либо подробностей, они часто имеют в виду функциональное тестирование. Функциональное тестирование позволит проверить основные функции программного обеспечения, как ожидается. План тестирования может быть написан для описания всех функциональных тестовых случаев, которые будут тестироваться, что соответствует основным функциям и возможностям программного обеспечения. Первичным тестированием функциональности будет тестирование « счастливого пути», которое не пытается сломать программное обеспечение или использовать его в любых сложных сценариях. Это должен быть абсолютный минимум тестирования для любого программного проекта.

 

Интеграционное тестирование

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

 

Стресс-тестирование

Подумайте о стресс-тестах, как о космическом шаттле или самолете. Что значит поместить ваше программное обеспечение или систему в режим «СТРЕСС»? Стресс — это не что иное, как интенсивная нагрузка определенного типа, которая, скорее всего, сломает вашу систему. Это может быть похоже на «нагрузочное тестирование» в том смысле, что ваша система подвергается высокому параллелизму, когда к системе обращается множество пользователей. Но напряжение системы может происходить и на других векторах. Например, запуск микропрограммы на аппаратном компоненте, когда аппаратное обеспечение имеет физический износ и работает в ухудшенном режиме. Стресс является уникальным для всех типов программного обеспечения, и при разработке систем и при разработке стресс-тестов следует учитывать, какие естественные или неестественные причины с наибольшей вероятностью могут вызвать нагрузку на ваше программное обеспечение или систему.

 

Нагрузочное тестирование

Нагрузочное тестирование — это особый тип стресс-тестирования, как обсуждалось выше, при котором большое количество одновременных пользовательских подключений и обращений автоматизировано для создания имитации эффекта одновременного доступа большого количества подлинных пользователей к вашей программной системе. Цель состоит в том, чтобы выяснить, сколько пользователей могут получить доступ к вашей системе одновременно без нарушения работы вашей программной системы. Если ваша система может легко обрабатывать обычный трафик 10 000 пользователей, что произойдет, если ваш веб-сайт или программное обеспечение станут вирусными и привлекут 1 миллион пользователей? Сможет ли эта неожиданная «НАГРУЗКА» сломать ваш сайт или систему? Нагрузочное тестирование будет имитировать это, поэтому вы можете быть уверены в будущем увеличении числа пользователей, потому что знаете, что ваша система может выдержать возросшую нагрузку.

 

Тестирование производительности

Люди могут полностью разочароваться и впасть в отчаяние, если программное обеспечение не соответствует их требованиям к производительности. Производительность, как правило, означает, насколько быстро могут быть выполнены важные функции. Чем более сложные и динамичные функции доступны в системе, тем более важным и неочевидным становится проверка ее производительности. Давайте возьмем базовый пример — операционная система Windows или Linux. Операционная система — это очень сложный программный продукт, и тестирование производительности в ее системе может включать скорость и синхронизацию таких функций, как загрузка, установка приложения, поиск файла, выполнение вычислений на графическом процессоре и/или любые другие из миллионы действий, которые можно выполнить. При выборе тестовых сценариев производительности следует проявлять осторожность, чтобы убедиться, что проверены важные и потенциально неисправные функции производительности.

 

Тестирование масштабируемости

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

 

Статический анализ тестирования

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

 

Тестирование методом впрыска неисправностей

Некоторые ошибки очень сложно моделировать или запускать, поэтому программное обеспечение может быть разработано так, чтобы искусственно вводить проблему или сбой в систему без естественного возникновения дефекта. Цель тестирования с внесением неисправностей — увидеть, как программное обеспечение обрабатывает эти неожиданные неисправности. Изящно ли он реагирует на ситуацию, дает ли он сбой или дает неожиданные и непредсказуемые проблемные результаты? Например, предположим, что у нас есть банковская система, и есть модуль для внутреннего перевода средств со СЧЕТА A на СЧЕТ B. Однако эта операция перевода вызывается только после того, как система уже проверила, что эти учетные записи существуют, до вызова операции перевода. . Несмотря на то, что мы предполагаем, что обе учетные записи действительно существуют, операция передачи имеет сбой, когда одна целевая или исходная учетная запись не существует, и что это может вызвать ошибку. Поскольку в нормальных условиях мы никогда не получаем эту ошибку из-за предварительного тестирования входных данных, поэтому для проверки поведения системы при сбое передачи из-за несуществующей учетной записи мы вводим ложную ошибку в систему, которая возвращает несуществующую учетную запись. для передачи и проверьте, как остальная система реагирует в этом случае. Очень важно, чтобы код внедрения неисправности был доступен только в сценариях тестирования и не выпускался в производство, где он мог бы создать хаос.

 

Тестирование переполнения памяти

При использовании таких языков, как C или C ++, программист несет большую ответственность за прямую адресацию памяти, и это может вызвать фатальные ошибки в программном обеспечении, если будут сделаны ошибки. Например, если указатель равен нулю и разыменован, программное обеспечение выйдет из строя. Если для объекта выделяется память, а затем строка копируется в пространство памяти объекта, обращение к объекту может вызвать сбой или даже неопределенное неправильное поведение. Поэтому очень важно использовать инструмент, чтобы попытаться обнаружить ошибки доступа к памяти в программном обеспечении, использующем такие языки, как C или C ++, которые могут иметь эти потенциальные проблемы. Инструменты, которые могут выполнять этот тип тестирования, включают Valgrind с открытым исходным кодом или проприетарные инструменты, такие как PurifyPlus.. Эти инструменты могут спасти ситуацию, когда непонятно, почему программное обеспечение дает сбой или работает неправильно, и напрямую указывают на то место в коде, где есть ошибка. Классно, правда?

 

Граничное тестирование

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

If ( amt < 300 ) {

startWithdrawl ( )

}

else {

error ( «Вы можете снять % s», amt ) ;

}

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

 

Fuzz-тестирование

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

 

Исследовательское тестирование

Закройте глаза и представьте себе, что означает слово «исследовать». Вы наблюдаете и исследуете систему, чтобы узнать, как она действительно функционирует. Представьте, что вы получили по почте новое рабочее кресло, состоящее из 28 частей в отдельных пластиковых пакетах без каких-либо инструкций. Вы должны изучить свое новое прибытие, чтобы понять, как оно функционирует и как устроено. Обладая этим духом, вы можете стать исследовательским тестером. У вас не будет четко определенного плана тестирования тестовых случаев. Вы исследуете и исследуете свое программное обеспечение в поисках вещей, которые заставят вас сказать замечательное слово: «ИНТЕРЕСНО!». Узнав, вы исследуете дальше и найдете способы взломать программное обеспечение, о котором никогда не думали разработчики, а затем предоставите отчет, в котором подробно описаны многочисленные неверные предположения, ошибки и риски в программном обеспечении.

Тестирование на проникновение

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

 

Регрессионное тестирование

После того, как у вас есть работающее программное обеспечение, которое развернуто в полевых условиях, крайне важно предотвратить внесение ошибок в функциональность, которая уже работала. Целью разработки программного обеспечения является повышение возможностей вашего продукта, внесение ошибок или прекращение работы старых функций, что называется РЕГРЕССИЕЙ. Регрессия — это ошибка или дефект, появившийся, когда ранее возможность работала должным образом. Ничто не может испортить репутацию вашего программного обеспечения или бренда быстрее, чем внесение регрессионных ошибок в ваше программное обеспечение и предоставление реальным пользователям возможности найти эти ошибки после выпуска.

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

 

Тестирование исходного кода пополам

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

 

Тестирование локализации

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

 

Тестирование доступности

Некоторые граждане нашего сообщества имеют инвалидность и, следовательно, могут испытывать проблемы с использованием создаваемого программного обеспечения, поэтому проводится тестирование доступности, чтобы гарантировать, что люди с ограниченными возможностями по-прежнему могут получить доступ к функциям системы. Например, если мы предположим, что 1% населения страдает дальтонизмом, а наш программный интерфейс предполагает, что пользователи могут различать красный и зеленый, но эти люди с дальтонизмом НЕ МОГУТ увидеть разницу. Следовательно, хорошо продуманный программный интерфейс помимо цвета будет иметь дополнительные подсказки для обозначения значения. Другие сценарии, помимо тестирования на дальтонизм, также будут включены в тестирование доступности программного обеспечения, например, полная зрительная слепота, глухота и многие другие сценарии. Хороший программный продукт должен быть доступен максимальному проценту потенциальных пользователей.

 

Обновление тестирования

Простые приложения на телефоне, операционные системы, такие как Ubuntu, Windows или Linux Mint, а также программное обеспечение, работающее на атомных подводных лодках, нуждаются в частом обновлении. Сам процесс обновления может привести к ошибкам и дефектам, которых не было бы при новой установке, потому что состояние среды было другим, и процесс внедрения нового программного обеспечения поверх старого мог привести к ошибкам. Рассмотрим простой пример: у нас есть ноутбук с Ubuntu 18.04, и мы хотим перейти на Ubuntu 20.04. Этот процесс установки операционной системы отличается от непосредственной очистки жесткого диска и установки Ubuntu 20.04. Следовательно, после установки программного обеспечения или любой из его производных функций оно может не работать на 100%, как ожидалось, или так же, как при новой установке программного обеспечения. Так, мы должны сначала рассмотреть возможность тестирования самого обновления во многих различных случаях и сценариях, чтобы убедиться, что обновление работает до конца. И затем мы также должны рассмотреть возможность тестирования фактической системы после обновления, чтобы убедиться, что программное обеспечение установлено и функционирует должным образом. Мы не будем повторять все тестовые примеры для только что установленной системы, что было бы пустой тратой времени, но мы будем тщательно продумывать, зная, что система МОЖЕТ сломаться во время обновления, и стратегически добавлять тестовые примеры для этих функций.

 

Тестирование черного и белого ящиков

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



2020-12-14T21:13:55
Программирование

Случайное число в Javascript

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

Метод random помогает в создании псевдослучайных чисел, так как, арифметически, создать истинное случайное число невозможно.

 

Синтаксис

Мы можем получить случайные числа с помощью функции Math.random(), например:

Math.random();

 

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

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

 

Примеры

Предположим, мы хотим сгенерировать случайное число от 0 до 99. Синтаксис для предоставления ограничения или диапазона:

Math.random() * 100

 

Имейте в виду, что 100 — это предел или диапазон, а не число.

 

Вы можете видеть, что он сгенерировал число от 0 до 99, но это число с плавающей запятой.

Итак, если мы хотим иметь целое число, а не число с плавающей запятой, мы можем применить метод Math.floor() к методу Math.random(), например:

Math.floor(Math.random() * 100)

 

Выглядит отлично!

Теперь, что, если мы хотим иметь числа не от 0 до 99 или более, а от какого-то другого числа, например, от 50 до 90. Сначала давайте посмотрим, как мы можем это сделать, а позже мы увидим, как это работает.

Math.floor((Math.random() * 40) + 50)

В этом синтаксисе 40 — это диапазон или ограничение от 50 до и далее, 50 — это начальное число.

 

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

function getRandomNum(sNum, lNum) {

return Math.floor((Math.random * (lNum - sNum)) + sNum)

}

 

Имейте в виду, что конечное число или «lNum» будет исключено. Если вы хотите включить это, также добавьте «1» в диапазон, например:

function getRandomNum(sNum, lNum) {

return Math.floor((Math.random * (lNum - sNum + 1 )) + sNum)

}

После написания этой функции. Назовем его и посмотрим на результат.

getRandomNumber(20, 40);





 

Как видите, мы получаем случайные числа от 20 до 40.

Итак, это некоторые из различных способов генерации псевдослучайных чисел в Javascript с использованием метода Math.random().

 

Вывод

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



2020-12-03T14:10:25
Программирование

Проверка формы Javascript

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

 

Примеры

Прежде всего, мы предполагаем форму с именем «testForm», в которой у нас есть поле ввода с меткой «Имя пользователя», а тип ввода отправляется в наш HTML-файл. В теге формы мы создали событие onsubmit, в котором мы закрываем и возвращаем функцию validateFunc () .

<form action="" method="get" name="testForm" onsubmit="return(validationFunc())">

<label for="name">Имя</label>

<input type="text" name="name"><br><input type="submit" value="Submit">

</form>

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

Итак, чтобы проверить поле имени пользователя. Сначала мы назначаем переменную document.testForm, чтобы код выглядел чистым и понятным. Затем в определении функции мы напишем код для проверки. Мы напишем оператор if, чтобы проверить пустое поле формы. Если поле имени пользователя пусто, мы покажем окно предупреждения, чтобы показать ошибку, снова сфокусируемся на поле имени пользователя и вернем false, чтобы форма не была отправлена. В противном случае, если он пройдет проверку и данные будут проверены, мы вернем true функции.

var theForm = document.testForm;



// Код проверки формы

function validationFunc() {

if (theForm.name.value == "") {

alert( "пустое имя" );

theForm.name.focus();

return false;

}



return (true);

}




После написания всего этого кода. Если мы запустим код и нажмем кнопку отправки, ничего не написав в поле формы.

Как вы можете видеть на скриншоте ниже, в окне предупреждения возникает ошибка.

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

Для этой цели мы сначала предполагаем два поля формы в теге формы с метками «электронная почта» и «пароль» в нашем HTML-файле.

<form action="" method="get" name="testForm" onsubmit="return(validationFunc())">

<label for="name">Имя</label>

<input type="text" name="name"><br><label for="email">Электронная почта</label>

<input type="email" name="email" id=""><br><label for="password">Пароль</label>

<input type="password" name="password" id=""><br><br>



<input type="submit" value="Submit">

</form>




Для проверки в javascript мы снова добавим оператор if для проверки полей формы электронной почты и пароля в определение функции файла сценария. Предположим, мы хотим применить несколько проверок к полю электронной почты, например, поле не должно быть пустым, а его длина не должна быть меньше 10 символов. Итак, мы можем использовать OR «||» в операторе if. Если возникнет какая-либо из этих ошибок, отобразится окно предупреждения с сообщением об ошибке, которое мы хотим показать, сфокусируемся на поле формы электронной почты и вернем false функции. Точно так же, если мы хотим применить проверку длины символа в поле пароля, мы можем это сделать.

var theForm = document.testForm;



// Код проверки формы

function validationFunc() {

if (theForm.name.value == "") {

alert( "пустое имя" );

theForm.name.focus();

return false;

}



if (theForm.email.value == "" || theForm.email.value.length < 10) {

alert( "Пустая почта" );

theForm.email.focus();

return false;

}



if (theForm.password.value.length < 6) {

alert( "Пароль должен быть длиной 6 символов" );

theForm.password.focus();

return false;

}



return (true);

}




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

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

if (/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$/.

test(theForm.email.value)) {

alert( "Неправильная почта" );

theForm.email.focus() ;

return false;

}

 

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

 

Вывод

В этой статье рассматривается базовая проверка формы в javascript. Мы также попробовали и прокрались в проверке данных с помощью регулярного выражения.



2020-11-26T21:47:57
Программирование

Основы YAML, которые должен знать каждый инженер DevOps

YAML приобрел большую популярность за последние несколько лет, поскольку стал частью важнейших инструментов, технологий и процессов DevOps, таких как Ansible, Kubernetes, конвейеры CI/CD и т. д.

В этой статье мы охватим основы YAML, чтобы вы знали, как более плавно работать с конфигурацией инструментов DevOps.

 

Что такое YAML?

YAML означает «YAML Ain’t Markup Language», первоначально было аббревиатурой «Еще один язык разметки». YAML — это язык «сериализации данных» и, по сути, удобочитаемый формат структурированных данных.

Он разработан для удобного чтения и записи. Функция сериализации объектов YAML представляет собой реальную альтернативу JSON. YAML — это надмножество JSON с использованием области видимости на основе отступов для обозначения структуры, такой как Python.

Вот пример YAML:

--- 

 Student-ID: 314159

 First-Name: Linus

 Last-Name: Torvalds



Phone-numbers:

    - 123.456.7890

    - 098.765.4321

    - 123.455.4321



Addresses:

    - Street: Krasnay

    - City: Krasnodar

    - State: Kr

---

 

Основные правила YAML, которые вы всегда должны помнить

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

  • Вкладки НЕ допускаются в YAML. Вы должны использовать пространство для отступа.
  • Хотя количество места не имеет значения, если отступ дочернего узла больше, чем отступ родительского узла, рекомендуется оставлять такое же количество пробелов.
  • Между различными элементами YAML должен быть пробел (объяснено позже).
  • YAML чувствителен к регистру.
  • YAML-файл должен заканчиваться расширениями вроде .yamlили .yml.
  • YAML поддерживает кодировку UTF-8, UTF-16 и UTF-32.

Давайте теперь разберемся с синтаксисом YAML.

 

Элементы файла YAML: базовый синтаксис

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

Разберемся на примере. Это файл манифеста службы Kubernetes.

kind: Service

metadata:  

  name: web-app-svc

spec:  

  type: NodePort  

  ports:  

  - port: 8080         #Сервисный порт

    targetPort: 8080   #Порт Pod

    nodePort: 30012  #Порт узла из диапазона - 30000-32767  

  selector:    

    app: web-app

 

Это набор ключевых элементов паров значений: Name: Value.

Как видно из файла выше, файл YAML состоит из ряда различных элементов. Вместе они могут использоваться для описания самых разных структур.

 

1. Пробелы или отступы

В YAML вы делаете отступ с помощью пробелов, а не табуляции. И между элементами ДОЛЖЕН быть пробел.

Правильная спецификация:

Kind: Service

 

Неправильная спецификация:

Kind:Service

 

Потому что в приведенном выше утверждении нет пробела после двоеточия!

 

2. Комментарии в YAML

Комментарии можно определить, поместив хеш перед элементом ‘#’. Комментарии могут быть сделаны в начале строки в любом месте строки.

Если вы просматриваете наш файл конфигурации YAML, у нас есть три встроенных комментария, таких как «#service port» и т. д.

 

3. Скаляр (пара «ключ-значение»)

Скаляры — это строки и числа, из которых состоят данные на странице. Проще говоря, это пары ключ-значение.

kind: Service

metadata:  

  name: web-app-svc

 

4. Коллекции и списки

Элементы или элементы списка и коллекции — это строки, которые начинаются на одном уровне отступа, начиная с тире, за которым следует пробел.

- web-app-prod 

- prod-deployments 

- prom-monitored

 

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

 

5. Вложенные коллекции

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

- 

 - web-app-prod 

 - prod-deployments 

 - prom-monitored

-  

 - web-app-test 

 - staging-deployments 

 - not-monitored

 

6. Словари

Словари представляют собой формат key: value с отступом содержимого.

ports:    

- port: 8080         #Сервисный порт

  targetPort: 8080   #Порт Pod

  nodePort: 30012  #Порт узла из диапазона - 30000-32767

 

Вы можете объединять и смешивать коллекции списков и словарей следующим образом:

ports:    

- port: 8080         #порт service

  targetPort: 8080   #порт Pod

  nodePort:       

  - 30012       

  - 30013       

  - 30014

 

Это очень простые концепции YAML, но они необходимы инженеру DevOps.

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

 

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



2020-11-05T19:32:34
Программирование

Как получить текущую дату и время в JavaScript?

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

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

Прежде всего, мы создадим новый объект Date() и объявим переменную с именем «current» и назначим новый объект Date() переменной «current».

var current = new Date();

 

После присвоения давайте посмотрим на объект Date, что он для нас имеет.

console.log(current)

 

Хорошо! Довольно круто смотрится в хорошем формате. Но как насчет того, чтобы получить только год из всей даты? Мы можем использовать встроенную функцию getFullYear() только для получения года.

current.getFullYear();

 

<- 2020

Точно так же, если мы хотим извлечь только год, мы можем использовать встроенную функцию getMonths() для получения только месяца.

current.getMonth();

 

<- 10

 

Похоже на проблему. Это не 10-й месяц (октябрь)! Как видно из приведенного выше полного вывода для нового объекта Date. Это ноябрь. Ну, это из-за цифрового (0-11). Итак, мы должны добавить к нему «1», чтобы каждый раз получать правильный месяц.

current.getMonth() + 1;

 

<- 11

 

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

current.getDate();

 

<- 27

 

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

current.getHours();

<- 20

То же самое и с протоколами. Чтобы извлечь только минуты, мы можем использовать getMinutes().

current.getMinutes();

<- 27

Чтобы извлечь только секунды, мы можем использовать getSeconds ().

current.getSeconds();

<- 32

 

Расширенные встроенные функции

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

current.toLocaleTimeString(); // "18:27:32"

 

<- "20:27:32 PM"

И, если мы хотим извлечь только время в виде строки. Мы можем использовать встроенную функцию toLocaleDateString ().

current.toLocaleDateString(); // «27.10.2020»

 

<- "10/27/2020"

 

И, если мы хотим извлечь и дату, и время в одну строку, мы можем использовать встроенную функцию toLocaleString ().

current.toLocaleString(); // "29.09.2020, 14:42:07"

 

<- "9/29/2020", 5:13:16 PM

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

 

Вывод

В этой статье объясняется, как мы можем получить текущую дату и время и как мы можем использовать их для наших нужд очень простым, глубоким и эффективным способом, который может понять и использовать любой новичок. Итак, продолжайте учиться, работать и получать опыт работы с Javascript с linuxhint.com, чтобы лучше разбираться в нем. Спасибо большое!



2020-10-27T20:41:00
Программирование