По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
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 на каком-нибудь облаке, чтобы он постоянно работал, проверял состояние сайта и уведомлял нас при сбое.
img
Web real-time communication (WebRTC) стандарт, который появился совсем недавно и нацелен на осуществление общения в реальном времени с помощью веб-браузера с использованием одно ранговой сети. Проект WebRTC является открытым и его целью является позволить браузерам нативно поддерживать пиринговую передачу данных в реальном времени. В настоящее время много веб-сервисов используют RTC (связь в режиме реального времени), но при этом требуется установка приложений или специальных плагинов. К примеру – Skype, Facebook (так же работает через Skype) и Google Hangouts (использует плагин Google Talk). Установка и обновление плагинов может быть достаточно трудоёмким и нудным процессом, после которого могут появляться новые ошибки. С этой точки зрения технология WebRTC действительно привносит множество новшеств, таких как: Нет необходимости в лицензировании Интеграция являет собой процесс с использованием стандартных Web API Отсутствие проприетарных плагинов Нет необходимости в скачивании и установке чего-либо, достаточно просто зайти на веб-страницу. Целями данной технологии являются, главным образом – минимум трудозатрат при связи, поддержка большинства браузеров, поддержка популярных в данный момент сервисов для голосовой или видеосвязи – Skype, WhatsApp и т.д. Главное – уменьшение капитальных затрат и повышение эффективности связи при использовании данной разработки. Основные моменты До первой коммуникации браузеры «не знают» о существовании друг друга JavaScript управляет процессом установки соединения через сервер Потоки медиа-данных используют кратчайшие пути с целью уменьшения задержки. На схеме ниже изображен процесс соединения абонентов: Для веб-приложения WebRTC необходима следующая информация: Получение доступа к потоковой передачи голоса иили видео данных Получение сетевой информации – сетевой адрес, порт и обмен данной информацией с другими пирами Синхронизация сигнальной информации для открытия и закрытия сессий, выявления ошибок Обмен информацией о совместимости таких параметров как: тип браузера, разрешение и тип кодека Соединение входящего и исходящего потока медиа-данных Что касается сигнализации при использовании данной технологии, первоначальной идеей было использовать SDP (Session Description Protocol), однако данный подход выявил несколько неразрешимых проблем. IETF принял решение стандартизировать протокол JSEP (Javascript Session Establishment Protocol), что дословно переводится как протокол открытия сессии с помощью Javascript. JSEP предоставляет интерфейс для приложения, позволяющий оперировать локальными и удаленными описаниями сессий. Подход с использованием данного протокола делегирует ответственность по управлению состоянием сигнализации исключительно приложению. Что же с точки зрения безопасности? Есть несколько путей, которыми может быть скомпрометировано приложение или плагин RTC: Незашифрованные медиа-данные могут быть перехвачены между абонентами или между абонентом и сервером Приложение может записывать звонки и распространять их без ведома пользователя Вирусы могут установлены вместе с приложением или плагином при установке из неблагонадежного источника В технологии WebRTC было добавлено несколько функций, которые позволяют избежать вышеописанного: Реализации WebRTC используют безопасные протоколы, такие как DTLS и SRTP Шифрование обязательно для всех компонентов WebRTC, включая сигнальные механизмы. WebRTC не является плагином или отдельной программой – всего компоненты запускаются в браузере, причем не являясь отдельным процессом. Компоненты WebRTC обновляются при обновлении браузера. Конечно, вышеописанное справедливо только при использовании поддерживаемых браузеров и соблюдении обычных правил безопасности в интернете. Преграды для быстрого развития Необходимость наличия сервера для осуществления четырех задач: Поиск пользователей Сигнализация Механизмы прохождения сигнальной и медиа информации через NAT Механизмы обеспечения прохождения информации через межсетевой экран Отсутствие нативных приложений и SDK – WebRTC технология для связи абонентов через браузер, однако нет SDK, позволяющего разработать нативное приложение для IOS и Android Невозможность конференций – благодаря своей пиринговой натуре (peer-to-peer), WebRTC является чрезвычайно легко масштабируемой технологией, но при этом отсутствует необходимый инструментарий для организации аудио и видеоконференций. Выводы Стандартизация различных API для WebRTC может снизить цены на связь и позволит использовать WebRTC во многих индустриях – телекоммуникационной, игровой, новостной и так далее. Кроме того, можно с уверенностью сказать, что WebRTC окажет сильное влияние на Интернет в общем – разработки веб-приложений с открытым кодом, на рост совместимости между браузерами и т.д
img
Да – да, CUCM умеет собирать CDR (Call Detail Record). А в статье мы покажем, как включить данный функционал, который по умолчанию, отключен. Включение CDR Подключаемся к интерфейсу Cisco Unified CM Administration: Переходим по пути System → Service Parameters и выбираем следующее: Server - 192.168.1.1 (Active), например. Тут мы выбираем ноду, на которой проведем работы. У вас, конечно, IP будет другой. А может и такой же :) Service - отметьте сервис Cisco CallManager (Active); Листаем на появившейся страницу параметры и находим сегмент System, в котором отмечаем вот что: CDR Enabled Flag * - True. Этим параметром мы говорим колл – менеджеру, создавать и хранить CDR – записи по каждому звонку, который пройдет через этот UCM; CDR Log Calls with Zero Duration Flag * - True. Включая этот параметр, мы говорим, чтобы сервер сохранял звонки, которые не состоялись, или длительность которых менее 1 секунды (это полезно для траблшутинга); Не забывайте сохранить изменения. Повторите данные процедуры для каждой ноды в кластере (если на этапе выбора в сегменте System → Service Parameters → Server у вас больше одного сервера). Дополнительная настройка После этого, давайте познакомимся с дополнительными параметрами. Для этого, в меню настройки нажмите на кнопку Advanced: Выставьте следующие параметры: Call Diagnostics Enabled - Enabled Only When CDR Enabled Flag is True. Параметр отвечает за включение так называемых Call Management Records (CMR), которые очень полезны при диагностике проблем и траблшутинге; Display FAC in CDR - True. Отображать ли Forced Authorization Code (FAC) в CDR записях. То есть, отображаться ли код доступа в CDR – записях. В целом, данный параметр зависит от ваших политик безопасности. Мы отображаем :); Show Line Group Member DN in finalCalledPartyNumber CDR Field - True. Если коротко – параметр в таком положении, будет показывать DN (directory number) человека, который ответил на звонок внутри группы, а не номер самой группы; Show Line Group Member Non Masked DN in finalCalledPartyNumber CDR Field: Required Field - по факту, почти тоже самое, что и выше; Переходим в интерфейс Cisco Unified Serviceability, переходим в раздел Tools → CDR Analysis and Reporting. Далее, во вкладке CDR можете воспользоваться поиском или выгрузкой данных. Enjoy :)
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59