По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Сегодня подробно расскажем как найти практическое применение знаниям, полученным в статье про структуру asteriskcdrdb, а именно, как сделать ежедневные отчеты о входящих звонках на почту. Создание скрипта Чтобы наш .php скрипт смог подключиться к базе данных, необходимо создать пользователя, с правами, которые буду позволять ему извлекать необходимую информацию. Для этого, подключимся к нашему серверу по SSH [root@asterisk]# mysql mysql>CREATE USER ' user'@'localhost' IDENTIFIED BY 'P@ssw0rd'; На данном этапе мы создали пользователя user с паролем P@ssw0rd. Далее дадим ему необходимые права: mysql> GRANT SELECT ON asteriskcdrdb.cdr TO 'user' Создадим файл с расширением .php, в котором мы отразим подключение к нашей базе данных. Запишем эту конструкцию так: $hostname = "localhost"; //адрес хоста. Скрипт мы будем запускать на той же машине, на которой находится БД asteriskcdrdb; $username = "user"; //отражаем пользователя $password = "P@ssw0rd"; //пароль для созданного нами пользователя $dbName = "asteriskcdrdb"; //база данных, в которой хранятся необходимые нам данные $today = date('y-m-d'); // сегодняшняя дата в формате 2016-03-25 $counter = 1; // счетчик mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); // соединиться к БД mysql_select_db($dbName) or die(mysql_error()); //выбрать базу данных. Если произойдет ошибка - вывести ее $headers = "; charset=windows-1251 "; //заголовок для письма $headers .= "From: Мерион Нетворкс <info@merionet.ru> "; $headers .= "Reply-To: info@merionet.ru "; Предположим, что все входящие звонки приходят на номер секретаря – 100. Так же мы знаем, что при звонке из города, мы видим номер звонящего, который содержит в себе больше 3 символов (пусть у нас используется трехзначная внутренняя нумерация). Наша задача сводится к формулировке запроса к таблице cdr. Добавляем к нашему .php файлу: $query = "SELECT `dst` , `src` , `duration` , `dstchannel` , `calldate` , `disposition` FROM `cdr` WHERE `calldate` >='$today 00:00:00' AND `calldate` <='$today 23:59:59' AND LENGTH( `src` ) >3 AND `dst` = '100';" ; $res=mysql_query($query) or die(mysql_error()); // Выполнить запрос. Если произойдет ошибка - вывести ее. $number = mysql_num_rows($res); // Как много нашлось строк У нас почти все готово. Осталось только обработать данные на выходе. Для этого, нам понадобится следующая конструкция: //формируем шапку нашей таблицы со значениями $mes .= ' table style="max-width: 575px;border-bottom:none; margin: 0 auto;border-spacing: inherit;"> thead> tr style="border-bottom: 2px solid #05477c;"> th style="padding:10px; color: #fff; max-width: 150px;background:#05477c;">Порядковый номер</th> th style="padding:10px; color: #fff; max-width: 150px;background:#05477c;">Дата</th> th style="padding:10px; color: #fff; max-width: 100px;background:#05477c;">От кого</th> th style="padding:10px; color: #fff; max-width: 45px;background:#05477c;">Кому</th> th style="padding:10px; color: #fff; max-width: 45px;background:#05477c;">Статус звонка</th> /tr> /thead>'; //перебираем значения ассоциативного массива. Число элементов данного массива равно числу строк на выходе sql запроса while ($row=mysql_fetch_array($res)) { $mes .= ' tbody> tr style="width: 100px;"> td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;">'.$counter.'</td> td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;min-width: 100px;">'. $row['calldate'].'</td> td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;min-width: 100px;">'. $row['src'].'</td> td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;">'.$row['dst'].'</td> td style="padding:10px; text-align:center; border-bottom: 1px solid #eee; min-width: 120px; ">'.$row['disposition'].'</td> /tr>'; $counter = $counter + 1; } Теперь, мы храним в переменной $mes html таблицу, которая готова к отправке на почту. Добавим в конец скрипта: mail("info@merionet.ru", 'Все входящие за '.$today.'', $mes, $headers); ВАЖНО! Если вы используете кириллические символы, установите кодировку .php файла на Кириллицу (windows-1251) Итак, готово. Давайте посмотрим что приходит нам на почту: Работает. Давайте сделаем ежедневное задание на отработку этого скрипта через cron. Сделаем, например, ежедневно, в 17:30, когда рабочий день подходит к концу: 30 17 * * * php /home/admin/mail_report.php Не забудьте в начала скрипта поставить открывающий тэг php, а в конце скрипта закрывающий.
img
Сразу к делу. На рисунке 1 показана базовая конфигурация STP (Spanning Tree Protocol). Рис. 1 Базовая конфигурация STP По умолчанию функция STP коммутатора включена. Если STP отключен, используйте команду stp enable в системном режиме, чтобы включить STP. # На S1 установите режим работы связующего дерева на STP. Используйте режим stp {mstp | rstp | stp}, с помощью которой вы можете установить режим MSTP, RSTP или STP. По умолчанию установлен режим MSTP. <Quidway> system-view [Quidway] sysname S1 [S1] stp mode stp # На S2 установите режим работы связующего дерева на STP. <Quidway> system-view [Quidway] sysname S2 [S2] stp mode stp # На S3 установите режим работы связующего дерева на STP. <Quidway> system-view [Quidway] sysname S3 [S3] stp mode stp # На S4 установите режим работы связующего дерева на STP. <Quidway> system-view [Quidway] sysname S4 [S4] stp mode stp Даже если STP автоматически выберет корневой мост, мы сначала назначим коммутатор ближе к центру сети. Структура сети показана на рис. 1 простая: S1 и S2 подключены через Интернет, а основные коммутаторы, S3 и S4, являются коммутаторами доступа. Мы можем изменить приоритет моста S1, чтобы гарантировать, что S1 будет выбран в качестве корневого моста. Команда stp priority priority используется для установки приоритета моста устройства; значение приоритета колеблется от 0 до 61440 с шагом 4096. Значение по умолчанию-32 768. Чем меньше приоритет, тем больше вероятность того, что устройство будет выбрано в качестве корневого моста. Вы также можете использовать команду stp root primary для обозначения S1 в качестве корневого моста. После выполнения команды на устройстве значение приоритета моста устройства автоматически устанавливается равным 0. Приоритет моста устройства не может быть изменен после этого с помощью команды stp priority priority. [S1] stp root primary Затем мы назначим S2 вторичным корневым мостом, чтобы S2 заменил S1 в качестве нового корневого моста в случае сбоя. После запуска на устройстве команды stp root secondary значение приоритета моста устройства автоматически устанавливается на 4096 и не может быть изменено после этого с помощью команды stp priority priority. [S2] stp root secondary На этом базовая конфигурация STP сети завершена. Чтобы проверить состояние и статистику дерева SPT, вы можете запустить display stp [interface interface-type interface-number] [brief] На S1 используйте команду display stp brief для отображения основной информации STP. В выводимых данных видно, что, поскольку S1 является корневым мостом, GE0 / 0/2 и GE0 / 0/1 S1 являются назначенными портами в состоянии normal forwarding. Следующий вывод - это основная информация STP S4. Интерфейс GE0/0/2 коммутатора S4 является корневым портом в состоянии normal forwarding. Однако его порт GE0/0/1 является альтернативным портом в состоянии блокировки.
img
В данной статье будет проведена кластеризация заранее подготовленного корпуса текстов. Он получен в результате работы программы-краулера, собиравшего новостные статьи с сайта arstechnica.com, присваивая каждому собранному тексту тему, к которой он был приписан на сайте. В ходе работы будет проведена кластеризация собранных текстов и визуализированы ключевые слова и максимально близкие к ним по смыслу на основании алгоритма word2vec. Наработки, освещенные в данной работе, могут быть использованы в беспрерывном анализе сайтов по поступающим адресам с целью автоматизации поиска данных по каким-либо критериям. Теория Лемматизация – это процесс преобразования слова в его базовую форму, которая учитывает контекст (в отличие от стемминга (stemming), который находит основу слова, не учитывая контекст). Wordnet – это большая лексическая база данных английского языка для установления структурированных семантических отношений между словами. Библиотека предлагает возможности лемматизации. Word2vec — это инструмент для расчета векторных представлений слов, который реализует основные архитектуры — Continuous Bag of Words (CBOW) и Skip-gram. Суть в том, что на вход подается текст, а на выходе мы получаем набор векторов слов. Используется для нахождения связей между контекстами. CBOW и Skip-gram — нейросетевые архитектуры, которые описывают, как именно нейросеть «учится» на данных и «запоминает» представления слов. Принципы у обоих архитектур разные. Принцип работы CBOW — предсказывание слова при данном контексте, а skip-gram наоборот — предсказывается контекст при данном слове. Практическая часть Сначала нужно считать корпус из ранее подготовленного файла и вывести краткие сведения о нем, чтобы убедиться, что все верно: Убираем из текстов знаки препинания и слова, которые слишком часто применяются и часто не несут смысловой нагрузки (так называемые стоп-слова), а именно предлоги, артикли, частицы, часть местоимений и некоторые формы вспомогательных глаголов: После необходимо разбить корпус на две выборки: обучающую и тестовую. С помощью обучающей выборки предполагается обучить метод векторизации и кластеризатор, а с помощью тестовой – проверить результаты их работы. С помощью параметра test_size можно задать соотношение размеров выборок. Затем можно приступить к векторизации текстов выборок. Количество признаков установлено на 500 и после этого сделано усреднение длин векторов. Обучив векторизатор, можно посмотреть наиболее близкие по контексту слова. Эта функция будет использована далее для визуализации Wordcloud. Для визуализации результатов кластеризации нужно выделить 2 главных признака и вывести координаты точек, исходя из значений двух выделенных параметров. Наконец, можно приступить к визуализации облака слов. Оно строится на основании веса каждого слова в корпусе. А так как в качестве корпуса подается топ-100 слов, семантически близких к слову car, то данное облако полностью состоит из слов, близких к car по мнению word2vec. Заключение В заключение нужно отметить, что, хотя данная кластеризация прошла относительно успешно, что видно из приведенных метрик и общему виду кластеров (их можно легко отделить друг от друга, в общей своей массе каждый из них имеет крайне малое количество своих представителей на территории другого кластера), все же можно подобрать лучшие параметры. Также повышению качества будет способствовать увеличение размеров корпуса и ручная доработка корпуса стоп-слов и пунктуации, хотя стоит отметить, что они и в стандартном виде работают достаточно эффективно для столь небольшой обучающей выборки (5952 текста о 5 разных, иногда пересекающихся, темах).
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59