По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
@media screen and (max-width: 736px){ .video-container { position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden; } .video-container iframe { position: absolute; top:0; left: 0; width: 100%; height: 100%; }} Как думаешь, какой язык программирования сейчас самый популярный? Если погуглить, то окажется, что это Python. А почему так, мы сейчас расскажем и покажем. Начнем с произношения - как его называть? Питон? Писон? Пистон? Можно и так, но правильно будет Пайтон, потому что его создатель Гвидо Ван Россум, назвал его в честь популярной комедийной группы Монти Пайтон, а точнее их шоу “Летающий цирк Монти Пайтона”, так что чешуйчатые тут не причем. Почему мы слышим про Python из каждого утюга? В чем секрет его популярности? Дело в том, что он используется не только разработчиками, а еще очень популярен среди математиков, аналитиков, ученых, сетевых инженеров, сисадминов, хакеров и даже бухгалтеров. Для программиста, такое большое сообщество — это гигантский плюс - не знаешь, как решить задачу? Спроси или найди готовое решение на Stack Overflow, там это уже проходили и обсудили. Популярность Python также объясняет его простота освоения. Даже если ты очень далек от айти, а при виде кода у тебя потеют ладошки, то чилл - изучение пайтона не составит для тебя большой сложности - он имеет простую структуру и синтаксис. А все благодаря его философии, которая заложена в основу языка: Красивое лучше, чем уродливое. Явное лучше, чем неявное. Простое лучше, чем сложное. Сложное лучше, чем запутанное Порог вхождения в Python низкий, потому что это очень дружелюбный для новичков язык программирования Пайтон применяют для самых разных задач: анализ данных и их визуализация, искусственный интеллект, машинное обучение, автоматизация процессов, да что угодно! Теперь чутка техники: Python это высокоуровневый интерпретируемый язык программирования общего назначения. Не пугайся, все просто. Смотри: Высокоуровневый означает, что тебе не нужно в деталях знать, как работает компьютер. Это как со смартфоном - тебе не нужно понимать как работает транзистор и что такое “лавинный пробой”, чтобы послушать на нем треки. Ну и по сравнению с другими языками, работа с памятью происходит автоматически, нам не нужно предварительно выделять ее и освобождать - спасибо встроенному “сборщику мусора” Интерпретируемый - когда ты допишешь на Python свой первый скайнет, его будет нужно преобразовать в машинный язык, который сможет понять компьютер. Да - да, компьютер сам по себе твою писанину не поймет. Именно для этого используется интерпретатор Python, который при выполнении программы превращает написанный тобой код построчно, по одной за раз, в машинный код. А компилируемые языки, такие как Java, используют компилятор, который компилирует весь исходный код целиком перед выполнением твоей программы. Общего назначения означает, что использовать Python можно в различных областях, ну как мы уже и говорили: веб, десктоп и мобильные приложения, тестирование, работа с данными, работа с большими данными (big data), искусственный интеллект и машинное обучение, автоматизация и даже игры на нем писать можно! Так это вроде у всех есть, нет? Неа, например есть целевые языки, такие как SQL, который можно использовать только для запроса данных из реляционных баз данных. Пайтон является объектно-ориентированным языком (ООП) программирования. Если кратко, то ООП - это когда вся программа рассматривается как набор взаимодействующих друг с другом объектов, где каждый объект имеет свои свойства и поведение. А если ты уже прогаешь на другом языке, то смотри, что в пайтоне особенно круто: он строго типизированный - это означает, что значения переменных не будут неожиданно изменяться Но при этом динамически типизированный, следовательно нам не нужно указывать тип переменной каждый раз. А еще: забудь про точки с запятой! Вместо этого тут используются отступы, чтобы определить блоки кода. И да, фигурные скобки в этом случае, как видишь, тоже не нужны. Также стоит заметить то что пайтон это кроссплатформенный язык программирования, что значит что мы можем писать и запускать свой код на Windows, Linux, MacOS и прочих! Ну и не в последнюю очередь благодаря своей популярности, Python имеет огромную экосистему библиотек, фреймворков и инструментов которые упростят работу и расширят ваши возможности при написании кода. Для примера можно назвать популярные Tensorflow и PyTorch для машинного обучения, Django и Flask для веб приложений, Pandas для дата сайенса, Selenium для тестирования и NumPy для сложных вычислений. А для установки всех этих дополнительных крутых штук используется специальный менеджер пакетов, котороый называетися pip. Кстати, у нас есть курс по Python с нуля! Пройди бесплатный вводный урок, в котором ты напишешь свою первую программу, да еще и с графическим интерфейсом, после чего сможешь ее показывать всем вокруг и говорить “знаете, я и сам в каком-то роде тоже пайтон разработчик”
img
При настройке телефонной маршрутизации очень часто возникает необходимость изменения (корректировки) телефонных номеров, как набираемого (Б-номер), так и инициатора вызова (А-номер, АОН). Например, абоненты вашей станции набирают междугородние/федеральные номера через префикс "8", а вышестоящему оператору связи необходимо передавать номер без префикса, в десятизначном формате. Или вызовы на вашу станцию приходят с кодом зоны, а внутри станции используются номера в 6 или 7 знаков, и лишние символы необходимо удалить. Для корректировки номеров в SoftX3000 существует множество инструментов, применяемые в зависимости от конкретных случаев. Рассмотрим некоторые из них. Таблица корректировки символов DNC Для любых операций с изменением номера используются правила таблицы DNC. Эти правила используются для непосредственной корректировки символов, а все прочие команды определяют, в отношении какого поля (А-номер или Б-номер), на каком направлении (входящее/исходящее) и на какой транк-группе будет применено это правило. Для добавления правила в эту таблицу используется команда ADD DNC. Назначение атрибутов и применение этой команды: Number change index порядковый номер правила. Используется для идентификации правила Number change type тип преобразования номера, принимает значения: NONE номер не изменяется. Используется, если нужно изменить только тип номера MOD изменение цифр номера DEL удаление цифр из номера, указываем позицию, начиная с которой удаляются цифры (Change location) и количество цифр (Change length) INS добавление цифр в номер, указываем позицию, куда вставляем цифры (Change location) и сами цифры (New number) RPL замена цифр в номере, указываем позицию, с которой начинаются цифры для замены (Change location) и сами цифры (New number) Change location позиция цифр, которые подлежат корректировке. Nature of address indicator тип номера, принимает значения: NONE тип номера не изменяется IDN международный номер NDN национальный номер UDN местный номер UNN неизвестный номер SDN специальный номер New number добавляемые (изменяемые) цифры. Для наглядности приведем реальные примеры таких правил: В таблице выше: Правило №2 изменяет первый символ в номере (Change location 0) на цифру 8 (New number). Правило №4 удаляет первые (Change location 0) два символа (Change length - 2) в номере и преобразует тип номера в международный. Правило №9 заменяет первые (Change location 0) шесть символов (Change length - 6) на номер 29xxxx. В системе можно создать 65535 правил, правило под №0 системное, изменению не подлежит. Изменение А и Б номеров на исходящем направлении Для корректировки номеров вызовах в исходящих направлениях используется две таблицы: TGLD здесь компонуются правила для А и Б номера. TGLDIDX указывает транк, в отношении которого применяется правило TGLD и условия, при которых оно применяется. При добавлении записи командой ADD TGLD, необходимо задать следующие обязательные параметры: Bearer index номер правила по порядку. Этот номер будет использоваться для идентификации в таблице TGLDIDX. Trunk seizure point минимальная длина набираемого номера. Caller sending change index правило из таблицы DNC, которое будет применено к А-номеру. Callee sending change index правило из таблицы DNC, применяемое к Б-номеру. Примеры записей TGLD: Здесь запись TGLD=1 изменяет А-номер по правилу DNC=3 и Б-номер по правилу DNC=12. Далее, необходимо привязать созданное правила TGLD к транкам. Для этого используем команду ADD TGLDIDX: Указываем следующие параметры: Trunk group number номер транка, к которому применяется данное правило. Call source code callsource источника вызова, по которому срабатывает правило. Если код отличается, правило не применится. Чтобы применить правило ко всем callsrc, необходимо указать 65534. Local DN set код Local DN set, к которому принадлежат номера/транки, совершающие вызов. Call prefix префикс, при наборе которого срабатывает правило. Bearer index номер правила из таблицы TGLD, которое было создано предыдущей командой. Пример: Рассмотрим правила, применяемые к транку №7 (столбец Trunk group number): Для вызовов с callsource=5 при наборе "8" будет применено правило TGLD=2. Для вызовов с любых прочих callsource при наборе 8 будет применено правило TGLD=17. Для вызовов с любых callsource при наборе 810 будет применено правило TGLD=1. Изменение А и Б номеров на входящем направлении Для изменения атрибутов вызова во входящем направлении применительно ко всем входящим вызовам с определенным callsrc (это может быть группа транков или группа абонентов, объединённых этим параметром), используется таблица PFXPRO. Рассмотрим назначение параметров команды ADD PFXPRO сразу на примере: Параметры имеют следующее назначение: Call source code = 0 правило будет применяться к входящим вызовам с callsrc=0 и только к ним. Call prefix = 871229 правило применяется, если Б-номер начинается с этого префикса (871229). Local DN set = 0 набор номера должен производится с транка или абонента, привязанного к Local DN set = 0. Следует отметить, что вышеуказанный префикс (871229) должен присутствовать в таблице CNACLD с любым атрибутом в указанном Local DN set. Called number change flag = true означает, что Б-номер подлежит изменению. Called number change index = 1 Б-номер будет изменен по правилу DNC=1, которое, для наглядности, приведено ниже: Согласно данному правилу, из номера Б будут удалены первые 4 символа. Reanalysis = true после всех изменений вызов снова будет обработан как вновь поступивший и смаршрутизирован согласно новым параметрам А и Б номеров. Таким образом, вызов, поступивший с атрибутом callsrc=0, в котором Б-номер соответствует шаблону 871229хххх, вновь поступит на обработку, но уже с Б-номером 29хххх, то есть будет вызван 6-значный номер внутреннего абонента станции. Таблица PFXPRO так же позволяет корректировать и А-номер (поля Caller number change flag и Caller number change index), назначить новое значение источника вызова (New call source code) и изменять некоторые другие поля. В нашей станции данная таблица используется в нескольких целях: Приведение Б-номеров по входящему направлению к виду, который мы можем маршрутизировать, то есть: от операторов связи приходит вызов на номер 871229xxxx, а номера абонентов нашей станции 29xxxx, соответственно, нам нужно отрезать первые 4 символа, чтобы распознать нашего абонента. Номера некоторых экстренных служб имеют общий вид (6-значный городской номер), однако абонент набирает короткий номер службы (01, 02, 03). Нам нужно распознать такой набор и подменить номер на реальный. Кроме того, в зависимости от того, в какой местности расположен абонент, номера одной и той же службы могут быть разными. Для того, чтобы учесть этот аспект, мы и используем атрибут callsrc (назначаем каждому району свой callsrc и в соответствии с ним осуществляем подмену набранного номера). Изменение атрибутов вызова на входящем направлении на определенном транке Для корректировки атрибутов вызова на входящем транке используется таблица CLRDSN. Запись CLRDSN привязывается к определенному транку командой ADD TGDSG. В самой команде CLRDSN можно создать несколько правил корректировки, которые будут срабатывать в зависимости от А-номера: Для добавления правила даем команду ADD CLRDSN: Здесь заполняем следующие поля: Discrimination group number номер правила, по этому номеру выполняется привязка к транку в команде ADD TGDSG (в предыдущем примере, например, мы рассматривали параметры правила №5). Caller number номер вызывающего, то есть А-номер. Можем указать конкретный номер или начальный префикс (например, если указать 995, правило будет действовать на все вызовы, которые совершаются с номеров, начинающихся на 995). Есть возможность использовать так называемый символ "Wildcard", то есть применить к любым возможным номерам, для этого вводим символ "E". Префикс в данном поле должен быть таким же, как он приходит из транка. Например, если установить префикс 906, а из транка номер буден приходить 8906 или 7906 правило не сработает. Address nature тип А-номера. Позволяет ограничить применение правила только к А-номерам определенного типа, то есть, только для Unknown неизвестный International международный National междугородный Subscriber местный All все типы номеров Function code тип действия с вызовом. Выбираем ATT(Modify caller attribute), то есть изменение атрибутов А-номера. Call source code если установить значение, код callsource будет изменен. Если оставит пустым, будет установлен callsource = 0. (Однажды потратил полдня, пока не обнаружил эту особенность). Number change index правило DNC, которое будет применено к А-номеру. Если дать команду с тем же номером Discrimination group number, но другими параметрами, правило будет добавлено в ту же группу. Таким образом, мы добавим правила для разных номеров (или разных типов номеров) в одну группу и сможем привязать ее к транку. Как было сказано ранее, привязку правила CLRDSN к транку выполняется командой ADD TGDSG. Мы используем данную функцию для нескольких сценариев. Сценарий 1 Подмена номера от подключенной УПАТС. Например, имеем некоторую УПАТС, которая подключена к нашей станции. Мы выдали им номер из нашей емкости, которую они, в том числе, должны использовать в качестве А-номера (29хххх). Однако, по какой-то причине, в поле А-номера абонент присылает нам внутренние номера своей станции (101, 102 и т.д.). а) Добавим правило DNC, которое выполнит полную подмену номера на тот, который должен быть: б) Создадим правило, в котором применим правило DNC=15 (number change index = 15), ко всем входящим вызовам (number = E, Adress nature = All number): в) Привяжем правило CLRDSN=30 к транку №30 командой ADD TGDSG: Сценарий 2 Блокировка нежелательных вызовов с транка (например, для спам-звонков). Для блокировки вызовов в станции создан Local DNset с пустой таблицей маршрутизации (в таблице CNACLD нет никаких записей), и создан callsource (callsrc=4), привязанный к этому Local DNset. При совпадении А-номера с нежелательным, вызову назначается callsrc=4, тем самым вызов не сможет быть смаршрутизирован и будет отбит. Сценарий 3 Фильтрация входящих вызовов с транка. В данном случае, изначально присваиваем траку callsrc=4, тем самым, по-умолчанию, все входящие вызовы будут запрещены. Затем создаются правила CLRDSN с определенными условиями, при соблюдении которых входящий вызов может быть смаршрутизирован. При выполнении этих условий код callsrc заменяется на разрешенный и вызов проходит. Условиями для проверки обычно выступают префикс А-номера. Например, при входящих вызовах от сотового оператора все А-номера должны начинаться на с символа "9". При входящих вызовах с наших УПАТС А-номер должен начинаться с цифр "29" и т.д. Изменение атрибутов вызова по Б-номеру для внутренних абонентов Данная функция может использоваться для разных задач. Одна из них ограничение исходящих вызовов для определенного абонента на определенный номер. В нашем примере это будут исходящие вызовы на префикс 810, то есть международные вызовы (эту задачу можно решить и другими способами). Используем команду ADD CNACLR: Здесь выделим следующие параметры: Call source code код callsrc, к которому принадлежит номер. Call prefix префикс, при наборе которого срабатывает правило. Caller number номер телефона абонента, к которому применяется правило. Здесь так же применимо выражение wildcard, то есть применить правило к любому номеру, установив символ "E". Function code тип обработки вызова. В данном случае используем изменение Б-номера, выбрав Modify caller attribute. Caller number change index правило DNC, которое применяется к А-номеру. Called number change index правило DNC, которое применяется к Б-номеру. Reanalysis flag = true устанавливаем данный флаг для повторной обработки вызова в таблице маршрутизации с новыми параметрами. Приведенное правило используется в следующем сценарии. В организации приобретен номер 8-800, вызовы на которые переадресуются на локальный номер станции 29хххх. При помощи данного правила мы можем обнаружить набор этого номера 8800 локальными абонентами и подменить его на локальный номер назначения внутри станции, тем самым избежав тарификации этих вызовов на платформе 8800, а так же снизив внешний трафик. Применение данных функций и команд не ограничивается приведенными сценариями, и ограничено только фантазией и лицензиями оборудования. Версия станции Huawei SoftX3000 V300R600, но команды будут применимы на более свежих версиях, а принцип их применения такой же.
img
OpenVZ и LXD позволяют вам запустить полноценную операционную систему внутри контейнера, не сильно отличающиеся друг от друга. Но является ли одна системная платформа лучше другой? Вот сравнение OpenVZ и LXD. Обе платформы представляют собой “системные контейнеры”, предназначенные для размещения готовых клиентских операционных систем без необходимости эмуляции в стиле VMware. Системные контейнерные платформы отличаются от контейнеров Docker тем, что Docker предназначен в первую очередь для размещения отдельных приложений внутри контейнеров. Основным преимуществом OpenVZ и LXD является то, что они предоставляют более легкое решение для запуска клиентских операционных систем, чем VMware, KVM или других платформ виртуализации. С точки зрения качества, оба работают одинаково. OpenVZ против LXD Но есть некоторые важные характеристики, которые разделяют эти две платформы. Детали, характерные для OpenVZ, включают в себя: Она существует с середины 2000-х годов, и это уже устоявшаяся технология. Поддерживает все основные дистрибутивы Linux. Вам не нужно использовать определенный дистрибутив, чтобы использовать OpenVZ. Для его установки требуется специальное ядро. Это может быть проблемой, если Вам необходимы специальные функции в Вашем ядре, которые не встроены в пакеты ядра, предоставляемые OpenVZ. Коммерческая поддержка доступна от Virtuozzo, основной компании, занимающейся разработкой OpenVZ. Вы вряд ли найдете варианты коммерческой поддержки в другом месте. Доступ к физическому оборудованию из контейнера по умолчанию отключен при использовании OpenVZ. Это означает, если Вам необходимо, чтобы приложение внутри Вашей контейнерной клиентской операционной системы имело доступ к такому устройству, как видеокарта, Вам придется настроить доступ вручную (Это неудобство можно считать сильной стороной, поскольку ограничение доступа к оборудованию, возможно, является функцией безопасности.) А вот характерные особенности для LXD: Он основан на LXC, платформе контейнеризации Linux, которая существует с конца 2000-х годов. Однако сама LXD является новой технологией - её первый стабильный релиз состоялся весной 2016 года. В настоящее время он поддерживает только Ubuntu, дистрибутив Linux от Canonical. Он не требует специального ядра; Вы можете использовать стандартное ядро Ubuntu с LXD. Canonical заявляет, что предлагает коммерческую поддержку LXD, но для этого, во всей видимости, требуется оплатить план поддержки всей системы Ubuntu. Выбор между OpenVZ и LXD Какая из этих системных контейнерных платформ лучше всего подходит? Конечно, Вы можете начать с чего угодно. Но в целом LXD, вероятно, является лучшим решением, если Вы уже используете Ubuntu для размещения своих рабочих нагрузок или можете легко переключиться на него. В противном случае, поскольку LXD не работает на других дистрибутивах Linux, OpenVZ будет единственным вариантом, если Вы подключены к другой операционной системе. Я предполагаю, что, поскольку LXD пользуется сильной поддержкой со стороны Canonical, он будет продолжать развиваться и в конечном итоге поддерживать другие дистрибутивы. Когда это произойдет, это может быть лучшим выбором в целом, поскольку на него не распространяются некоторые ограничения OpenVZ, такие как требование установки специального ядра. Но до тех пор OpenVZ явно имеет большую ценность в качестве решения для запуска системных контейнеров на дистрибутивах, отличных от Ubuntu.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59