По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В данной статье рассмотрим процесс настройки интеграции ip-телефонии Asterisk и CRM Битрикс24 посредством модуля интеграции Itgrix (ранее называлось bx24asterisk). Перечислим возможности которые станут доступны после настройки данной интеграции: В момент вызова открывается карточка клиента с именем и информацией о текущих сделках с этим клиентом. Автоматически создается лид для неизвестного номера. Для лида или контакта в CRM создается дело (оно же звонок), в нем можно прослушать запись разговора и увидеть его длительность. Можно указать разные источники лидов для сквозной аналитики, в зависимости от того на какой из номеров телефона вам позвонили. Автоматическое направление входящих вызовов на ответственного за клиента сотрудника. Модуль состоит из двух частей: портальное приложение и серверное приложение, которое нужно установить на сервер с Asterisk. Установка приложения в Битрикс Заходим в меню Приложения, в поиске набираем Астериск, находим приложение Интеграция с Asterisk от компании Айтигро. Кликаем по названию приложения, нажимаем Попробовать, соглашаемся с лицензионным соглашением и политикой конфиденциальности и нажимаем Установить. После установки появится окно входа в настройки модуля, пока закроем его, ведь у нас еще нет серверной части приложения. Заходим в Приложения - переходим на вкладку Установленные, находим там приложение Интеграция с Asterisk, нажимаем на кнопку Права доступа, выбираем раздел Другое, добавляем роль Все авторизованные пользователи, нажимаем Выбрать. Установка приложения на сервер Asterisk. Заходим на сервер по ssh, скачиваем скрипт установки модуля интеграции wget 'https://bx24asterisk.ru/download/autoinstaller.sh' Запускаем скрипт командой: bash autoinstaller.sh Cкрипт сам определит разрядность системы и установит подходящую версию. В конце установки нужно будет ввести логин и пароль для дальнейшего входа в web интерфейс с настройками модуля. Дальнейшую установку можно производить из web интерфейса доступного по адресу https://ipasterisk:8078/config/master При входе в web интерфейс нужно ввести логин и пароль который мы указали при установке приложения на сервер. Выбираем язык Данные для подключения к базе данных модуль найдет и подставит сам, нажимаем проверить Warning в графе CEL означает что в таблицу CEL больше часа не записывались события звонков, такое может быть либо, если запись вCEL не осуществляется Asterisk’ом и нужно это настроить, либо просто давно не было звонков. Далее подключаемся к Asterisk. Выбираем существующего пользователя либо создаем Нового. Через него модуль будет взаимодействовать с AMI Asterisk’а. Для нового - вводим пароль для пользователя bx24, модуль сам создаст пользователя. Проверяем. Указываем где и в каком формате хранятся файлы записей Указываем данные для подключения к порталу Битрикс24. Учетная запись должна обладать правами администратора в портале, через нее модуль будет работать с Битрикс24. Проверяем. Далее описываем часть логики в Битрикс24 Указываем параметры логики CRM. В зависимости от того, в каком режиме у Вас работает CRM (с лидами или без). Указываем как будем осуществлять звонки кликами по номеру в CRM: Использовать Click2call сервер - команды для звонков будут передаваться на модуль через сервер разработчика; Либо можно указать внешний ip адрес Asterisk (адрес роутера, за которым находится Asterisk) и пробросить порт 8077 до сервера с Asterisk. Команда из Битрикса на будет передавать на этот порт и обрабатываться модулем. Сохраняем. Попадаем на страницу с результатами всех проверок Другая часть бизнес-логики В результате должно получиться вот так: при входящем или исходящем звонке показывается карточка звонка: После завершения звонка в лиде создается звонок. При пропущенном входящем звонке создается задача.
img
Новый менеджер пакетов Windows от Microsoft упрощает установку приложений, позволяя это делать одной командой. В этой статье рассказываем про Windows Package Manager и новую команду winget. Что такое менеджер пакетов Windows? Менеджеры пакетов распространены в Linux. Вместо того, чтобы искать приложение в Интернете, загрузить установщик и запускать мастер установки, вы можете просто запустить быструю команду для поиска и установки приложения по его имени. Например, чтобы установить Microsoft PowerToys, вы можете открыть окно терминала и ввести winget install powertoys. Команда автоматически найдет, загрузит и установит программное обеспечение без каких-либо дополнительных действий с вашей стороны. Это так просто. Под капотом Microsoft размещает собственный репозиторий программного обеспечения, а другие организации и частные лица могут размещать свои собственные репозитории. Это важная функция, которая повышает производительность в Linux, особенно для разработчиков и системных администраторов. Менеджер пакетов Windows - это проект с открытым исходным кодом, доступный и на GitHub. Как установить менеджер пакетов Windows Начиная с 19 мая 2020 года менеджер пакетов Windows доступен в форме предварительного просмотра. Позднее он будет интегрирован непосредственно в обновление для Windows 10. Сейчас есть несколько способов получить его: Установите инсайдерскую сборку Windows 10, зарегистрируйтесь в программе инсайдеров Windows Package Manager и установите обновление для пакета установщика приложений из Магазина Microsoft. Вы получите автоматические обновления диспетчера пакетов Windows по мере их выпуска, но вам придется запустить нестабильную версию Windows 10. Загрузите менеджер пакетов Windows .appxbundle с GitHub. Установите его, дважды щелкнув файл и нажав Update. Вы должны будете установить будущие обновления вручную с этой же страницы загрузки, но вам не придется запускать нестабильную версию Windows 10. В будущем в этом нет необходимости, и winget будет встроен во все стабильные версии Windows 10. По состоянию на май 2020 года он находится в форме предварительного просмотра, так как Microsoft тестирует его и устраняет ошибки. Как использовать winget, менеджер пакетов Windows Вы можете запустить winget из Windows PowerShell или из классической командной строки. Мы рекомендуем установить новый терминал Windows, если вы этого еще не сделали. Вы можете скачать Windows Terminal из Магазина Microsoft. Вы даже можете получить исходный код на GitHub. Да, новый терминал Windows с открытым исходным кодом. Из командной строки выполните команду winget, чтобы просмотреть дополнительную информацию об использовании инструмента. Чтобы найти приложение, выполните следующую команду, заменив name поисковой фразой: winget search name Чтобы установить приложение, выполните следующую команду, заменив name на имя приложения: winget install name Для просмотра дополнительной информации о приложении выполните следующую команду, заменив name именем приложения или поисковой фразой: winget show name Чтобы просмотреть полный список доступных приложений, выполните следующую команду: winget install В своем первоначальном выпуске репозитории winget уже заполнены широким спектром популярных настольных приложений. Вы найдете все, от обычных приложений для настольных систем Windows до инструментов для разработчиков. Список включает в себя Google Chrome, Mozilla Firefox, Zoom, Steam, медиаплеер VLC, Spotify, терминал Windows, код Visual Studio, Ruby, Microsoft PowerToys и многие другие. Чтобы управлять источниками, запустите winget source. Вы увидите список команд. Например, чтобы просмотреть текущие источники, запустите: winget source list В первоначальной версии winget есть только встроенный исходный код winget, управляемый Microsoft, расположенный по адресу https://winget.azureedge.net/cache. В будущем вы сможете добавлять сторонние источники с помощью дополнения winget source. Вы можете увидеть больше информации о том, как использовать одну из встроенных команд winget, добавив -? к нему. Например, чтобы увидеть различные опции, которые вы можете использовать с winget, выполните следующую команду: winget search -? Заключение Теперь вы знаете как работать с менеджером пакетов winget. Microsoft наверняка добавит дополнительные функции в диспетчер пакетов Windows в будущем, и он станет только более мощным. А другие статьи про Windows можно прочитать в нашем разделе.
img
Процесс анализа программного кода должен быть максимально автоматизирован. Когда вы создаете запрос на включение изменений, как минимум, вам нужно запустить модульные тесты и статический анализ программного кода в функциональной ветке. Средства автоматизации могут многое рассказать о качестве кода: метрики, покрытие кода модульными тестами, обнаружение дублированных строк и т.д. Однако есть как минимум 50 вещей, которые нельзя проверить автоматически. Они нуждаются во внимательном взгляде опытного проверяющего (это дает нам хоть какую-то надежду на то, что роботы не заменят разработчиков в ближайшем будущем). Требования Программный код реализует все функциональные требования, которые необходимы заказчику? Программный код удовлетворяет всем нефункциональным требованиям, таким как производительность и безопасность? Если нефункциональные требования не были упомянуты заказчиком, то этот вопрос необходимо уточнить у проектировщика или у самого заказчика.  Условия сопровождения Помещены ли все интерфейсы, классы и т.д. на соответствующий прикладной уровень в соответствии с архитектурой  Onion/Clean ? Не изобретаете ли вы колесо, когда пишете программный код? Можно ли его заменить чем-то, что уже существует и что предоставляет какая-либо сторонняя библиотека?  Есть ли уже реализованная логика или какие-то ее фрагменты в кодовой базе? Правильно ли была выбрана область жизненного цикла для интерфейса и реализации в контейнере внедрения зависимостей? Являются ли реализованные функции детерминированными (то есть всегда ли они выдают один и тот же результат для одних и тех же входных данных)? Все ли зависимости явно внедряются через конструктор типов? Есть ли сильная связанность между классами, которая может затруднить повторное использование кода? Используются ли  объекты-значения вместо элементарных типов данных для того, чтобы избежать проблемы одержимости элементарными типами? Соответствуют ли реализованные компоненты, такие как функции, классы, интерфейсы и модули,  принципу единственной обязанностей ? Расширяются ли существующие функциональные возможности при помощи декораторов, технологий аспектно-ориентированного программирования (принципа открытия-закрытия) или они модифицируются на месте? Правильно ли реализованы механизмы синхронизации потоков при доступе к объектам-одиночкам в веб-приложениях? Используются ли по возможности  неизменяемые типы данных вместо изменяемых для того, чтобы избежать побочных эффектов? Добавлена ли функция ведения журнала с верными  уровнями ведения протокола в основные места кода, которые требуют отслеживания? Производительность Правильно ли были выбраны  структуры данных ? Например, используется ли структура Hashtable вместо массива, когда нужно часто искать значения, для того, чтобы избежать линейного поиска? Распараллелены ли длительные операции между всеми доступными ядрами для того, чтобы использовать ресурсы компьютера максимально эффективного? Выполняет ли программный код большое количестве  операций по выделению памяти для объектов в куче, оказывая тем самым дополнительную нагрузку на программу сборки мусора? Кэшируются ли данные, которые были считаны из базы данных, локально или в удаленном кэше? Сколько раз текущий код обращается к базе данных? Возможно стоит получить все данные за одно или несколько обращений? Выполняет ли код все обращения к базе данных, ввод-вывод и другие блокирующие вызовы асинхронно? Использует ли код  пул потоков по максимуму вместо того, чтобы создавать новые потоки? Правильно ли выбран баланс между  нормализацией и  денормализацией при создании дополнительных таблиц базы данных? Правильно ли добавляются или исправляются индексы, если запрос на включение изменений содержит новые SQL-запросы? Возникает ли  проблема с N+1 запросами при извлечении данных из базы данных при помощи фреймворка ORM? Установлен ли правильный уровень изоляции транзакций в хранимых процедурах? Возвращают ли SQL-запросы избыточные данные из базы данных, которые не требуются для кода приложения? Используется ли что-то вроде  SELECT * или что-то подобное? Модульное и интеграционное тестирование Полностью ли модульные тесты покрывают дополнительную логику? При появлении исправлений в логике, появляются ли изменения в соответствующем модульном тесте? Всегда ли все реализованные модульные или другие виды тестов ведут себя детерминировано? Например, приостанавливают ли они выполнение потока на какой-то определенный период времени перед утверждением (что по своей сути является ошибочным шаблоном)?  Все ли модульные тесты реализованы в соответствии с принципами  F.I.R.S.T. ? Есть ли какие-либо признаки проблем в модульном тестировании, такие как проблемы с  логикой проверки условий ,  рулеткой с утверждениями ,  дублированием утверждений и другие? Добавлен ли интеграционный тест, как минимум, для happy-path-сценария (сценария счастливого пути) реализованной функции? Все ли зависимости тестируемого объекта имитируются для того, чтобы модульный тест случайно не превратился в интеграционный и не выполнился быстрее положенного? Изолированы ли модульные и интеграционные тесты друг от друга? Конечные точки API Выбираются ли HTTP-команды, такие как  GET, POST, PUT, DELETE и другие, в соответствии с действием их конечной точки? Отвечает ли каждая конечная точка API за выполнение лишь одной бизнес-операции? Или все же нескольких? Возвращает ли конечная точка API правильный код состояния? Например, не возвращает ли она код 401 вместо 500 при несанкционированном запросе? Сжимаются ли объемные ответы перед их отправкой вызывающей стороне? Защищены ли конечные точки API политиками аутентификации и авторизации? Позволяет ли API, который возвращает большой список объектов, фильтровать его и разбивать на страницы? Является ли конечная точка API GET идемпотентной? Используются ли имена существительные вместо глаголов в именах конечных точек API? Критические изменения Имеются ли в конечной точке API такие критические изменения, как переименование API, удаление или переименование его параметров? Имеются ли критические изменения в полезных данных сообщения (в случае, если используется брокер сообщений), например, удаление или переименование его свойств? Повлияют ли такие изменения в схеме базы данных, как удаление столбцов или таблиц, на другие службы системы? Системная среда Насколько загружен ЦП и сколько оперативной памяти потребляет код при выполнении запроса на включение изменений? Будет ли в средах, в которых будет развернут код (среда тестирования, среда приёмочного пользовательского тестирования, производственная среда), достаточно мощный процессор и достаточный объем оперативной памяти для эффективного выполнения кода? Будет ли реализованная логика, алгоритмы, структуры данных и т.д. работать достаточно быстро на большом наборе данных, который может быть в производственной среде? Документация Была ли изменена документация для того, чтобы отразить новые изменения программного кода (документация API, документация по структуре, проектная документация)? Создается ли тикет  технических недоработок , если запрос на внесение изменений содержит неэффективный или «грязный» код, который сейчас невозможно перестроить из-за недостаточного количества времени? Заключение Количество пунктов, на которых проверяющий должен заострить свое внимание, зависит от конкретного проекта и даже от конкретного запроса на внесение изменений. Ваш с коллегами мозговой штурм (если вы примите во внимание вышеприведенные пункты) может значительно снизить риск того, что вы забудете о чем-то важно при анализе программного кода.   
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59