Все потоки
Поиск
Написать публикацию
Обновить
37.58

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

О создании API

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

Meople.Net. Как это работает?

Время на прочтение4 мин
Количество просмотров6.8K
Как вы уже поняли из предыдущих постов, Meople.Net — это агрегатор ваших персональных (и не только) новостей из социальных сетей, реализованный для WEB и Windows 8. Многие из вас могут законно сказать, что сервис далеко не революционный. Но в этой статье я бы хотел остановиться на том, что его делает уникальным с технической (функциональной) точки зрения, а не с пользовательской.

Итак, как происходит работа с социальными сетями: большинство социальных сетей предоставляют REST API функционал для сторонних разработчиков, которые хотят построить свои приложения на платформах/данных социальных сетей. То есть, если вы хотите использовать данные Facebook или ВКонтакте в своем приложении, то это то, что вам нужно.
Я опущу общие шаги, которые должен сделать любой разработчик:
● регистрация приложения на сайте соц. сети и получение секретных ключей приложения;
● реализация (в большинстве случаев) OАuth 2.0 авторизации (http://tools.ietf.org/html/rfc6749);
● собственно отправление подписанного запроса в соц. сеть для получения необходимых вам данных.

Авторизация

Авторизация делится на клиентскую и серверную. 99% приложений, которые построены на платформе социальной сети, делают серверную авторизацию, что дает им возможность проксировать все запросы и сохранять ваши авторизационные данные на своих серверах. Они, собственно, это и делают. Так как в противном случае вам пришлось бы постоянно вводить пароль от вашего аккаунта в соц. сети (либо постоянно подтверждать разрешение на пользование вашего аккаунта для стороннего приложения). Ваши авторизационные данные в таком случае хранятся на сторонних серверах, не принадлежащих соц. сети. Там с ними может произойти все что угодно — ими даже могут воспользоваться без вашего ведома: например, поставить лайк на какую-то страницу, подписать вас на какие-то новости, в целях рекламы отправить вашим друзьям сообщение, что вы начали использовать какое-то приложение и тд.
Наш сервис использует клиентскую авторизацию там, где это возможно. В результате чего ваши авторизационные данные находятся в вашем же браузере (cookies, data storage) или устройстве и не сохраняются на наших серверах. Подписка запросов, отправляющихся в сеть, также происходит на клиенте. То есть, когда вы не используете наш сервис, у нас нет даже теоритической возможности воспользоваться вашими данными.

Отправление запросов на получение данных

При серверной авторизации для получения актуальных данных подпись запроса происходит на стороннем сервере, это означает, чтобы получить какие-то данные запрос из вашего браузера идет на сторонний сервер, оттуда в дата центр соц.сети, из соц.сети обратно на сторонний сервер и возвращается к вам. Казалось бы, все хорошо, но представьте себе, что вы находитесь в России (а раз вы читаете этот пост, то вы, скорее всего, там находитесь), а сервер стороннего приложения в большинстве случаев (и у нас в том числе) в США. Это означает, что ваш запрос образно пропутешествует вот так: Россия -> США сторонний сервер -> США соц.сеть (у ВКонтакте не уверен есть ли там сервера) -> США сторонний сервер -> Россия.
В итоге мы видим кучу запросов и на каждом из них многочисленные задержки. Особенно в случае запросов Россия — США. В результате производительность приложения падает. Частично это решается кешированием на некоторое время данных на сторонних серверах (это еще одна вещь, которой всегда хочется избежать) — но при этом вы лишаетесь возможности получить актуальные на данную секунду данные, а получаете данные с задержкой.

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

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

Испытание прототипа Медиа-центра iLook

Время на прочтение3 мин
Количество просмотров5.2K
Несмотря на проблемы, трудности и всяческие злоключения, разработка нашего «больше чем ридера» продвинулась далеко вперед. Мы полностью завершили работы по созданию архитектуры проекта, доработали механизмы взаимодействия с платформой iLook и существенно продвинулись в разработке мобильных приложений. Но самое главное: мы завершили работы по созданию «сердца» нашего Медиа-центра — серверную часть ридера с открытым API. И сегодня мы приглашаем вас присоединиться к проверке работоспособности боевого API на стенде-прототипе.

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

Знакомство с Semantic3 API

Время на прочтение3 мин
Количество просмотров4K
В этом небольшом посте описывается работа с сервисом Semantics3, с которым я познакомился в процессе разработки некого портала для покупок в интернете.
Цель сервиса — собрать в одном месте все товары в мире и давать доступ магазинам по API к своей базе, где можно будет видеть динамику цен, кто что продает и так далее(на данный момент проиндексировано более 35 миллионов продуктов). После того, как Google Search API for Shopping “ушел на пенсию”, Semantics3 стремительно набирает обороты. Входит в семерку лучших стартапов в фонде Y Combinator за зимнюю сессию 2013 года.
Читать дальше →

Java и работа с iCalendar

Время на прочтение5 мин
Количество просмотров21K
Не так давно у меня возникла необходимость парсинга и последующего вывода нужной информации из iCalendar. После упорных поисков я наткнулся на библиотеку iCal4J. Присмотревшись к её функционалу, я понял — это то, что мне нужно. Давайте же попробуем её применить на практике.

Подготовка календаря

В Google Calendar я создал маленький календарь, состоящий из нескольких различных мероприятий длительностью от 30 минут до 6 часов. Затем я скачал календарь в формате iCal к себе на ноутбук. Если кто не знает — делается это так: заходим в настройки календаря Google и в разделе «Закрытый адрес календаря» жмём на зеленую кнопочку «ICAL». Всё, календарь загружен на устройство.
Читать дальше →

How-to: роботы и API брокерской торговой системы

Время на прочтение5 мин
Количество просмотров81K
image

В одном из прошлых топиков мы начали обсуждать общее устройство биржевого рынка России, а сегодня чуть подробнее взглянем на одно из его звеньев – брокерские системы. Брокерский бизнес технологичен по своей сути: клиенты выставляют заявки с использованием торговых терминалов, часто разработанных именно брокерами, а для обработки заявок и их отправки на биржу необходима автоматизированная система сбора заявок и выставления их на биржу. Такие системы, снабженные средствами авторизации и лимитирования, позволяющие смаршрутизировать заявку на рынок и дать клиенту информацию о ее статусе и о текущем состоянии его портфеля, обычно зовутся торговыми системами брокера.

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

API для Российской общественной инициативы. Шаг 2.2: опыт США в работе с данными электронных петиций — API Белого Дома

Время на прочтение4 мин
Количество просмотров4.3K
Ранее я писал в паре постов о том как устроена открытость электронных петиций в разных странах, какие данные есть в России и как можно сделать APO для небезызвестной Российской общественной инициативы — www.roi.ru.

Прочитать всё это можно здесь:


В этот раз мы рассмотрим то как устроены электронные петиции Белого Дома, в первую очередь, с точки зрения их открытости и пригодности к данных для использования.



Справка


Особенности петиций в США

  1. Относятся именно к президенту и ответы дает его администрация.
  2. Не требуют ничего кроме email'а для подписи — дополнительная авторизация ненужна.
  3. Петиции должны пройти 2 порога — 150 подписей за 30 дней чтобы их можно было найти (по прямой ссылке они доступны) и 100 000 подписей за 30 дней чтобы получить официальный ответ — petitions.whitehouse.gov/how-why/terms-participation

В цифрах

  • всего 2246 петиций
  • даны ответы на 208 петиций
  • в ожидании ответа 26 петиций
  • закрыто 1972 петиций
  • открыто для голосования 40 петиций

Цифры учитывают только те петиции что прошли 1-й порог в 150 подписей за 30 дней.

WhiteHouse.gov/developers



Одно из важных отличий сайта Белого Дома США от сайтов всех лидеров в мире — это ориентированность на разработчиков. На сайте даже есть специальный раздел /Developers где размещены данные, раскрыт исходный код проектов и описаны API многих из инициатив если не всех вообще.

Открытый код


Поскольку нас интересуют в первую очередь петиции, то рассмотрим их подробнее.

Во первых исходный код петиций полностью опубликован на Github — https://github.com/WhiteHouse/petitions

У репозитория больше 15 контрибьюторов, несколько десятков багов и вопросов и мы можем говорить о том что разработка проекта идет открытым образом.

Открытое API

Другая сторона происходящего в том для разработчиков доступен не только исходный код, но и API и данные накопленные на сервисе.
Все API по петициям доступны по ссылке — https://petitions.whitehouse.gov/developers

API доступа к данным состоит из 3-х эндпоинтов:
Читать дальше →

Миграция на новую версию API

Время на прочтение4 мин
Количество просмотров14K
Moving the Mote-Morris House: Leesburg, Florida

Подходит к концу время жизни первой версии нашего API. Для тех, кто еще не перевёл свои приложения на новую версию, мы подготовили руководство по миграции.

Самое, что вероятно бросается в глаза — в новой версии нет XML. Да, мы оставили только JSON, но этим всё не ограничивается.
Читать дальше →

BitTorrent Sync: скорость до 90 мегабайт/с и открытые API

Время на прочтение2 мин
Количество просмотров34K
Вчера состоялся выпуск новой версии программы для синхронизации файлов через торренты BitTorrent Sync 1.2. Разработчики сообщили несколько приятных новостей. Во-первых, популярность BitTorrent Sync растёт высокими темпами, что гарантирует успешное развитие проекта в будущем. Количество пользователей превысило 1 млн человек (месячная активная аудитория), а объём синхронизированных файлов — 30 петабайт.

Во-вторых, в новой версии произведена оптимизация протокола синхронизации, так что максимальная скорость в локальной сети увеличена до 90 МБ/c. Это значит, что 10-гигабайтный файл автоматически синхронизируется между компьютерами в локалке быстрее, чем за две минуты.

И самое главное — наконец-то выпущены открытые API для добавления синхронизации через торренты в любой сторонний софт.
Читать дальше →

Пишем instagram-робота, ставим лайки по тегам

Время на прочтение6 мин
Количество просмотров59K
Иногда, для разминки ради, ставлю себе задачи. Просто ради интереса. Чаще всего они забываются сразу после найденного решения и более не используются. Так произошло и в этот раз. Начитался в интернетах о том, что эффективным способ продвижения в Instagram, считается поиск фото по тегам и «лайканье» оных. Если правильно выбрать теги (как правило те, что соответствуют тематике вашего аккаунта), вы получите не только ответные лайки, но и новых подписчиков (что подтвердилось).

Задача


Написать робота (MySQl+php+js), который находил бы фото по тегам и ставил им лайки. Более того, желательно, чтобы наш робот не попал в бан.
Читать дальше →

Веб-API в стиле RESTful

Время на прочтение2 мин
Количество просмотров26K
Всем привет.
У нас снова появилась необходимость узнать мнение пользователей Хабры по поводу издания книги «RESTful Web APIs».

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

Универсальный автотест, или как мы автоматизировали ручные тесты API в nanoCAD

Время на прочтение5 мин
Количество просмотров7.1K
Как можно вручную протестировать API? Наоборот, если есть API, чем плохи модульные тесты? При разработке API nanoCAD-а мы столкнулись с тем, что не весь API можно протестировать при помощи модульных тестов — часть API неразрывно связана с пользовательским интерфейсом и интерактивным взаимодействием с пользователем.

В этой статье мы расскажем о том, как мы тестировали API вручную, через какие стадии автоматизации мы прошли, и какой подход позволил нам создать надёжные и легко поддерживаемые автотесты.



По мотивам доклада на конференции SQA Days-12.
Читать дальше →

«ZeroMQ».Глава 1: Приступая к работе

Время на прочтение10 мин
Количество просмотров86K
Всем привет!
Хочу начать вольный перевод книги «ZeroMQ.Use ZeroMQ and learn how to apply different message patterns». Уверен, что многие захотят разобраться с этой интересной библиотекой.

Содержание


Добро пожаловать в ZeroMQ! Эта глава представляет собой введение в ZeroMQ и дает читателю общее представление о том, что такое система очередей сообщений и, самое главное, что такое ZeroMQ. В этой главе мы поговорим о следующих темах:
  • Обзор того, что представляет собой очередь сообщений
  • Зачем использовать ZeroMQ и что отличает ее от других технологий работы с очередями сообщений
  • Основы клиент/серверной архитектуры
  • Рассмотрим первый паттерн: запрос-ответ
  • Как мы можем обрабатывать строки в C
  • Проверка установленных версий ZeroMQ


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

API консоли Javascript

Время на прочтение15 мин
Количество просмотров36K
Разработчикам удобно пользоваться консолью для отладки, но ещё удобнее, если будет оболочка, в которой учтены особенности реализации консоли в различных браузерах, поэтому тема обёрток для консоли устойчиво существует.

Рассмотрим ранее опубликованные решения, затем сделаем обзор методов консоли с помощью перевода недавней статьи Axel Rauschmayer-а, разработчика и консультанта с более чем 15-летним стажем, затем я опубликую некоторые свои решения, которые оказались удачными в процессе эволюции и отладки на ряде проектов.
UPD 2015: обновление таблицы команд до актуального состояния, Github (ru, en; разворачивание на javascript).
ой, сколько букв

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

Работа с таблицами в MultiCAD.NET. Часть 1. Создание отчета на основе шаблона

Время на прочтение6 мин
Количество просмотров4.9K


Этой публикацией мы открывам цикл статей про возможности и особенности API для работы с таблицами в MultiCAD.NET.

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

В качестве примера рассмотрим формирование итоговой ведомости электроприборов по плану расположения оборудования (или, проще говоря, по чертежу, иллюстрирующему распределение электрических розеток по помещениям).
Читать дальше →

Базы знаний. Часть 1 — введение

Время на прочтение5 мин
Количество просмотров67K
Одной из причин слабого использования Linked Data-баз знаний в обычных, ненаучных приложениях является то, что мы не привыкли придумывать юзкейсы, видя перед собой только данные. Трудно спорить с тем, что сейчас в России производится крайне мало взаимосвязанных данных. Однако это не значит, что разработчик, создающий приложение для русскоязычной аудитории совсем уж отрезан от мира семантического веба: кое-что всё-таки у нас есть.
image
Основными источниками данных для нас являются международные базы знаний, включающие русскоязычный контент: DBpedia, Freebase и Wikidata. В первую очередь это справочные, лингвистические и энциклопедические данные. Каждый раз когда вам в голову приходит мысль распарсить кусочек википедии или викисловаря — ущипните себя как следует и вспомните о том, что всё, что хранится в категориях, инфобоксах или таблицах, уже распарсено и доступно через API с помощью SPARQL или MQL-интерфейса.

Я попробую привести несколько примеров полезных энциклопедических данных, которые вы не найдете нигде, кроме Linked Data.

Эта статья — первая из цикла Базы знаний. Следите за обновлениями.


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

Наши партнеры: история Powerbot

Время на прочтение4 мин
Количество просмотров3.2K
Screen Shot 2013-10-15 at 10.31.15PM

Автор: Дмитрий Горшков, директор по продуктам компании Yam Labs, разработчика продуктов серии Powerbot и партнера Evernote

Осенью 2012 года я практически случайно попал на ежегодную конференцию Evernote — подобных событий в Сан-Франциско и округе проходит достаточно много, но в данном случае это стало не только интересным мероприятием с кучей игровых автоматов, но и отправной точкой для нового витка развития нашей компании и огромного количества новых продуктов.
Читать дальше →

Сессии в API на Yii c возможностью хранения в Redis

Время на прочтение7 мин
Количество просмотров21K
Не так давно у меня возникла необходимость написать API на Yii Framework, одним из функциональных требований в котором является авторизация. Для механизма авторизации я решил использовать сессии.
Читать дальше →

«Boost.Asio C++ Network Programming». Глава 7: Boost.Asio – дополнительные темы

Время на прочтение7 мин
Количество просмотров30K
Всем привет!
Продолжаю перевод книги John Torjo «Boost.Asio C++ Network Programming».

Содержание:


В этой главе рассматриваются некоторые дополнительные темы Boost.Asio. Маловероятно, что вы будете использовать это каждый день, но, безусловно, будет не лишним это знать:
  • Если отладка не удается, то вы увидите, что Boost.Asio поможет вам в этом
  • Если вам придется работать с SSL, то посмотрите, что вам может предложить Boost.Asio
  • Если вы пишите приложение под определенную OC, то посмотрите, какие дополнительные функции есть в Boost.Asio для вас


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

«Boost.Asio C++ Network Programming». Глава 6: – другие особенности

Время на прочтение12 мин
Количество просмотров30K
Всем привет!
Продолжаю перевод книги John Torjo «Boost.Asio C++ Network Programming».

Содержание:


В этой главе мы рассмотрим некоторые из не очень известных особенностей Boost.Asio. Объекты std streams и streambuf иногда немного сложнее в использовании, но, как вы сами убедитесь, у них есть свои преимущества. Наконец, вы увидите довольно позднее добавление в Boost.Asio — co-routines, которое позволит вам иметь асинхронный код, но легко читаемый (как буд-то бы он синхронный). Это довольно удивительная особенность.

Ну что, поехали

Частотный генератор фонового шума на HTML5

Время на прочтение1 мин
Количество просмотров23K
В ряду генераторов фонового шума — пополнение. Да ещё какое. На сайте myNoise.net можно в удобном интерфейсе через Web Audio API сгенерировать подходящий фон: звук костра, ветра, водопада, дождя, белый шум, различные промышленные шумы и т.д. Всё совершенно бесплатно и работает даже в мобильных браузерах.


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

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