[recovery mode] Программирование для 3CX на C#: используем 3CX Call Control API в среде разработки Call Flow Designer

Введение


Писать программы для системы 3CX на C# может быть несколько непривычным занятием для начинающего IT-специалиста или человека, не сталкивающимся ранее с написанием кода. Однако этот навык окажется весьма полезным и востребованным, если перед вами будет стоять задача создания действительно сложных, функциональных или заказных голосовых приложений.

Существует ряд мощных сред быстрой разработки, но все они требуют профессиональной предварительной настройки и занимают изрядное место на диске. Поэтому я стремился ограничиться каким-то компактным решением, но с поддержкой функции IntelliSense. Microsoft IntelliSense хорошо выделяет ошибки в коде и автоматически дополняет выражения. Конечно, если вы уже являетесь гуру C#, эта статья может быть вам не столь интересна. Профессионалу хватит и блокнота! Читать дальше →

[Из песочницы] Введение в Beautiful Capi, инструмент создания С++ оберток для С++ библиотек

Beautiful Capi — это инструмент облегчающий создание динамических библиотек на языке С++ с внешним интерфейсом на языке Си. Данный инструмент генерирует также С++ обертки для этого Си интерфейса. Beautiful Capi написан на языке Python 3.


Основная головная боль разработчиков библиотек на С++ в отсутствии единого стандарта ABI. Различные компиляторы имеют разный ABI, соглашения о именовании, схемах перехвата исключений и т.д. Поэтому программистам на С++ приходится каждый раз брать исходники библиотеки и собирать ее при помощи нужного компилятора.


Это хорошо, если библиотека популярная, и для нее добрый дядя уже выложил бинарные файлы для большинства компиляторов С++. Опять таки, для большинства компиляторов. Компиляторов С++ достаточно много, и, если учитывать разные версии одного и того же компилятора, имеющими несовместимый ABI, то вероятность того, что уже собранная библиотека вам не подойдет — достаточно высока. Плюс, добавим к этому различные настройки компиляторов, влияющие на двоичную совместимость.

Читать дальше →

[Из песочницы] Асинхронные режимы фреймворка gRPC и принципы их работы в С++

Однажды мы с нашей командой решили попробовать gRPC для своих задач. После некоторых обсуждений, пришли к выводу, что будем использовать асинхронные клиент и сервер. Однако, под рукой оказался рабочий пример из документации только для одного режима. Примеры остальных режимов взаимодействия, основные принципы работы асинхронных операций, принципы работы асинхронного сервера и клиента в gRPC и многое другое под катом.
Читать дальше →

Асинхронность 3: Субъекторная модель

Двое из ларца

Предисловие


Эта статья является продолжением цикла статей про асинхронность:

  1. Асинхронность: назад в будущее.
  2. Асинхронность 2: телепортация сквозь порталы.

Спустя 3 года я решил расширить и обобщить имеющийся спектр асинхронного взаимодействия с использованием сопрограмм. Помимо этих статей также рекомендуется ознакомиться с универсальным адаптером:

  1. Универсальный адаптер

Введение


Рассмотрим электрон. Что он из себя представляет? Отрицательно заряженная элементарная частица, лептон, обладающий некоторой массой. Это означает, что он может участвовать по меньшей мере в электромагнитных и гравитационных взаимодействиях.
Читать дальше →

Обзор дефектов кода музыкального софта. Часть 3. Rosegarden


Программы для работы с музыкой имеют маленький объём кода и, поначалу, я сомневался в возможности находить достаточное количество ошибок для статей. Тематику музыкального софта всё равно хотелось затронуть, поэтому я был готов объединять несколько проектов в статье. И вот я пишу уже третью статью, стараясь хоть как-то вместить интересные ошибки в одну статью. Третьим проектом для анализа выбран MIDI-секвенсор и нотный редактор — Rosegarden. Внимание! Прочтение статьи вызывает «Facepalm»!
Читать дальше →

Каррирование и частичное применение на C++14

В этой статье я расскажу об одном из вариантов каррирования и частичного применения функций в любимом мною C++, покажу свою экспериментальную реализацию сего действа и объясню без математики, на пальцах, что такое вообще каррирование и что же под капотом у kari.hpp, с помощью которой мы и будем каррировать функции. Ну и как тут принято: заинтересовавшихся — прошу под кат.

Читать дальше →

Добавление рекордов с OAuth 2: Laravel Passport + Unity. Часть 2



Продолжение статьи про добавление рекордов из игры на сайт от конкретного пользователя. В первой части мы сделали страничку рекордов на Laravel и подготовили API для их добавления — как анонимным, так и авторизированным пользователем. В этой части будем дорабатывать готовую игру на Unity про Крысу на Стене, заходить за свой аккаунт и отправлять рекорды на сайт на Laravel с использованием токена авторизации.
На стену с крысом

Библиотека для синхронизации состояния


Так случилось, что на одном проекте потребовалось реформировать способ обмена данными между различными процессами. Исторически сложившаяся схема была довольно неприглядна. Один процесс периодически перезаписывал свои текущие настройки в виде XML-файла. Второй вычитывал этот файл раз в секунду, проверяя, что в нём поменялось с прошлого раза. Изменения файла вычислялись через множество сравнений текущего и прошлого его состояний, порождая некоторую цепочку действий. Читающий процесс писал в свою очередь другой XML-файл, который читался третьим процессом и т.п. Самое печальное то, что данная схема требовала громоздкого, из раза в раз повторяющегося кода сравнений, который наслаивался при добавлении новых данных.

Читать дальше →

Cocos2d-x — UI компоненты

От переводчика


С возвращением! Мы продолжаем свой цикл переводов документации к Cocos2d-x. По традиции я должен оставить здесь ссылку на предыдущую статью:
Cocos2d-x — Обработка действий

Продолжим!

UI компоненты


Взглянув на множество приложений, которые вы использовали, держу пари, что вы обнаружите там UI виджеты, даже не имея о них представления. Каждое приложение, скорее всего, использует несколько виджетов. Что означает UI? Что делают UI виджеты? О, так много вопросов!

Виджеты


UI — это аббревиатура, обозначающая пользовательский интерфейс. Это все, что находится на экране. Сюда входят такие элементы, как: надписи, кнопки, элементы меню и многое другое. Cocos2d-x предоставляет набор виджетов, для простого добавления этих элементов управления в ваши проекты. Это может звучать тривиально, но в процессе создания основного класса, такого как Label, выполняется большое количество операций. Может себе представить, что вам нужно написать свой собственный набор виджетов? Не волнуйтесь, все это вполне реализуемо!
Читать дальше →

[Перевод] Ваши собственные std::code_error

Пара слов от переводчика


Продолжая освещать тему std::system_error в рунете, я решил перевести несколько статей из блога Andrzej Krzemieński, который мне посоветовали в комментариях к предыдущему посту.

Так как эти статьи имеют достаточный объем, я решил не сливать их в кучу, как в прошлый раз, а публиковать в формате оригинала.

Так же хочу предупредить, что у Andrzej Krzemieński достаточно сумбурный стиль изложения, который я не стал править. Все же я выступаю в роли переводчика, а не редактора. Так что, возможно, чтобы понять некоторые тезисы придется перечитать дважды.
Читать дальше →
  • Новее
  • 1


Облако тэгов

Последние посты