По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Многим приложениям нужно обмениваться данными между клиентом и сервером. Долгое время эталонным форматом данных для обмена информацией между двумя объектами считался XML. Затем, в начале 2000-х, появился альтернативный формат JSON. В данной статье вы узнаете все о JSON. Мы рассмотрим, что это, и как им пользоваться, а также разберем ряд популярных заблуждений. Что такое JSON? JSON (JavaScript Object Notation, нотация объектов JavaScript) - это текстовый формат обмена данными. Он представлен наборами пар "ключ-значение", причем ключ - это всегда строка, а значение может задаваться одним из следующих типов: число; строка; логическое значение; массив; объект; нулевое значение null. Несколько важных правил: В формате данных JSON ключи прописываются в двойных кавычках. Ключ и значение разделяются двоеточием (:). Может быть несколько пар "ключ-значение". Каждая пара отделяется запятой (,). В данных JSON недопустимы комментарии (// или /* */). (Но при желании это ограничение можно обойти) Ниже приведен пример простых данных в JSON: { "name": "Alex C", "age": 2, "city": "Houston" } Допустимые данные в JSON возможны в 2 разных форматах: Набор пар «ключ-значение» в фигурных скобках {...}. Это показано в примере выше. Упорядоченные списки пар «ключ-значение», разделенных запятой (,) и заключенных в квадратные скобки [...]. См. пример ниже: [ { "name": "Alex C", "age": 2, "city": "Houston" }, { "name": "John G", "age": 40, "city": "Washington" }, { "name": "Bala T", "age": 22, "city": "Bangalore" } ] Предположим, вы уже писали что-то на JavaScript. Тогда у вы можете ошибочно предположить, что формат JSON и объекты JavaScript (и массивы объектов) очень похожи. Но это не так. Чуть позже мы подробно об этом поговорим. Структура JSON разработана на основе синтаксиса объектов JavaScript, и это единственное, что объединяет JSON и объекты JavaScript. Формат JSON не зависит от языка программирования. Мы можем использовать JSON в Python, Java, PHP и многих других языках. Примеры формата данных JSON Сохранять данные JSON можно в файле с расширением .json. Давайте создадим файл employee.json с атрибутами сотрудника. Они представлены в виде ключей и значений. { "name": "Aleix Melon", "id": "E00245", "role": ["Dev", "DBA"], "age": 23, "doj": "11-12-2019", "married": false, "address": { "street": "32, Laham St.", "city": "Innsbruck", "country": "Austria" }, "referred-by": "E0012" } В примере выше присутствуют следующие атрибуты сотрудника: name – имя сотрудника. Значение в строковом формате (String). Оно указано в двойных кавычках. id – уникальный идентификатор сотрудника. Опять же, в строковом формате. role – роли, которые сотрудник выполняет в организации. Таких ролей может быть несколько, поэтому лучше перечислять эти данные в формате массива (Array). age – текущий возраст сотрудника. Это числовое значение (Number). doj – дата найма сотрудника. Поскольку это дата, ее добавляют в двойных кавычках и обрабатывают как строку. married – замужем/женат ли сотрудник? Ответом может быть да/нет (то есть true или false), так что это логический формат (Boolean). address – адрес сотрудника. Может состоять из нескольких частей: улица, город, страна, индекс и т.д. Такое поле лучше представлять в виде объекта (Object с парами «ключ-значение»). referred-by – идентификатор сотрудника, который порекомендовал этого человека на должность в организацию. Если сотрудник пришел по рекомендации, то атрибут имеет значение. В остальных случаях поле остается пустым, т.е. null. Теперь давайте создадим набор данных по сотрудникам в формате JSON. Если мы хотим добавить несколько записей о разных сотрудниках, то необходимо прописать их в квадратных скобках [...]. [ { "name": "Aleix Melon", "id": "E00245", "role": ["Dev", "DBA"], "age": 23, "doj": "11-12-2019", "married": false, "address": { "street": "32, Laham St.", "city": "Innsbruck", "country": "Austria" }, "referred-by": "E0012" }, { "name": "Bob Washington", "id": "E01245", "role": ["HR"], "age": 43, "doj": "10-06-2010", "married": true, "address": { "street": "45, Abraham Lane.", "city": "Washington", "country": "USA" }, "referred-by": null } ] Обратите внимание на значение атрибута referred-by для сотрудника Боба Вашингтона (Bob Washington). Оно пустое. То есть никто из сотрудников не давал ему рекомендаций. Как использовать данные JSON в качестве значения строки Мы узнали, как форматировать данные внутри файла JSON. Еще можно использовать данные JSON в качестве строковых значений и присваивать их переменной. Поскольку JSON считается текстовым форматом, в большинстве языков программирования его можно обрабатывать как строку. Давайте рассмотрим пример, как это делается JavaScript. Вы можете добавить данные JSON в одну строку. Перечисление делается через одинарные кавычки '...'. const user = '{"name": "Alex C", "age": 2, "city": "Houston"}'; Если вы хотите сохранить форматирование, то данные JSON лучше создавать с помощью шаблонных литералов (template literals). const user = `{ "name": "Alex C", "age": 2, "city": "Houston" }`; Кроме того, это очень удобное решение, если нужно создать данные JSON с динамическими значениями. const age = 2; const user = `{ "name": "Alex C", "age": ${age}, "city": "Houston" }`; console.log(user); // Output { "name": "Alex C", "age": 2, "city": "Houston" } Объекты JavaScript и JSON – это НЕ одно и то же Формат данных JSON создавался на базе объектной структуры JavaScript. Но все сходства на этом заканчиваются. Объекты в JavaScript: у объектов JavaScript могут быть методы, а у JSON – нет; ключи можно добавлять без кавычек; разрешены комментарии; отдельные сущности Как преобразовать JSON в объект JavaScript и наоборот В JavaScript есть 2 встроенных метода по преобразованию данных JSON в объекты JavaScript и наоборот. Как преобразовать данные JSON в объект JavaScript Для преобразования данных JSON в объект JavaScript используется метод JSON.parse(). Он проводит синтаксический разбор (парсинг) допустимой строки JSON в объект JavaScript. const userJSONData = `{ "name": "Alex C", "age": 2, "city": "Houston" }`; const userObj = JSON.parse(userJSONData); console.log(userObj); Вывод: Как преобразовать объект JavaScript в данные JSON Для преобразования объекта JavaScript в данные JSON используется метод JSON.stringify(). const userObj = { name: 'Alex C', age: 2, city: 'Houston' } const userJSONData = JSON.stringify(userObj); console.log(userJSONData); Вывод: Должно быть, вы обратили внимание на слово JSON, которое используется для вызова методов parse() и stringify(). Это встроенный объект JavaScript, который, хоть и называется JSON (хотя с тем же успехом он мог бы называться JSONUtil), но не имеет никакого отношения к формату JSON. Так что, пожалуйста, помните об этом. Как обрабатывать ошибки "Unexpected token u in JSON at position 1" и другие? При обработке JSON могут возникать ошибки. Это нормально. Например, при разборе данных JSON в объект JavaScript вдруг появляется следующее сообщение: Если возникает такая ошибка, обязательно проверьте корректность ваших данных в JSON. Чаще всего причина синтаксического сбоя кроется в небольшой ошибке, которую вы случайно сделали в исходных данных JSON. Проверить правильность данных и форматов JSON можно с помощью JSON Linter.
img
В этой статье рассмотрим как решить следующие неисправности: Виртуальная машина не может подключиться к сети Нет связи между сетью и одной виртуальной машиной Невозможно подключиться к сети Интернет Сбой подключения к или от одной виртуальной машины через TCP/IP Вы видите одну или более из ошибок: Destination Host Unreachable Network error: Connection Refused Network cable is unplugged Ping request could not find host (IP address/hostname). Please check the name and try again Unable to resolve target system name (IP address/hostname). Решение Убедитесь, что каждый из последующих шагов подходит для вашей среды. Шаги включают в себя инструкции для выполнения и ссылки на документы для подтверждения шагов и дополнительных корректирующих мер, если они потребуются. Шаги выстроены в наиболее подходящем порядке для выявления и решения проблем. Не пропускайте шаги. Проверьте, что имя или имена Port Group, связанные с сетевыми адаптерам(и) виртуальной машины, существует и задано правильно. Если нет, то исправьте это с помощью Edit Settings на виртуальной машине, проверьте есть ли галочка напротив Connected. Удостоверьтесь в отсутствии проблем с хранилищем или ресурсами, так как это может вызывать неполадки с сетью на виртуальной машине. Это можно проверить на консоли виртуальной машины в ESX/ESXi or Virtual Center/vCenter Server через VI/vSphere Client. Убедитесь, что виртуальный сетевой адаптер присутствует и подключён. Проверьте правильно ли настроена сеть в гостевой системе на виртуальной машине. Проверьте правильно ли работает стек TCP/IP. Если данная виртуальная машина была создана из физической системы, то следует убедиться в отсутствии скрытых сетевых адаптеров. Убедитесь, что vSwitch на достаточно портов для виртуальной машины. Убедитесь, что конфигурация IPSec виртуальной машины выполнена правильно и не повреждена. Наличие двух виртуальных сетевых интерфейсных карт (vNIC) на виртуальной машине поможет исключить проблемы с сетевой интерфейсной картой (NIC) и физической конфигурацией. Чтобы найти возможную проблему: Если политика балансировки загрузки в режиме Default Virtual Port ID на уровне vSwitch и vDS - оставьте одну виртуальную сетевую интерфейсную карту (vNIC) подключённой к vSwitch или vDS и протестируйте различные комбинации виртуальных(vNIC) и физических (pNIC) сетевых интерфейсных карт, чтобы найти виртуальную машину с отсутствующим соединением. Если политика балансировки загрузки в режиме IP Hash: Убедитесь, что порты физического коммутатора настроены как порт-канал. Прты, к которым подключены сетевые интерфейсные карты (NICs), кроме одного и переключайтесь между всеми портами, включая за раз только один порт. Обратите внимание на комбинации портов и сетевых интерфейсных карт (NIC) при которых виртуальные машины теряют соединение. Также вы можете проверить выходные данные о работе сети с помощью команды esxtop с параметром n, чтобы найти используемую виртуальной машиной физическую сетевую интерфейсную карту (pNIC). Попробуйте отключать порты физического свитча по одному, чтобы определить, когда виртуальная машина теряет подключение к сети. Это также исключает неправильные настройки физического порта(-ов).
img
Представьте ситуацию, пользователи пытаются получить доступ к вашему сайту, но он не открывается. Знаете в чём дело? Возможно, есть ошибки, которые не были выявлены и решены раньше. Разочарованные пользователи покидают ваш сайт, а вы теряете лояльных пользователей. Как решить эту проблему? Как узнать о состоянии сайта раньше пользователей? Существует два возможных способа - eсли вы не против потратить немного денег, то можно обратиться к таким мониторинговым решениям, как StartCake и т.п. Однако если вы разработчик или не готовы тратиться ежемесячно, можете воспользоваться преимуществами API Geekflare - Site Up? Данный API проверяет доступность сайта из разных точек. В данном материале рассмотрим Python код, который немедленно уведомит вас через Gmail, как только сайт станет недоступен. Начнем с изучения API «Is Site Up?» API Is Site Up? Перед началом работы с API необходимо установить пакет requests, который в Python используется для работы с API. Но не обязательно использовать Python. Можно использовать любой другой язык. В любом случае, убедитесь, что настроили все необходимое, чтобы сделать API запрос. Итак, для тех, кто использует Python, установите пакет запросов с помощью команды: pip install requests Выполните настройку для других языков (если выбран другой язык, кроме Python) и переходите к следующим шагам. Теперь перейдите на страницу API Geekflare. Вы можете найти различные типы API, включая «Is Site Up?». Для использования API Geekflare нам нужен ключ API, который мы можем получить через RapidAPI. Нажмите на кнопку GET API KEY, чтобы перейти к RapidAPI. RapidAPI откроется в новой вкладке и выглядит следующим образом: Чтобы получить ключ API нужно создать учетную запись. Создайте учетную запись в RapidAPI, если у вас ее нет. Затем в верхней части всех доступных API Geekflare вы увидите API «Is Site Up?», который мы ищем. Если он не активен, найдите его с помощью поиска и нажмите на него. После этого в правой стороне должно отобразиться руководство по данному API. Из раздела Code Snippets в правой части выберите Python -> Requests. Или же если вы не используете Python, выберите другой язык с соответствующим пакетом. Вы получите код для вызова API «Is Site Up?». Давайте изменим его немного, чтобы потом легче было добавлять код. Посмотрите на измененный код в Python. import requests API_URL = "https://geekflare.p.rapidapi.com/up" def make_api_request(): headers = { 'content-type': "application/json", 'x-rapidapi-host': "geekflare.p.rapidapi.com", 'x-rapidapi-key': "YOUR_API_KEY" } payload = r'{"url": "https://www.geekflare.com"}' response = requests.request("POST", API_URL, data=payload, headers=headers) return response.json() if __name__ == '__main__': data = make_api_request() print(data) Замените API_KEY своим собственным ключом API из RapidAPI в приведенном выше коде. Он будет разным для каждого пользователя. Вы найдете его в RapidAPI в разделе Параметры заголовка: Тот же ключ API вы сможете найти в примере кода, как показано ниже. Несколько расположений В приведенном выше коде сайт проверяется из одного датацентра (Нью-Йорк, США). Но мы можем посылать запросы на сайт из разных мест с указав буквенные коды стран в теле запроса. Другие доступные места - Англия (Лондон) и Сингапур. Мы можем передать данные местоположения вместе с URL-адресом сайта следующим образом: { "locations": [ "uk", "us", "sg" ], "url": "geekflare.com" } Вы можете передать предпочитаемые расположения из списка. Мы написали код, чтобы сделать запрос API, который получает данные независимо от того, работает сайт или нет. Пришло время написать еще код, который отправляет почту, когда сайт не работает. Получение уведомления на почту В сети можно найти немало руководств о том, как отправлять электронные письма через Gmail в Python или же использовать следующий код, который использует пакет под названием yagmail специально разработан для отправки почты из Gmail. Перед отправкой сообщения через учетную запись Gmail необходимо включить параметр Разрешить небезопасные приложения. Вы можете включить его здесь. Посмотрим код: def send_mail(): gmail = yagmail.SMTP("gmail", "password") receiver = "receiver@domain.com" subject = "Testing Subject" body = "This is a testing mail" gmail.send( to=receiver, subject=subject, contents=body, ) Полное руководство по yagmail можно найти здесь. Теперь у нас есть код для запросов API и отправки почты. Следующим шагом является вызов send_mail всякий раз, когда в ответе на запрос сайт указывается как недостпный. Итак, откуда мы знаем, что наш сайт не работает или работает? Когда мы посылаем запрос к API «Is Site Up?», он возвращает нам Python словарь с некоторыми данными как следующем скриншоте: В данном словаре есть ключ message. Значение этого ключа и показывает нам состояние сайта. Данный ключ может иметь два значения: Site is up Site is down Итак, мы отправим почту, когда получим сообщение «Site is down». Окончательный код будет выглядеть так: import requests import yagmail API_URL = "https://geekflare.p.rapidapi.com/up" def make_api_request(): headers = { 'content-type': "application/json", 'x-rapidapi-host': "geekflare.p.rapidapi.com", 'x-rapidapi-key': "API_KEY" } payload = r'{"url": "https://www.abcd.com"}' response = requests.request("POST", API_URL, data=payload, headers=headers) return response.json() def send_mail(content): gmail = yagmail.SMTP("gmail", "password") receiver = "email@domain.com" subject = "Your Site is Down" gmail.send( to=receiver, subject=subject, contents=content, ) if __name__ == '__main__': data = make_api_request() message = data['message'] ## seding the mail if message == 'Site is down.': ## extracting the errors from different locations locations_data = data['data'] mail_content = "Your site is down due to unexpected error. See the useful data to resolve errors below. " for location in locations_data: mail_content += f"{location['city']}, {location['country']} - {location['error']} " mail_content += " Check the error and resolve them as soon as possible." send_mail(mail_content) Тело сообщения можете редактировать по своему усмотрению. Мы завершили код отправки почты всякий раз, когда наш сайт не работает. Смотри образец сообщения, полученного с помощью вышеуказанного кода. Но, есть еще проблема. Мы должны выполнить наш код, чтобы проверить, работает ли наш сайт или нет. Частота запуска данного скрипта зависит от ваших предпочтений. Допустим, мы должны проверять сайт каждые час. Правда, мы можем каждый час открыть терминал и запустить скрипт. Но это скучно и неэффективно. Плюс к этому, никто так не делает. Решение напрашивается само: использовать cron для автоматического выполнения нашего кода каждый час. Посмотрим, как его настроить. Настройка Cron Рассмотрим шаги по настройке cron в операционной системе на базе UNIX. Открыть терминал. Выполните команду crontab -e, которая открывает файл crontab на терминале. Нажмите клавишу i для перехода в режим ВВОДА. Теперь добавьте шаблон cron, пути к исполняемому файлу Python и нашему файлу, как указано ниже: 0 * * * * /usr/bin/python3 /home/sample.py Подробно про cron можно прочесть в этой статье. Итак, мы настроили планировщик для ежечасного запуска кода. Если нужно будет указать другое расписание, можно воспользоваться разными утилитами для генерации шаблона расписания для cron. Пожалуй, теперь все. Мы настроили проверку сайта каждый час и получение уведомления на почту, если сайт станет недоступен. Заключение Автоматизация экономит много времени и работает на нас. Можно настроить cron на каком-нибудь облаке, чтобы он постоянно работал, проверял состояние сайта и уведомлял нас при сбое.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59