По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
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
Друг! CUCM - это серьезный энтерпрайз продукт, телефонию на базе которого, строят топовые банки, государственные структуры и холдинги. Админить CUCM на продакшне - ответственное дело, которое требует богатый бэкграунд, который, кстати, ты можешь получить в нашей IT базе знаний :) В статье мы расскажем про то, как установить Cisco Unified Communications Manager (CUCM) . Делать мы будем на примере 11 версии, и для виртуализации будем использовать гипервизор компании VMWare Подготовка виртуальной машины Первым делом, нам нужно cоздать виртуальную машину в среде виртуализации. Для этого, переходим в VMware vSphere Web Client (у вас может быть толстый клиент, разницы нет), в разделе VMs and Templates выбираем директорию, в которой будет создана новая виртуальная машина (если у вас их несколько), а затем, нажимаем на директорию правой кнопкой мыши, выбираем New Virtual Machine → New Virtual Machine: В инсталляторе выбираем Create a new virtual machine: Даем имя виртуальной машине. У нас это CUCM. Обратите внимание, директория, куда будет произведена установка уже выбрана: У нас несколько хостов в виртуальном кластере – выбираем куда будем ставить:. Гуд. Выбираем Datastore (хранилище), ресурсы которого займет виртуалка: Выбираем совместимость с гипервизором 6 версии: Важный шаг – отмечаем требования к операционной системе. Вот что нужно: Linux Red Hat Enterprise Linux 6 (64-bit) - старые версии CUCM используют рани версии RHEL; Далее – даем ресурсы виртуалке следующим образом: Процессор – 2 ядра (для быстрой установки нужно использовать 2 ядра, впоследствии можно изменить на 1) Память – 8 GB (после установки можно уменьшить до 2 GB; 4 GB нужно минимум, чтобы пройти проверку) HDD – один раздел на 110 GB Финально проверяем что у нас получилось и нажимаем Finish: После того как указали все параметры виртуальной машины запускаем ее. Установка CUCM После запуска виртуальной машины с подмонтированным ISO начнется процесс инициализации. После него нам нужно выбрать продукт, который мы будем устанавливать – выбираем Cisco Unified Communications Manager и нажимаем OK. Затем нам сообщают, есть ли уже на диске, какие-либо версии CUCM, и какую версию мы собираемся установить. Нажимаем Yes. После этого нам предлагается воспользоваться мастером начальной конфигурации, для чего нажимаем Proceed Нас спрашивают, хотим ли мы сделать апгрейд (upgrade patch) и мы нажимаем No. Появится сообщение, что это новая базовая установка. Нажимаем Continue. В следующем окне нужно указать нашу временную зону и нажать OK. Следующие экраны будут посвящены сетевой конфигурации. Сначала будет сообщение о том, что у сетевого адаптера скорость и дуплекс будет определены хостом. Нажимам Continue. Затем у нас поинтересуются, хотим ли мы выставить размер MTU (Maximum transmission unit - максимальный размер полезного блока данных пакета) отличный от стандартного размера в ОС равного 1500 байт. Этот размер не должен превышать значение минимального MTU в нашей сети. Нажимаем No. Далее идет вопрос – ходим ли мы использовать DHCP, и если не хотим, то нажимаем No. Если мы выбрали No, то следующим пунктом нам нужно будет ввести имя хоста (Host Name), IP адрес (IP address), маску подсети (IP Mask) и адрес шлюза (GW Address) и нажать OK. После этого у нас спросят, хотим ли мы включить DNS (Domain Name System) клиент на этой машине. Если нам это нужно, то нажимаем Yes. Если мы включили DNS клиент, то указываем адреса DNS серверов (Primary и Secondary DNS) и имя DNS домена (Domain), затем нажимаем OK. Далее нам нужно указать логин (Administrator ID) и пароль для администратора платформы. Эти данные будут использоваться для подключения к консоли SSH и для доступа в раздел Disaster Recovery System (DRS) . После того как все ввели нажимаем ОК. В следующем пункте указываем информацию об организации, которая нужна для создания сертификата. Чтобы продолжить нажимаем ОК. Следующий вопрос важен, если мы устанавливаем конфигурацию из нескольких серверов. Если сервер, который мы сейчас устанавливаем, является первой нодой в кластере, то нажимаем Yes. Следующим пунктом нам нужно указать адрес NTP (Network Time Protocol) серверов в системе. После того как указали их нажимаем ОК. Далее задаем Security Password, который используется для связи между нодами, а также используется DRS для шифрования файлов бэкапов. Нажимаем ОК после того как задали пароль. Затем нам предложат сконфигурировать SMTP (Simple Mail Transfer Protocol), и если нам это пока не нужно, то нажимаем No. В отличие от более старых версий CUCM здесь появился еще один дополнительный шаг – можно включить систему Smart Call Home, которая предоставляет проактивную диагностику и предупреждения в реальном времени на ряде устройств Cisco для повышения доступности сети и повышения операционной эффективности. Его можно настроить потом, для этого нужно выбрать пункт Remind me later to configure Smart Call Home и нажать ОК. Следующим пунктом мы указываем логин (Application User Username) и пароль, который будет использоваться для доступа к Cisco Unified CM Administration, Cisco Unified Serviceability и Cisco Unified Reporting. Указываем и нажимаем ОК. И вот мы переходим к завершению настройки и сейчас нам сообщают, что настройка платформы завершена. Если мы уверены, что указали все, что нам было нужно, то нажимаем ОК. После этого пойдет процесс установки, во время которой система может перезагрузиться несколько раз. По окончанию установки мы увидим следующий экран, показывающий, что установка прошла успешно. После это мы можем открыть браузер, перейти по адресу https//ip_адрес/ccmadmin и увидеть веб-интерфейс системы. Поздравляем! Мы только что установили Cisco Unified Communications Manager! Что делать дальше? Можно начать заводить телефоны или найти что-то другое.
img
Сетевые пользователи часто сталкиваются с необходимостью наличия статического общедоступного IP-адреса, например, при настройке веб-сервера, лаборатории с доступом через Интернет или даже при настройке почтового сервера. В таких случаях приходиться либо покупать новый интернет-пакет, включающий общедоступные IP-адреса, либо покупать новый пул статических общедоступных адресов у провайдера. Однако начиная с Сisco IOS 12.4 и далее на маршрутизаторах Cisco можно настроить протокол DDNS (Dynamic DNS), который позволяет обновлять запись DNS при изменении IP – адреса маршрутизатора-следовательно, требование к статическому IP-адреу смягчается. На приведенной ниже диаграмме показано функционирование службы DDNS: Ниже приведено краткое описание работы DDNS с Cisco IOS: Для регистрации у провайдера DDNS необходимо создать учетную запись. Настройте Интернет-маршрутизатор Cisco для работы в качестве клиента DDNS. Поставщик DNS создает уникальное доменное имя, указывающее на текущий динамический IP-адрес на Интернет-маршрутизаторе Cisco. При перезагрузке интернет-маршрутизатора или изменении динамического IP-адреса он получает новый IP-адрес от провайдера. Клиент DDNS уведомляет сервер DDNS, и запись DNS обновляется с новым общедоступным IP-адресом. Когда Интернет-пользователь хочет получить доступ к «test.dyndns.org», он отправляет DNS-запрос. DDNS отвечает на запрос DNS, предоставляя IP-адрес 100.100.100.1 Интернет-маршрутизатора. Как только пользователь получает динамический общедоступный IP-адрес интернет-маршрутизатора (100.100.100.1), пользователь может связываться с интернет-маршрутизатором через его вновь назначенный IP-адрес. Ниже приведена конфигурация маршрутизатора Cisco для поддержки службы DDNS. Шаг № 1 - Включите поиск DNS и настройте сервер IP-имен HQ# configure terminalHQ(config)# ip domain-lookup HQ(config)# ip name-server 4.4.4.4 HQ(config)# ip name-server 8.8.8.8 Шаг № 2 - Затем определите метод обновления DDNS: HQ(config)# ip ddns update method dyndns Шаг № 3 - В этом сценарии мы будем использовать HTTP в качестве метода обновления в конфигурации, чтобы указать URL-адрес, который маршрутизатор будет использовать для связи с поставщиком DDNS с новым публичным динамическим IP - адресом при изменении. HQ(DDNS-update-method)# HTTP add http://username:password@members.dyndns.org/nic/update?system=dyndns&hostname=<h>&myip=<a> Шаг № 4 - Далее мы устанавливаем интервал обновления, чтобы гарантировать, что FQDN обновляется как можно чаще. Конфигурация параметров интервала обновляется до 1 дня, 0 часов, 0 минут и 0 секунд. HQ(DDNS-HTTP)# interval maximum 1 0 0 0 Шаг № 5 - Наконец, установите FQDN, которое будет обновляться, и включите службу DDNS на общедоступном интерфейсе (в этом сценарии будет использоваться Dialer0): HQ(DDNS-update-method)# interface dialer0 HQ(config-if)# ip ddns update hostname test.dyndns.org HQ(config-if)# ip ddns update dyndns Для отладки DDNS введите следующие команды HQ#debug ip ddns update
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59