По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
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
Многим приложениям нужно обмениваться данными между клиентом и сервером. Долгое время эталонным форматом данных для обмена информацией между двумя объектами считался 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
Год назад компания OpenAI выпустила свой блокбастер — чат-бота ChatGPT. Сотни миллионов людей экспериментировали с этим инструментом, и мы видим, что он уже поменял представление о том, как будет выглядеть и восприниматься интернет для пользователей. Сейчас ChatGPT больше не единственный инструмент для диалогового ИИ. У него есть серьезная конкуренция со стороны нескольких инструментов, например, Claude. Среди его отличий от ChatGPT — поддержка API, то есть бот можно встроить в экосистему бизнеса. Claude AI, разработанный исследователями из Anthropic, представляет собой альтернативу ChatGPT, которая генерирует текстовые ответы на диалог. В этой статье мы рассмотрим некоторые интересные возможности ChatGPT и покажем, какую пользу он может принести вам, вашей работе и бизнесу. Что умеет ChatGPT? Обратите внимание на то, что ИИ не обладает собственными знаниями — его работа основана на анализе большого объема текстовых данных. Бот же старается предоставить информацию и помощь на основе этого обучения, например: ответы на вопросы: вы можете спрашивать его о фактах, концепциях, истории и т.д. Составление текста: он поможет написать статьи, эссе, письма, посты. Обучение: если у вас есть вопросы, связанные с изучением новых тем, он найдет и предоставит вам нужную информацию. Перевод: ИИ поможет с переводом текста с одного языка на другой. Генерация идей: если вам нужны идеи для проекта, исследования или творчества, он предложит варианты. Просто поговорить: вы можете пообщаться с чат-ботом на любые темы. Написание кода: ИИ поможет с вопросами по программированию, предоставит фрагменты кода или объяснения алгоритмов. В целом, AI-боты умеют много чего интересного: от поиска идей для украшений, планирования вечеринок, и до более полезных преимуществ, таких как помощь в программировании. Что может сделать нейросеть действительно хорошим помощником? Вы, а точнее, хорошие промты. Они несколько отличаются от привычных нам запросов для поисковых систем: давайте разберемся, как они выглядят. Как правильно написать промт для чат-бота? Лайфхаки для ChatGPT Промты играют решающую роль в том, какой результат вы получите от языковой модели. Промты — это то, что направляет ИИ в генерации ответа для пользователя. Давайте разберемся пошагово в том, что важно для написания хорошего запроса для языковой модели. 1. Определите контекст разговора Чтобы успешно задействовать чат-бота, ваш запрос должен четко отражать контекст текущей ситуации. Например, почувствуйте разницу между запросами: «Напиши письмо с благодарностью для моего преподавателя» и «Напиши письмо от моего имени на 1000 символов о том, как мне понравилось учиться у моего преподавателя, как я усвоил основы программирования и нашел интересную работу благодаря ему». 2. Будьте максимально конкретны Стремитесь писать свой запрос максимально четко и конкретно. Расплывчатые или двусмысленные обращения могут привести к тому, что бот начнет «изобретать велосипед» или просто выдаст результат, который не соответствует вашим ожиданиям. 3. Пишите запросы по очереди Если вы используете ИИ-бот для выполнения какой-либо задачи, например, написания фрагмента текста или исследования темы, вы можете вписывать свои запросы по очереди. Таким образом, вместо того, чтобы запрашивать все сразу, вы можете создать диалог, основанный на предыдущем ответе бота. Таким образом вы сможете вести разговор до тех пор, пока не достигнете желаемого результата. 4. Используйте персонализацию Пользовательский контекст сделает выдачу бота более актуальной. Вписывайте в свой запрос имена, которые должны фигурировать в ответе, местоположение, время или что-то еще, что имеет отношение к контексту. 5. Приводите примеры Главная фишка любой нейросети — в ее способности к обучению, не зря существует такая должность, как промт-инженер. Добавляйте примеры в начало диалога, чтобы машина строила свои ответы на основе того, что вам нужно — это поможет ей более четко понять ваши ожидания. Создание промтов для чат-бота GPT — это процесс, требующий нескольких итераций. Советуем экспериментировать с различными формулировками, чтобы понять, что лучше всего подходит для ваших целей. Проверяйте свои запросы по ходу дела и наблюдайте, как на них реагирует чат-бот. Затем вы можете проанализировать полученный результат и соответствующим образом уточнить подсказки. Чем чаще вы повторяете этот процесс, тем лучшего результата достигнет ваш чат-бот и тем лучше вы научитесь писать эффективные запросы. Лайфхаки для написания эффективного промта Вы можете потренироваться в написании хороших промтов самостоятельно, а можете изучить зарубежные источники: например, ресурс Great Prompts с исчерпывающей информацией о запросах для ИИ. Вот несколько примеров фраз, которые можно использовать для генерации промта в различных контекстах. Для написания кода: «напиши программу, которая...», «создай код для решения задачи...», «пример кода на [язык программирования] для...». Для получения текстового описания: «расскажи о принципах работы...», «сформулируй ответ на вопрос...», «опиши процесс...». Для конкретизации запроса: «дай подробное объяснение по теме...», «как работает...?», «поясни, что такое...». Для тренировки навыков: «подскажи примеры использования...», «какие существуют методы для...», «помоги мне разобраться в...». Для генерации идей: «предложи варианты для...», «какие идеи есть по теме...», «как можно улучшить/изменить...». Для формирования мнения: «как ты относишься к...», «какие преимущества и недостатки...», «сравни... и ... и дай свой вывод». Чем более конкретный и четкий запрос вы дали, тем вероятнее, что модель предоставит вам нужную информацию. Экспериментируйте с разными формулировками, чтобы найти лучший способ взаимодействия с ботом. Как использовать ИИ в программировании? Если вы хотите повысить эффективность написания кода, ChatGPT может оказаться именно тем инструментом, который вам нужен. Вот почему: скорость и эффективность: ChatGPT может быстро генерировать фрагменты кода, сокращая время и усилия, которые тратятся на ручное программирование. Помощь в сложных задачах: он поможет в решении сложных задач по программированию — а вы можете сосредоточиться на стратегических задачах вашего проекта. Снижение количества багов: ChatGPT дает дополнительный код-ревью, а это значит, он может свести к минимуму ошибки в вашем коде. ChatGPT был обучен на огромном объеме данных, которые включали в себя и код из множества языков программирования. В результате он может помочь в программировании на различных языках: Python, JavaScript, Java, C++, C#, Ruby, Swift , R. Это всего лишь примеры — ChatGPT может обрабатывать запросы, включающие и другие языки программирования. Как языковая модель поможет вам писать код Прежде, чем мы разберемся, как ИИ поможет вам с написанием кода, определитесь, что должна делать ваша программа в конечном результате? Представьте, что вы платите за работу программисту, которого видите впервые. Даете ли вы этому человеку достаточно информации, чтобы он мог работать над вашим заданием? Или же ваши формулировки слишком расплывчаты, и человек, которого вы наняли, с большей вероятностью начнет задавать уточняющие вопросы или выдавать результат, который вас не устраивает? Итак, если вы представили перед собой талантливого программиста, работающего только по четкому ТЗ, переходим к тому, с чем вы можете к нему обратиться: Помощь с синтаксисом: если у вас возникли вопросы по синтаксису определенного языка программирования, вы можете получить полезную информацию. Генерация кода: опишите задачу или конкретную проблему, с которой вы сталкиваетесь. Бот предложит фрагменты кода или примеры, которые могут помогут вам в решении. Объяснение алгоритмов: бот предоставит объяснения и примеры, если у вас есть вопросы по поводу определенного алгоритма или концепции программирования. Тестирование кода: если у вас есть кусок кода, который вы хотели бы протестировать, вы можете поделиться им чат-ботом, и он поможет выявить возможные ошибки или предложить улучшения. С чем ИИ не работает или работает неправильно? Разумеется, любой искусственный интеллект — это не панацея и точно не тот инструмент, который сделает все за вас. Вот несколько слабых сторон ИИ, о которых стоит помнить: Отсутствие понимания контекста. ИИ, в том числе и модели на основе GPT-3.5, не всегда способен понимать контекст в том же смысле, в каком его понимает человек. Модели могут давать ответы, которые кажутся логичными, но они основываются на шаблонах и не всегда отражают объективную реальность. Отсутствие эмоционального интеллекта. Разумеется, ИИ не способен распознавать и понимать эмоции человека так, как это делают люди. В общении с ИИ может отсутствовать эмоциональная составляющая и понимание контекста, связанного именно с эмоциями. Неопределенность и недостаток критического мышления. ИИ может давать ответы даже на те вопросы, на которые нет однозначного ответа. Бот полагается на данные, на которых он обучен. Если эти данные предвзяты, неполны или ошибочны, то и результаты работы ИИ могут быть ложными. Беспристрастность и бездушность. ИИ лишен собственных убеждений и чувств. Это означает, что он может предоставлять информацию или выполнять задачи без учета моральных, этических или социальных аспектов. «С эмпатией все понятно, а могу ли я доверять коду, который пишет ИИ?», — спросите вы первым делом. Скорее нет, чем да. Но вы также не можете быть уверенными в коде, который пишут программисты-люди. Прежде чем брать конечный результат в работу, вам нужно провести серию тестов. Правда ли, что ИИ может заменить человека в работе? Первый вопрос, который задает каждый, кто познакомился с возможностями нейросетей — «заменит ли искусственный интеллект человека?» Боты на основе ИИ не заменят сотрудника с его аналитическими данными, эмпатией и пониманием отдельных деталей его професси. Но нейросеть точно подойдет для продуктивного сотрудничества и улучшения перфоманса! Автоматизация рутинной работы может освободить вам время для творческих и стратегических задач. Поэтому вакансии становятся более технологически ориентированными, требуя от сотрудников навыков в области взаимодействия с ИИ. Растет спрос на специалистов, способных обслуживать, программировать и развивать технологии искусственного интеллекта. Важно осознавать, что ИИ ограничен своим программным кодом и данными, на которых он обучен. Так что в областях, требующих творческого мышления, софт-скиллов и этических решений, человек остается попросту незаменимым.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59