Обновить
41.06

Проектирование API *

О создании API

Сначала показывать
Порог рейтинга
Уровень сложности

Как построить REST-like API в крупном проекте

Время на прочтение8 мин
Охват и читатели46K


Недавно мы перезапустили API Яндекс.Кассы – платежного сервиса с 15-летней историей. Я хочу рассказать, как решить такую амбициозную задачу. Материала набралось на серию статей, поэтому здесь я подробно расскажу о проектировании, переработке наших API, а также про наши инструменты и процессы.


Ключевые слова для оценки полезности: API, REST, OpenAPI, Swagger, рефакторинг взаимодействия систем.

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

Читаем данные из открытой части файлов КОМПАС-3D для интеграции с Pilot-ICE

Время на прочтение4 мин
Охват и читатели12K
Файлы КОМПАС-3D содержат информацию о документе: наименование и обозначение чертежа, фамилию разработчика, проверяющего и утверждающего, вид документа, формат, количество листов. Когда на предприятии используется система для автоматизации документооборота, проектировщику очень часто приходится вводить эту информацию вручную.

image
Добавление документа в систему документооборота (Карточка документа)

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

Как я писал telegram-бота и заливал его на удаленный сервер

Время на прочтение7 мин
Охват и читатели213K

Вступление


Как только на территории РФ вступил в силу запрет на анонимность в мессенджерах, у меня дошли руки написать пост про telegram-бота. По ходу создания бота столкнулся с большим количеством проблем, которые пришлось решать по отдельности, и буквально выцеживать крупинки информации со всего интернета. И вот после нескольких месяцев страданий и мучений (кодинг – не основное моё занятие) я наконец-то закончил с ботом, разобрался со всеми проблемами и готов поведать свою историю Вам.


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

Внезапно: новая версия ONLYOFFICE с макросами

Время на прочтение7 мин
Охват и читатели17K
У нас важные новости: вышла новая версия десктопов с макросами. Вы можете скачать её на официальном сайте и попробовать всё сами.

В этой статье мы расскажем, что у нас за макросы, чем они отличаются от макросов Microsoft и как с ними работать.


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

Работаем со смарт-картами, используя Python (часть 1)

Время на прочтение9 мин
Охват и читатели20K

Сначала, на момент задумки, в 2014 году, данная статья планировалась как единая публикация, но, проработав материал (лень вынудила растянуть этот процесс), я понял, что необходимо её разделить на две части:


  1. Знакомство с библиотекой и написание/разбор кода специального командного процессора, который ее использует.
  2. Использование командного процессора из ч.1 для чтения содержимого файла с симки, которую я, однажды, подобрал на улице (никаких персональных данных раскрыто не будет). Узнаем, как отучить Windows встревать в наше взаимодействие с картой, а также, возможно, затронем тему выбора (активации) системного приложения на карте (если моя экспериментальная карта окажется UICC).

Думаю, для профи-карточников первая часть будет представлять бо́льший интерес, а вторая часть будет интересна, прежде всего, новичкам в этой теме (и будет иметь метку Tutorial).

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

Безлимитное распознавание речи. Или как я перевожу в боте голосовые сообщения в текст

Время на прочтение5 мин
Охват и читатели48K
Привет, Хабр. Обычно я пишу программы для неговорящих людей, но решил удариться в крайности и сделать продукт для говорящих людей. Я хочу рассказать о разработке бота для VK, который переводит пересланные ему голосовые сообщения в текст. Сначала я использовал Yandex SpeechKit, но потом уперся в дневной лимит распознаваемых единиц и перешел на wit.ai, об этом и хочу рассказать, а также о фреймворке для создания ботов vk с помощью node.js, болтовне гугловского dialogflow.

Обложка статьи на которой показан скришот сайта wit.ai
Читать дальше →

Модуль Net::Ethereum для работы с контрактами Solidity

Время на прочтение11 мин
Охват и читатели5.8K


Обычно когда мне нужно использовать какой-то новый сервис или технологию из скриптов Perl, я захожу на CPAN, и там уже есть один или несколько подходящих модулей. Однако в случае фреймворков для работы с узлами блокчейна Ethereum и контрактами Solidity, к сожалению, мне не удалось найти нужного модуля.

Мы планируем в ближайшее время использовать смарт-контракты Solidity сети Ethereum в нашем SAAS-сервисе интернет-магазинов, написанном на Perl. Поэтому мне ничего не оставалось, как написать свой модуль Net::Ethereum (этот модуль уже доступен на CPAN, хотя и в виде альфа-версии).

Надеюсь, что модуль Net::Ethereum будет полезен тем, кто хочет интегрировать свои Perl-системы с контрактами блокчейна Ethereum. Буду очень благодарен тем, кто воспользуется этим модулем и пришлет мне свои соображения по его доработке, а также информацию о найденных ошибках.
Читать дальше →

«Здравствуй елка — Новый Год!» или программируем NanoCAD с помощью Visual Basic .NET

Время на прочтение20 мин
Охват и читатели7.9K
Намедни просматривая документацию к NanoCAD API идущую в комплекте с SDK неожиданно обратил внимания на то, что описание членов классов для .NET API и MultiCAD.NET API дано, как на C# так и на Visual Basic. И я подумал: «А ведь это здорово, что есть описание и для VB!»

И хотя если честно я совсем не знаю VB, да и код на старом добром BASIC последний раз видел лет 100 назад, но ведь это же один из языков на котором начинают учить людей азам программирования, поэтому я решил внести свой небольшой вклад в популяризацию программы.

Надо сказать, что на «Хабре» уже есть хорошая статья по применению VB для NanoCAD, там рассматривается связка NanoCAD с Excel и то как она в итоге может облегчить строительное проектирование.

Мы же с Вами решим другую, более простую и праздничную задачу, начертим ёлочку и поздравим пользователя с новым годом. Несмотря на то, что статья посвящена VB, код на C# тоже будет.

А поскольку «Новый год» – праздник затратный то ориентироваться мы будем на бесплатную для коммерческого использования версию NanoCAD 5.1 (но по идее без проблем должно работать и под NC 8.X).

Также не обойдем стороной и пользователей Linux поскольку код на C# с помощью Mono и Wine можно будет на нём скомпилировать и запустить.

Если честно я сам только недавно начал осваивать API NanoCAD и поэтому моя последняя в этом году предпраздничная статья по сложности кода чем-то напоминает теплый ламповый графический исполнитель «Кенгуренок (ROO)», но если вас это не останавливает, то милости прошу под кат…



P.S. Это первая буква слова «Habrahabr» — на большее меня не хватило =)
Читать дальше →

Не хочешь депозит 6,5? Расчет нормы доходности акций и полной доходности с помощью Moex API и парсера дивидендов

Время на прочтение5 мин
Охват и читатели9K

Немного о тексте ниже




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

Если инвестор очень долгосрочный и портфель составлен правильно, то он может покупать бумаги в любое время и по любой цене, 10-тилетний временной промежуток сгладит разницу за счет див.выплат (конечно мы должны искать ценные бумаги с постоянным денежным потоком).
Рассмотрим ситуацию, в которой вам надо найти ценные бумаги (далее я буду подразумевать конкретный тип бумаг — акции, с облигациями все понятно, там купон), которые приносит в виде дивидендов денежный поток, удовлетворяющий вашему финансовому плану. Самый простой пример — найти акцию, денежный поток которой превышает значение инфляции, т.е. 4% (по данным Росстата)
Читать дальше →

Построение RESTful web API на платформе InterSystems — 2

Время на прочтение6 мин
Охват и читатели5.1K

Введение


Четыре года назад я написал свою первую статью на Хабре и она была посвящена созданию RESTful web API на платформе InterSystems. С тех пор прошло немало времени и вышло несколько новых релизов, которые значительно упростили работу по созданию RESTful web API. Вот об этих изменениях я и хочу рассказать в этой статье, а также дать несколько советов по созданию RESTful web API на платформе InterSystems.

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

Добыча данных в R

Время на прочтение14 мин
Охват и читатели22K
Этот пост — перевод трех частей серии Data acquisition in R из моего англоязычного блога. Исходная серия задумана в четырех частях, три из которых легли в основу данного поста: Использование подготовленных наборов данных; Доступ к популярным статистическим БД; Демографические данные; Демографические данные. В еще не написанной заключительной части речь пойдет об использовании пространственных данных.




R заточен под воспроизводимость результатов. Существует множество прекрасных решений, обеспечивающих сопоставимость версий системы и пакетов, помогающих применять принципы literate programming… Я же хочу показать, как можно легко и эффективно находить/скачивать/добывать данные, используя собственно R и документируя каждый шаг, что обеспечивает полную воспроизводимость всего процесса. Разумеется, я не ставлю перед собой задачи перечислить все возможные источники данных и фокусирую внимание в основном на демографических данных. Если ваши интересы лежат вне сферы статистики населения, стоит посмотреть в сторону великолепного проекта Open Data Task View.


Для иллюстрации использования каждого из источников информации я привожу пример визуализации полученных данных. Каждый пример кода задуман как самостоятельная единица — копируйте и воспроизводите. Разумеется, сперва необходимо установить требуемые пакеты. Весь код целиком лежит тут.

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

Как за 10 минут сделать клиент к HTTP API на Swagger

Время на прочтение3 мин
Охват и читатели90K

Когда нужно сделать несколько запросов к HTTP API, разработчик обычно берет свой привычный язык/фреймворк и быстро пишет аналог curl в коде: HTTP-запрос, минимальный контроль ошибок, query- или json-аргументы, парсинг json body с названиями полей в виде строк. Все это замечательно работает, пока проект не начинает расти и несколько вызовов не превращаются в несколько десятков, а куски низкоуровневого кода не начинают размножаться копипастой. А дальше — стандартный набор багов, рожденных копипастой, которые начинают понемногу есть время у разработчика.

Swagger/OpenAPI — один из «комбайнов» для работы с HTTP API. Это язык описания API (недавно произошло объединение проектов генератора и спеки), генераторы серверного и клиентского кода, документации, тестов — много всяких полезных штук. Под катом я покажу, как по «человеческому» описанию API на сайте компании в несколько строк кода составить OpenAPI-описание и сгенерировать клиент на Python. И чем такой клиент будет лучше, чем вручную написанный код.

REST — это новый SOAP

Время на прочтение13 мин
Охват и читатели72K

Несколько лет назад я разрабатывал для одного большого телекома новую информационную систему. Нам приходилось взаимодействовать со всё нарастающим количеством веб-сервисов, открываемых более старыми системами или бизнес-партнёрами. Как вы понимаете, мы получили добрую порцию SOAP-ада. Заумные WSDL, несовместимые библиотеки, странные баги… Где только возможно мы старались продвинуть — и использовать — простые RPC-протоколы: XMLRPC или JSONRPC.

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

Ближайшие события

Подключаем Swagger модуль в Play Framework

Время на прочтение4 мин
Охват и читатели5.9K
Documenting Play Framework using Swagger

Оригинальный источник по настройке swagger-модуля


Play Framework — это MVC веб-фреймворк для языков программирования Java и Scala от компании ранее называемой Typesafe, а нынее Lightbend.


сайт:


Play Framework

статья с Хабра:


Впечатления от работы с Play! Framework 2.1 + Java

wiki


Play (фреймворк)

записки программиста


Play Framework — все, что вы хотели о нем узнать, но почему-то боялись спросить

Swagger — это целая множество инструментов, на протяжении всего жизненного цикла разработки API, от дизайна и документации, до тестирования и развертывания.


сайт:


Swagger

статьи с Хабра:


Документирование #микросервисов

3 лучших инструмента для описания RESTful API

wiki:


OpenAPI

Swagger (software)
Читать дальше →

Доклад — обзор возможностей и архитектуры комет сервера CppComet

Время на прочтение6 мин
Охват и читатели3K
Это текст доклада и видеозапись моего выступления с конференции rumeetup.ru приведённый в удобный для чтения вид. Так же я изъял часть вступления чтоб не отнимать время у читателей на лирические отступления о причинах побудивших меня начать разработку своего Open source комет сервера с нуля на C++.

Простая реализация Token для взаимодействия мобильного приложения с WebAPI

Время на прочтение3 мин
Охват и читатели9.3K
С недавнего времени занялся разработкой мобильных приложений с помощью Xamarin.Forms в связи с производственной так сказать необходимостью. Не буду конечно рассказывать про танцы с бубнами чтобы написать и запустить на эмуляторе приложение «Hello, World!», но главное разработка пошла достаточно плавно.

Благо и понимание задачи было — а именно — взаимодействие мобильного приложения с базой данных внутренней CRM системы в компании, добавить сотрудникам мобильности, но при этом не забывать и о безопасности. Было принято решение создать WebAPI, ибо чтобы работать с уже привычными ASMX веб-сервисами в Xamarin нужно плясать с бубнами.

Как сказал выше, в том числе хотелось сделать «связующее звено» достаточно безопасным, а значит мобильное приложение должно иметь авторизацию (до кучи и удобства с возможностью сохранения авторизации и автоматического входа.

Не хотелось глубоко копаться в реализации WebAPI с авторизацией на уровне Token, а хотелось сделать что-то попроще, тем более пока «гуглил» видел что такого желания у людей с избытком, но все отсылы отвечающих были либо к стандартным механизмам, либо использования каких-нибудь пакетов из NuGet, чего хотелось бы по максимуму избежать.

В базе собственной CRM и так уже есть вся информация для авторизации и городить что-то лишнее тупо не хотелось.

В итоге, после долгих мытарств, поисков и т.п. — думаю у меня получилось достаточно неплохое решение, которым мне и хочется поделится с сообществом.
Читать дальше →

«Истина в вине» или пробуем программировать NanoCAD под Linux (MultiCAD.NET API)

Время на прочтение14 мин
Охват и читатели9.1K
Практически со времени выхода первой «дееспособной» версии NanoCAD, среди сообщества пользователей остро встал вопрос о необходимости реализации данной САПР под Linux

Наверное, вы подумали, что эта статья родилась, потому что разработчики наконец-то «сделали это!». Спешу вас успокоить — все осталось на своих местах. О версии NanoCAD под Linux лично мне по-прежнему ничего не известно. Поэтому мы будем пытаться использовать Wine.

Так что эта короткая заметка будет не столько об использовании NanoCAD в Linux, сколько о программировании для Nanocad в системе отличной от Windows, а если еще точнее, то о том, как я вооружился Linux Mint, MonoDevelop и попытался собрать библиотеку (.dll) для бесплатной версии NanoCAD с применением MultiCAD.NET API.

Если вам интересно, что же из этого получилось, милости прошу под кат!

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

Нескучный API

Время на прочтение3 мин
Охват и читатели17K

image

Как создать АПИ для умных? Такое апи, чтобы создание клиента для него было не скучным механическим процессом, а настоящим приключением с элементами детектива, хоррора и мистики? Такое апи, о котором пользователи будут взахлёб рассказываете коллегам? Апи взрывающее мозг, заставляющее смеяться, кричать и плакать? Я постарался отобрать лучшие практики, с которыми пришлось столкнуться.



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

Две крупнейших CRM — Salesforce и Zoho — сравнение телефонных интеграций

Время на прочтение5 мин
Охват и читатели6.6K

Недавно мы интегрировали облачную телефонию Zadarma с двумя крупнейшими мировыми CRM системами — Salesforce и Zoho CRM. Интеграция традиционно бесплатна. Но функционал интеграций значительно отличается, как и функционал самих CRM систем. Через что пришлось пройти для каждой интеграции, и что в итоге получилось, опишем подробнее.
Читать дальше →

Создание приложения на Ionic с использованием API

Время на прочтение24 мин
Охват и читатели20K
image

Есть у меня приложение, написанное на Ionic Framework. На его основе хочу поделиться со всеми своим опытом разработки и напишу как создать кроссплатформенное приложение по шагам.

В этой статье будем с нуля разрабатывать приложение, которое позволяет читать статьи (публикации). У публикации будет название (заголовок), заглавное фото, краткое содержание, полное содержание, категория, автор, дата публикации. Все данные для приложения будут браться с сервера посредством Http-запросов.

В приложении будет несколько страниц (экранов):

  • список всех публикаций, отсортированный по дате.
  • список категорий, отсортированный по алфавиту.
  • список авторов, отсортированный по имени.
  • список публикаций выбранной категории, отсортированный по дате.
  • список публикаций выбранного автора, отсортированный по дате.
  • содержание публикации.

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

Вклад авторов