По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Ранее мы рассказывали, как подключить нового абонента к OpenScape Voice с использованием веб-портала Common Management Portal. В этой статье мы расскажем, как включить и настроить дополнительные функции для абонента, такие как перехват вызова, различные виды переадресации, обратный вызов и другие. /p> Большая часть функций активируются при помощи специальных сервисных кодов, для которых нужно задать специальный префикс (Prefix Access Code). Изначально у абонентов нет возможности пользоваться дополнительными функциями и их можно включать либо по отдельности для каждого абонента, либо для группы абонентов, используя профиль дополнительных функций (Feature Profile). Создание профиля дополнительных функций Для этого необходимо перейти в раздел Configuration → Openscape Voice → Business Group → Profiles → Feature и нажать на кнопку Add для создания нового профиля. В открывшемся окне во вкладке General в поле Name вписываем название нашего профиля. Для того чтобы данный профиль автоматически назначался при создании нового абонента можно поставить галочку в пункте Default. Переходим на вкладку Features и в пункте Feature Name в выпадающем списке выбираем функцию, которую хотим добавить и нажимаем Add. После этого выбранная функция переходит в нижнюю часть окна. Затем нажимаем Save для сохранения профиля. Включение дополнительных функций у абонента Зайдем в настройки номера в разделе Configuration → Openscape Voice → Business Group - Members - Subscribers выбрав его в списке. Во вкладке Features, в пункте Feature Profile выбираем созданный профиль, либо можно выбрать необходимые функции из списка в поле Feature Name и добавить их, нажав кнопку Add. Активация дополнительных функций Как говорилось ранее, большая часть дополнительных функций активируется при помощи заданных сервисных кодов, которые передаются с телефона в систему при помощи протокола CSTA (Computer Supported Telecommunications Applications). Для того чтобы включить поддержку этого протокола нам необходимо вернуться в раздел Configuration → Openscape Voice → Business Group → Profiles → Feature , выбрать созданный профиль, и во вкладке Features добавить функцию CSTA Access . После того как она появится в списке внизу нужно нажать на нее, и войдя в настройку параметров функции выбрать значение CSTA Over SIP и сохранить при помощи кнопки Save. Включение CSTA на телефоне Заходим на веб-интерфейс телефона и переходим в раздел Administrator → System → Features - Configuration. Там нам нужно поставить галочку в пункте Allow uaCSTA (Включает протокол CSTA) и в пункте Server Features (Позволяет использовать дополнительные функции), после чего нажать Submit. После этого система готова к настройке дополнительных функций, которые активируются при помощи сервисных кодов. Это такие функции как использование группы перехвата вызова, переадресация звонков, создание конференции и другие. О том, как создать и настроить их мы поговорим в следующей статье.
img
Вам, как сетевому инженеру, крайне важно разбираться в том, каким образом вызовы VoIP влияют на пропускную способность канала в вашей компании. И по мере того, как работа из дома становится новой нормой, важность этого понимания возрастает еще больше. Расчет пропускной способности ваших IP-вызовов Cisco сводится к нескольким простым вычислениям. Такое уравнение поможет вам и вашей компании определить потребности сети. Эта статья разделена на 2 части. В первой объясняется терминология для проведения вычислений. Во второй – дается практический пример расчетов пропускной способности канала. Кроме того, мы поговорим о том, как разные протоколы влияют на ширину полосы, и где почитать подробнее о вычислениях. Что такое кодек? «Кодек» расшифровывается как «кодер/декодер». В принципе, его полное название должно помочь в понимании функций, но давайте поговорим о них подробнее. Когда человек осуществляет вызов через VoIP и разговаривает, его голос должен переводиться в нечто понятное для компьютера. Кодек – это часть программного обеспечения, которая и выполняет цифровое преобразование голоса или любого другого звука. Давайте вкратце обсудим, как это происходит. Основная функция кодека – преобразование голоса в цифровой сигнал. Голос – это звуковая волна, а компьютер может получить лишь часть, или выборку, этой волны с помощью математического процесса под названием интерполяция. Иначе говоря, кодек разрезает волную на несколько выборок, а затем приблизительно рассчитывает оставшуюся часть волны. Потом он берет этот примерный расчет и переводит его в бинарные данные, которые вновь преобразуются в голос. Теперь, когда мы поняли, как работает кодек, настало время поговорить о четырех примерах, которыми мы будем пользоваться в вычислениях. 4 кодека VoIP для Cisco 4 кодека VoIP для Cisco – это G.711, G.729, G.7622 и ILBC. Для каждого кодека существует своя величина выборки. Величина выборки кодека (Codec Sampling Size) – это количество байт, которое используется для оцифровки образца сигнала. Поговорим об этом подробнее, начиная с G.711. Что такое G.711? Кодек G.711 – это кодек, который специализируется на ясности и производительности. Именно поэтому у него высокая скорость передачи данных, или битрейт (64 000 КБ от пропускной способности сети), а величина выборки кодека – целых 80 байт. В основном, он используется для VoIP, но подходит также и для факсов. Что такое G.729? Кодек G.729 – это идеальное решение при ограниченной пропускной способности канала. Например, он хорошо подходит для малых бизнесов. Однако крупные компании, одновременно обслуживающие многих клиентов, быстро столкнутся с ограничениями G.729. Этот кодек занимает 8 000 КБ полосы и ограничивается только VoIP. Что такое G.722? G.722 похож на G.711. Величина выборки тоже 80 байт, а скорость передачи данных – 64 кбит/сек. Основное отличие заключается в том, что в G.722 доступна более широкая речевая полоса частот на 50-7000 Гц, тогда как речевая полоса в G.711 варьирует от 200 до 3000 Гц. G.722 хорошо подходит для случаев, когда звук должен быть особенно точным. Что такое iLBC? ILBC расшифровывается как Internet Low Bitrate Codec, или интернет-кодек с низкой скоростью передачи данных. Его битрейт составляет порядка 15 кбит/сек, а величина выборки кодека – 38 байт. Самое лучшее в iLBC – его способность снижать качество речи при потере большого количества блоков данных (фреймов). Теперь, когда мы детально разобрались в 4 разных протоколах, давайте вернемся к разговору о том, как рассчитать пропускную способность канала для каждого из них. Расчет пропускной способности канала Рассчитать пропускную способность канала можно в несколько простых шагов. Первым делом обозначьте все необходимые переменные. Обязательные переменные перечислены ниже: кодек и скорость передачи данных величина выборки кодека интервал выборки кодека средняя оценка разборчивости речи (MOS) размер полезной части голосового пакета Обратите внимание на четвертую переменную – среднюю оценку разборчивости речи. Она оценивает качество звука (от 1 до 5) при использовании конкретного кодека. Рассмотрим пример в таблице: Кодек и битрейт Величина выборки кодека Интервал выборки кодека Средняя оценка разборчивости речи Размер полезной части голосового пакета Пропускная способность для Ethernet G.711 (64 кбит/сек)  80  10  4,1  160  87,2 G.729 (8 кбит/сек)  10  10  3,92  20  31,2 G.722 (64 кбит/сек)  80  10  4,13  160  87,2 ILBC (15,2 кбит/сек)  38  10  4,14  38  38,4 Помните, что наша цель – найти самое последнее число из таблица, то есть пропускную способность для Ethernet. Основное уравнение принимает вид: Общая пропускная способность = Размер пакета х Пакетов в секунду Но выполнить расчеты по этой формуле не так уж просто, поскольку в таблице данных отсутствуют значения «Размер пакета» и «Пакетов в секунду». Давайте рассчитаем пропускную способность для кодека G.711 со скоростью передачи данных в 87,2 кб/сек. Вычисление размера пакета Для начала определим размер пакета для отдельного вызова VoIP. Выражение для определения этого параметра принимает вид: Размер выборки в байтах = (Размер пакета x пропускная способность кодека) / 8 Переменную «Размер выборки в байтах» можно взять из таблицы (см. «Размер полезной части голосового пакета), а пропускная способность кодека берется из первого столбца. Теперь наше выражение выглядит так: 160 байт = (размер пакета x 64 000) / 8 Обратите внимание, что мы делим правую часть на 8, потому как все вычисляется в битах, а итоговый ответ нужно получить в байтах. Далее умножим каждую часть на 8, чтобы убрать 8 из знаменателя. Получается следующее: 1280 = (размер пакета x 64 000) И, наконец, найдем размер пакета, разделив каждую часть на 64 000. В результате мы нашли размер пакета в 0,02 или 20 мс. То есть голосовую выборку для пропускной способности в 20 мс. Например, это количество времени, которое требуется, чтобы произнести букву «П» в слове «Привет», – именно это мы и вычисляли. Добавление потребления ресурсов в объем выборки Вы же помните, что VoIP не происходит в вакууме. Множество других процессов приводят к дополнительному потреблению ресурсов. Вернемся к нашему размеру полезной части голосового пакета в 160 байт. Один только Ethernet добавит к этой цифре еще 18 байт. Затем, как мы знаем, IP, UDP и протоколы RTP не останутся в стороне и добавят лишние 40 байт. Получается, что настоящий размер выборки становится 160 + 40 + 218 – это общий размер выборки в 218 байт. Расчет общей пропускной способности Теперь мы дошли до финальной части. Ранее уже говорилось, что общая пропускная способность равна размеру пакета х количество пакетов в секунду. Мы нашли наш размер выборки – 20 мс. Чтобы найти количество пакетов, передаваемых по проводам за этой время, воспользуемся следующим уравнением: 1000 мс / размер пакета = 1000 мс / 20 мс = 50 пакетов в секунду. Мы рассчитали, что размер пакета (он же размер выборки) равен 218 байт. И теперь можно получить ответ: Общая пропускная способность = 218 байт x 50 пакетов Общая пропускная способность = 10 900 байт/сек Переведем это число в килобайты, разделив его на 8. В результате мы получаем 87,2 кб/сек. Заключение В статье было много специальной лексики и математических расчетов. Но, разобравшись в этом, вы станете бесценным членом команды сетевых инженеров и сможете работать с VoIP-технологиями Cisco.
img
Что такое функциональное программирование? Функциональное программирование (также его сокращенно называют ФП) – это своего рода философия создания программного обеспечения путем создания чистых функций. ФП избегает концепций разделяемых состояний и изменяемых данных, которые есть в объектно-ориентированном программировании.  Языки функционального программирования делают упор на выражениях и объявлениях, а не на выполнении операторов. Соответственно, в отличие от других процедур, которые зависят от локального и глобального состояния, значение на выходе в ФП зависит только от аргументов, которые были переданы функции.  Характеристики функционального программирования Функциональное программирование сосредоточено на результате, а не на процессе ФП делает акцент на том, что должно быть вычислено Данные являются неизменяемыми Функциональное программирование разбивает задачу на «функции» ФП построено на концепции математических функций, которые для вычислений используют условные выражения и рекурсию ФП не поддерживает итерирование, например, операторы цикла и условные операторы, такие как if-else История функционального программирования Основа функционального программирования – это лямбда-исчисление. Оно было разработано в 1930-х годах для функционального применения, определения и рекурсии LISP – первый язык функционального программирования. Его разработал Маккарти в 1960 году В конце 70-х годов исследователи из Эдинбургского университета определили ML (Meta Language - метаязык). В начале 80-х годов язык Hope привнес алгебраические типы данных для рекурсии и эквациональных рассуждений В 2004 году появился новый язык функционального программирования «Scala» Языки функционального программирования Цель любого языка ФП – имитация математических функций. Однако базовая технология вычислений в функциональном программировании все же отличается. Ниже приведены некоторые самые известные языки функционального программирования: Haskell SML Clojure Scala Erlang Clean F# ML/OCaml Lisp/Scheme XSLT SQL Mathematica Основная терминология и базовые концепции функционального программирования Неизменяемые данные Неизменяемые данные подразумевают, что вам нужно просто создавать структуры данных вместо того, чтобы менять уже существующие. Ссылочная прозрачность Функциональные программы должны выполнять операции так, как если бы они это делали впервые. В этом случае вы будете знать, что могло или не могло произойти в процессе выполнения программы, а также ее побочные эффекты. В терминах ФП это называется ссылочной прозрачностью. Модульный принцип организации Модульная архитектура повышает производительность. Небольшие модули быстро пишутся, и есть большая вероятность, что они будут повторно использованы, а это, конечно, приводит к более быстрому процессу разработки программ. Помимо всего прочего, модули можно тестировать отдельно, что помогает сократить время, которое затрачивается на модульное тестирование и отладку.  Удобство сопровождения Удобство сопровождения – это несложный термин, который означает, что ФП-программы легче поддерживать, так как вам не нужно беспокоиться о том, что за пределами функции может что-то измениться.   Полноправная функция  «Полноправная функция» - это определение, которое относится к сущностям языка программирования, которые не имеют ограничений на использование. Как следствие, полноправные функции могут появляться в программе где угодно. Функция-замыкание Функция-замыкание – это внутренняя функция, которая может обращаться к переменным родительской функции даже после того, как та была выполнена. Функции высшего порядка Функции высшего порядка могут либо принимать другие функции в качестве аргументов, либо возвращать их в качестве результата.  Функции высшего порядка допускают частичное применение или каррирование. Этот механизм подразумевает, что функция применяется к своим аргументам по очереди, поскольку каждое такое применение возвращает новую функцию, которая уже принимает следующий аргумент. Чистая функция «Чистая функция» - это функция, входные параметры которой объявляются как входы, и ни один из них не может быть скрыт, а результаты объявляются как выходы. Чистые функции работают со своими параметрами. Это не очень эффективно, когда функция ничего не возвращает. Кроме того, они выдают один и тот же результат для заданных параметров.  Пример: Function Pure(a,b) { return a+b; } Функции с побочным эффектом Функции с побочным эффектом работают прямо противоположно тому, как работают чистые функции. У них есть скрытые входы и выходы; это и называется «с побочным эффектом». Функции с побочным эффектом нельзя использовать и тестировать в изолированной среде, так как у них есть зависимости. Пример: int z; function notPure(){ z = z+10; } Композиция функций Композиция функций – это объединение двух или более функций с целью создать одну. Разделяемые состояния Разделяемые состояния – это немаловажная концепция в ООП. Попросту говоря, это добавление свойств к объекту. Например, если «Жесткий диск» является объектом, то «Емкость запоминающего устройства» и «Размер диска» можно добавить в качестве свойств.  Побочные эффекты Побочные эффекты – это любые изменения состояния, которые происходят вне функции, которую мы вызвали. Самая главная цель ФП – минимизировать количество побочных эффектов, изолировав их от остального программного кода. Для функционального программирования важно, чтобы в остальной логике программы побочных эффектов не было. Преимущества функционального программирования Позволяет избежать ошибок и проблем в коде, которые сбивают в толку ФП-код проще тестировать, для него проще выполнять модульное тестирование и отладку кода Параллельное выполнение и конкурентность Быстрое развертывание кода и устойчивость к сбоям Предлагает лучший модульный принцип организации с более коротким кодом Повышенная продуктивность разработчиков Поддерживает вложенные функции Конструкции функционального программирование, такие как Lazy Map и Lazy List и т.д. Позволяет эффективно использовать лямбда-исчисление Недостатки функционального программирования Парадигма функционального программирования не так уж проста, так что в ней трудно будет разобраться новичку Программы трудны в сопровождении, поскольку очень много объектов дорабатываются в процессе написания кода Требуются частые замены реализации объекта имитированной реализацией, а также серьезная настройка системной среды Повторное использование достаточно затруднительно и требует постоянной реорганизации исходного кода Объекты могут некорректно моделировать задачу Сравнение функционального программирования и объектно-ориентированного программирования Функциональное программирование ООП ФП использует неизменяемые данные ООП использует изменяемые данные Придерживается модели декларативного программирования Придерживается модели императивного программирования Фокусируется на том, что вы делаете в программе Фокусируется на том, как вы пишете код Поддерживает параллельное программирование Не поддерживает параллельное программирование У его функций нет побочных эффектов Функции могут выдавать много побочных эффектов Управление потоками выполняется путем вызовов функций с рекурсией и без нее Управление потоками выполняется с помощью циклов и условных операторов Порядок выполнения операторов не важен Порядок выполнения операторов важен Поддерживает как абстракцию данных, так и абстракцию поведения Поддерживает только абстракцию данных Заключение Функциональное программирование, или ФП, - это своего рода философия создания программного обеспечения, которая основана на некоторых фундаментальных определяющих принципах Концепции функционального программирования делают уклон в сторону результатов, а не самого процесса Цель любого ФП-языка – имитация математических функций Некоторые самые известные языки функционального программирования: 1) Haskell; 2) SM; 3) Clojure; 4) Scala; 5) Erlang; 6) Clean «Чистая функция» - это функция, входные параметры которой объявлены как входы, и ни один из них не должен быть скрыт, а результаты объявлены как выходы Неизменяемость данных подразумевает то, что вы должны просто создавать новые структуры данных вместо того, чтобы менять уже существующие Позволяет избежать проблем и ошибок в коде, которые сбивают с толку Функциональный код не так прост, поэтому новичку будет сложно его понять ФП использует неизменяемые данные, а ООП – изменяемые
22 октября
20:00
Бесплатный вебинар
Как стать Python - разработчиком?