По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
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
Подключив SIP – транк к нашему Asterisk, следующим шагом необходимо настроить маршрутизацию вызова. Как это сделать исходящие и входящие маршруты во FreePBX 13 расскажем в сегодняшней статье: Маршрутизация вызова является важнейшей задачей в настройке офисной АТС. В настройках входящей маршрутизации, как правило, компании реализуют свои бизнес процессы – направляют вызовы с определенных номеров на IVR, c других номеров на Ring Group (группы вызова), а третьи напрямую на ответственного менеджера. При исходящей маршрутизации, можно учитывать направление вызова, например, если у вас 2 провайдера IP – телефонии, и один из них дает наилучшую цену для звонков в Сибирь, а другой для звонков на Урал. Пошаговое видео Исходящие маршруты Начнем с настройки исходящей маршрутизации во FreePBX 13. Для этого перейдем во вкладку Connectivity → Outbound Routes Открываем интерфейс настройки на первичной вкладке Route Settings. Давайте разберемся, что можно здесь настроить: Route Name - Имя маршрута. Рекомендуем записывать названия по номеру телефона – это позволяет быстрее ориентироваться в настроенных маршрутах. Route CID - В данном поле можно ввести CallerID для этого маршрута, т.е номер звонящего, который мы будем отправлять в сторону провайдера. Важно отметить, что данный CID является менее приоритетным, чем CID настроенный на SIP – транке и правилах Ring Group, Follow Me. Override Extension - Yes/No: Если выбрано значение Yes, то настроенный в параметрах экстеншена Outbound CID будет игнорироваться Route Password - Данная настройка позволяет запрашивать у пользователя пароль, чтобы позвонить через данный маршрут. Это достаточно полезная опция, при звонках зарубеж. Route Type - Выбрать тип маршрута: Аварийный (Emergency) или Корпоративный (Intra-Company) Аварийный (Emergency): Набор экстренных служб и прочих Корпоративный (Intra-Company): В данном случае будет сохранена информация Caller ID в настройках Extension Music On Hold - Музыка ожидания на маршруте. Для различных направлений звонка, например, можно делать какое-либо звуковое сообщение на нативном для направления языке. Time Group - Временная группа. Если отмечено, то этот маршрут будет использоваться только в указанное в настройках Time Group времени. Route Position - Во FreePBX 13, как и в других версиях используется приоритетность маршрутов в зависимости от его позиции. В данном пункте можно выбрать позицию маршрута относительно других. Trunk Sequence for Matched Routes - Последовательность SIP – транков для отправления вызова в сторону провайдера. Если первый транк не работает, вызов будет отправлен во второй и так далее. Optional Destination on Congestion - Если вызов не может состоять по причине неработоспособности SIP – транков, то можно отправить вызов, например, на звуковое сообщение «В настоящее время все линии недоступны. Обратитесь в техническую поддержку» Отлично, мы разобрались со вкладкой Route Settings, теперь перейдем ко вкладке Dial Patterns, в которой мы будем определять формат набора номера. Вот как выглядит типичная настройка на маршруте: Давайте разбираться более подробно: Шаблон набора номера (Dial Pattern) – это уникальный набор цифр, который позволяет отправить вызов в нужный SIP – транк. Если шаблон совпадает, то вызов отправляется через SIP – транк в сторону провайдера. Шаблон набора номера имеет 4 поля настройки: Prepend, Prefix, Match Pattern и CallerID. Формат такой: (prepend) prefix | [ match pattern / caller ID ] Шаблон Описание X Любое целое число от 0 до 9 Z Любое целое число от 1 до 9 N Любое целое число от 2 до 9 [#####] Любое целое число в скобка. Например, перечисление – [1.2.7], или диапазон чисел –[1.2.6-9], в который попадают числа 1,2,6,7,8,9 .(точка) Любой набор символов Теперь давайте разберемся с полями, которые доступны для заполнения: Prepend - Данная часть будет добавлена к номеру, перед отправкой в SIP – транк в случае совпадения шаблона. Prefix - Префикс – это часть шаблона, которая будет удалена Match Pattern - Набранный номер. ВАЖНО: Asterisk ищет совпадения сопоставляя поле Prefix и Match Pattern. CallerID - Данный звонок будет выполнен только в случае, если звонок инициирован с указанного CallerID. В данном поле можно использовать шаблоны. Полезно, если компания имеет несколько офисов с нумерацией виду 1XXX, 2XXX и так далее. Теперь наш маршрут готов. Мы можем совершать исходящие вызовы. Но как настроить входящую маршрутизацию во FreePBX 13? Перейдем во вкладку Connectivity → Inbound Routes Входящие маршруты Самым главным пунктом в настройке входящего маршрута является DID Number. Данный параметр вы получаете от вашего провайдера, и, как правило, он совпадает с самим подключаемым номером. Даем имя нашему входящему маршруту – чтобы не путаться, мы советуем так же дать имя в соответствие с номером. Далее, самое главное – поле Set Destination. Выбираем назначение для нашего звонка. Это может быть как IVR, проверка времени, Ring Group или что - угодно На этом настройка маршрутизации во FreePBX13 завершена
img
Все, что нужно знать не разработчикам: SDK – это строительные блоки разработки приложений. Если ваша компания занимается тем, что разрабатывает или добавляет функциональные возможности в приложение, то вы, вероятно, слышали, как ваши разработчики используют термин «SDK». SDK (software development kit) – это пакет разработки средств ПО (иногда его называют devkit). Как можно понять из названия, это набор инструментов и инструкций, которые разработчики используют для создания приложений. SDK избавляют разработчиков от необходимости писать каждый банальный фрагмент кода своими руками. Они помогают стандартизировать разработку, что позволяет приложениям без каких-либо затруднений работать на различном оборудовании, операционных системах и совместно с другими приложениями. Итак, какое это вообще имеет для вас значение, если вы не разработчик программного обеспечения? Так как архитектура вашего приложения напрямую связана с его коммерческой ценностью, то, когда вы выбираете то, какие компоненты использовать (например, Stripe или PayPal для платежей), ваш выбор должен быть продиктован SDK. Здесь мы привели краткое описание того, что такое SDK, как они работают и как сравнить их по качеству. Пакет разработки средств ПО (SDK - Software Development Kit): определение и примеры SDK – набор инструментов, который используют разработчики для создания приложений с помощью готовых компонентов, тем самым не утруждая себя тем, чтобы создавать эти компоненты собственноручно. SDK предназначены для работы с определенными операционными системами, оборудованием и языками программирования. А вот вам аналогия из реальной жизни: если вы собираетесь собрать книжную полку, то SDK – это все то, что вы найдете в коробке из IKEA, то есть предварительно собранные детали, инструменты и инструкции, как все это собрать. А чтобы, например, собрать стол без SDK, вам придется пойти в лес, срубить дерево, чтобы у вас был свой пиломатериал, причем использовать для этого придется топор, который вы тоже должны сделать сами. Если, например, вы хотите создать мобильное приложение, то вам нужно загрузить iOS SDK от Apple. Это даст вам доступ к любым инструментам iPhone, которые вам будут нужны для того, чтобы создать приложение, например, подключение к камере, интерфейсу Siri или включение push-уведомлений. Аналогично, если вы хотите внедрить платформу Auth0 в свои мобильные и веб-приложения, то вы должны загрузить iOS SDK, Android SDK и веб-SDK. Что находится в SDK? Практически все SDK содержат несколько основных компонентов: Библиотеки кода. Это исходный код, который разработчики могут подключают, чтобы приложение выполняло те функции, которые им нужно. Программный интерфейс приложения (API - Application programming interface). Они позволяют приложению без проблем подключаться к другим службам (подробнее об этом позже). Интегрированная среда разработки (IDE - Integrated development environment). Это интерфейс, с помощью которого разработчики пишут программы. В него встроен компилятор, который переводит высокоуровневый язык программирования, на котором написан исходный код SDK, на язык более низкого уровня, который можно использовать для сборки приложений. Документация. Это инструкции для разработчиков, в которых описано, как нужно использовать код. Понятная и подробная документация – важный критерий хорошего SDK. Отладчик. Отладка автоматически исправляет мелкие ошибки, упрощая тем самым процесс разработки приложения. Примеры кода. Они помогают разработчикам начать работу. Это примеры кода в действии, которые показывают, как их можно использовать. Некоторые SDK также содержат учебные руководства и другие инструментальные средства поддержки. Виды SDK Для создания большинства приложений используются самые различные SDK. Некоторые из этих SDK оптимизируют приложение для конкретного устройства или операционной системы, а некоторые позволяют разработчикам добавлять различные инструменты. SDK с точки зрения аппаратных средств: SDK предназначены не только для мобильных и веб-приложений; они также используются для программирования Интернета вещей (IoT). Поэтому, если вы покупаете, например, набор солнечных батарей, то поставщик оборудования может включить в поставку SDK, чтобы разработчики могли запрограммировать их так, как им нужно. Операционная система мобильного устройства: как мы уже говорили, для того, чтобы разработать приложение, которое бы работало как на Android, так и на Apple необходимы SDK для каждой ОС. Язык программирования для веб-приложений: разработчикам требуются SDK, которые позволяют создавать веб-приложения на том языке программирования, который они выбрали, например, Python, Ruby, JavaScript или PHP. SDK с открытым исходным кодом: это бесплатные SDK, и разработчики могут их модифицировать как сочтут нужным. Это может быть, как преимуществом, когда дело доходит до настройки, так и недостатком, когда возникают риски для безопасности. Проприетарные SDK: в отличие от SDK с открытым исходным кодом, для проприетарных, или коммерческих, SDK нужна лицензия на использование, и к тому же разработчики не могут менять его исходный код. SDK vs API Различие между SDK и API может легко запутать вас, однако оно одновременно и очень простое, и очень важное. API – это фрагменты кода, которые взаимодействуют между двумя частями программного обеспечения. Таким образом, если вы создаете приложение для совместных поездок, то вам нужны API, которые бы соединяли его с телефоном пользователя и, соответственно, возможностью обмена сообщениями, платежной платформой и GPS. Все эти элементы могут находиться в разных серверных частях, но API позволяет им взаимодействовать друг другом и обеспечивает беспроблемное взаимодействие с пользователем. Большинство SDK содержат API, поэтому разработчики могут создавать приложения, которые подразумевают возможность подключения и взаимодействия. Без API подключение приложений чем-то похоже на знаменитую сцену из «Аполлона-13». Но все не так просто, так как вы можете использовать API и без SDK. А в некоторых случаях разработчикам приходится выбирать между SDK и API, чтобы можно было произвести интеграцию с конкретной службой. Преимущество SDK заключается в том, что его проще и быстрее интегрировать (как стол из IKEA – большая часть работы уже сделана за вас). Преимущество API в том, что он более компактный (то есть не содержит библиотек кода для ненужных вам функций) и дает больше возможностей для индивидуальной настройки (если вы мастерите свой собственный стол, то вы можете спроектировать его так, как вам нужно, - любого размера, который вам нужен). Составляющие хорошего SDK Если вы создаете приложение, то, скорее всего, для таких функций, как оплата, обмен сообщениями или аутентификация, вы будете использовать SDK. Разработчикам крайне сложно дается создание этих компонентов, и любые ошибки могут повлечь за собой серьезные проблемы с безопасностью. При выборе поставщика для этих услуг, вы можете сравнивать цены и функции, но также вы должны обратить внимание на их SDK. Вот что должно быть в хорошем SDK: Легковесность: вам нужен SDK, который бы выполнял все необходимые функции с минимальным количеством кода. В противном случае мобильное приложение может занимать слишком много места на телефоне пользователя и работать медленнее, чем нужно. Когда вы перестраиваете устаревшее приложение, то стоит посмотреть, сколько кода используют ваши существующие решения и задаться вопросом, а не упростит ли их SDK. Хорошая документация: представим: два практически идентичных SDK. Однако, если у одного есть подробная документация о том, как его использовать, а второй оставляет разработчиков разбираться с этим самостоятельно, то навряд ли их можно считать равными. Индивидуальная настройка: некоторые SDK настраивать нельзя, то есть вы можете использовать их только такими, какие они есть. Это становится проблемой, когда разработчики решают, что хотят настроить продукт под свои уникальные потребности или добавить фирменное оформление или графику. Безопасность: очень важно использовать SDK только из надежных источников, чтобы исключить возможность того, что вы нечаянно добавите вредоносный или иной нежелательный код в приложение. Из отчета SafeDK: «58% проверенных приложений все еще используют, как минимум, один SDK, который обращается к личным данным пользователя». В эпоху законов о конфиденциальности данных это может привести к тому, что ваше приложение может нажить себе юридических неприятностей. Простота использования: хороший SDK должен предоставлять учебные руководства и примеры кода, а также давать разработчикам возможность обращаться к надежному сообществу или службам поддержки при возникновении каких-либо проблем. SDK: не просто еще одна аббревиатура, которая сбивает с толку Любая компания, которая создает новые приложения или добавляет новые функции в уже существующие, будет использовать SDK как часть процесса разработки. Но SDK – это не просто загадочные концепции программирования; они напрямую влияют на безопасность приложения, его индивидуальную настройку и срок до выпуска на рынок. Если вы не разработчик, то вам необязательно разбираться во всех тонкостях данной темы, но вы должны уметь задавать правильные вопросы.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59