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

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

О создании API

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

Шпаргалка Java программиста 1: JPA и Hibernate в вопросах и ответах

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

Знаете ли вы JPA? А Hibernate? А если проверить?

В чем смысл серии статей 'Шпаргалки Java программиста'
За время работы Java программистом я заметил, что как правило программисты постоянно и планомерно используют от силы 10-20% от возможностей той или иной технологии, при этом остальные возможности быстро забываются и при появлении новых требований, переходе на новую работу или подготовке к техническому интервью приходится перечитывать все документации и спецификации с нуля. Зато наличие краткого конспекта особенностей тех или иных технологий (шпаргалок) позволяет быстро освежить в памяти особенности той или иной технологии.




Данная статья будет полезна и для тех кто только собирается изучать JPA и Hibernate (В этом случае рекомендую сразу открывать ответы), и для тех кто уже хорошо знает JPA и Hibernate (В этом случае статья позволит проверить свои знания и освежить особенности технологий). Особенно статья будет полезна тем кто собирается пройти техническое интервью, где возможно будут задавать вопросы по JPA и Hibernate (или сам собирается провести техническое интервью).

Поехали...

RESTful API — большая ложь

Время на прочтение7 мин
Количество просмотров436K
От переводчика:
Я впервые попробовал перевести статью такого объёма и IT-тематики, с радостью прочту ваши комментарии и замечания. Что же касается самой статьи: я не согласен с автором как минимум потому, что, по сути, он заменяет REST на… REST (!!!), но немного в другом обрамлении. Однако, не смотря на то, что в статье преподносится много очевидных вещей, мне она показалась достойной обсуждения на Хабре.

Почему Вам стоит похоронить эту популярную технологию

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

gRPC — фреймворк от Google для удалённого вызова процедур

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

В деле удалённого вызова процедур дела уже давно обстоят в точности как в известном комиксе «14 стандартов» — чего только тут ни напридумано: древние DCOM и Corba, странные SOAP и .NET Remoting, современные REST и AMQP (да, я знаю, что кое-что из этого формально не RPC, для того чтобы обсудить терминологию даже вот специальный топик недавно создали, тем ни менее всё это используется как RPC, а если что-то выглядит, как утка и плавает, как утка — ну, вы в курсе).

И конечно же, в полном соответствии со сценарием комикса, на рынок пришел Google и заявил что вот теперь наконец он создал ещё один, последний и самый правильный стандарт RPC. Google можно понять — продолжать в 21-ом веке гонять петабайты данных по старому и неэффективному HTTP+REST, теряя на каждом байте деньги — просто глупо. В то же время взять чужой стандарт и сказать «мы не смогли придумать ничего лучше» — совершенно не в их стиле.

Поэтому, встречайте, gRPC, что расшифровывается как «gRPC Remote Procedure Calls» — новый фреймворк для удалённого вызова процедур от Google. В этой статье мы поговорим о том, почему же он, в отличии от предыдущих «14 стандартов» всё-таки захватит мир (ну или хотя бы его часть), попробуем собрать билд gRPC под Windows + Visual Studio (и даже не говорите мне, что инструкция не нужна — в официальной документации упущено штук 5 важных шагов, без которых ничего не собирается), а также попробуем написать простенький сервис и клиент, обменивающиеся запросами и ответами.
Читать дальше →

AMI. Разносторонний Originate. Применение в CTI приложении

Время на прочтение5 мин
Количество просмотров32K
Originate можно перевести с английского как «давать начало». Возможности команды весьма широки и не все очевидны. Originate, среди разработчиков CTI приложений — это одна из наиболее популярных команд AMI. Чаще ее используют для инициации исходящих вызовов и организации обратных звонков. В рамках данной статьи мы рассмотрим расширенные возможности.
Читать дальше →

15 тривиальных фактов о правильной работе с протоколом HTTP

Время на прочтение7 мин
Количество просмотров242K
Внимание! Реклама! Пост оплачен Капитаном Очевидность!

Ниже под катом вы найдёте 15 пунктов, описывающих правильную организацию ресурсов, доступных по протоколу HTTP — веб-сайтов, «ручек» бэкенда, API и прочая. «Правильный» здесь означает «соответствующий рекомендациям и спецификациям». Большая часть ниженаписанного почти дословно переведена из официальных стандартов, рекомендаций и best practices от IETF и W3C.



Вы не найдёте здесь абсолютно ничего неочевидного. Нет, серьёзно, каждый веб-разработчик теоретически эти 15 пунктов должен освоить где-то в районе junior developer-а и/или второго-третьего курса университета.

Однако на практике оказывается, что великое множество веб-разработчиков эти азы таки не усвоило. Читаешь документацию к иным API и рыдаешь. Уверен, что каждый читатель таки найдёт в этом списке что-то новое для себя.
Читать дальше →

Отправка сообщений через API VK средствами PHP для ленивых

Время на прочтение3 мин
Количество просмотров126K
Что мы будем делать: настроим отправку сообщений от имени конкретного пользователя в несколько чатов и другим пользователям используя HTTP запрос средствами PHP, с минимальными усилиями.

Собственно, одними сообщениями мы не ограничимся. Все будет работать через standalone приложение vk по тому принципу, что мы потенциально сможем делать все действия, которые будут доступны этому самому пользователю (точнее все то, на что мы выдадим сами себе права, но об этом чуть позже).

Сообщения рассматриваем именно по той причине, что с ними можно работать только в standalone-приложениях.

План действий:
1. Создаем приложение
2. Получаем access_token
3. отправляем сообщения
Читать дальше →

Пишем документацию API при помощи RAML

Время на прочтение10 мин
Количество просмотров77K
RAML

Удобство работы с любым API во многом зависит от того, как написана и оформлена его документация. Cейчас мы ведём работу по стандартизации и унификации описания всех наших API, и вопросы документирования для нас особенно актуальны.
После долгих поисков мы решили оформлять документацию в формате RAML. Так называется специализированный язык для описания REST API. О его возможностях и преимуществах мы расскажем в этой статье.
Читать дальше →

Офис как Платформа, выпуск №4: Uber, PayPal, Boomerang и Evernote как примеры приложений нового типа

Время на прочтение3 мин
Количество просмотров9.1K
Добрый день, коллеги! В рамках нашей колонки “Офис как платформа” мы продолжаем знакомить вас с новыми возможностями, которые предлагает современная модель приложений для Office для бизнеса и рядовых разработчиков. Сегодня мы поговорим про примеры приложений от таких крупных компаний как Uber, PayPal, Evernote и других.


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

Можно ли полагаться на данные, извлекаемые WMI классами?

Время на прочтение3 мин
Количество просмотров10K
На примере нескольких WMI-классов Win32_xxxx, показано, что как минимум некоторые из свойств объектов, возвращаемые указанными классами, совершенно не соответствуют реальным значениям этих свойств.
Читать дальше →

Технологии ASR и TTS для прикладного программиста: теоретический минимум

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

Введение


В последние несколько лет голосовые интерфейсы окружают нас все плотнее. То, что когда-то демонстрировалось только в фильмах о далеком будущем, оказалось вполне реальным. Дело дошло уже до встраивания движков для синтеза (Text To Speech — TTS) и распознавания (Automatic Speech Recognition — ASR) речи в мобильные телефоны. Более того, появились вполне доступные API для встраивания ASR и TTS в приложения.

Ныне создавать программы с голосовым интерфейсом может любой желающий (не поскупившийся заплатить за движок). Наш обзор будет посвящен именно использованию имеющихся движков (на примере Nuance) а не созданию таковых. Также будут даны общие сведения необходимые каждому программисту впервые сталкивающемуся с речевыми интерфейсами. Статья также может быть полезна руководителям проектов, пытающимся оценить целесообразность интеграции голосовых технологий в их продукты.
Итак, начнем…

Но для затравки — анекдот:
Урок русского языка в грузинской школе.
Учитель говорит: «Дети, запомните: слова сол, фасол и вермишел пишутся с мягким знаком, а слова вилька, булька, тарелька – без мягкого знака. Дети, запомните, потому что понять это невозможно!»

Раньше этот анекдот казался мне смешным. Теперь — скорее жизненным. Почему так? Сейчас постараюсь объяснить…
Читать дальше →

Написание бота для мессенджера Tox

Время на прочтение12 мин
Количество просмотров19K
На фоне общей увлеченности созданием ботов для Telegram я бы хотел рассказать об API не очень широко известного мессенджера Tox и показать на примере простого echo-бота, как можно так же легко и быстро создавать собственных.

image

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

CometQL — api работы с комет сервером по протоколу MySQL

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

CometQL — это api для работы с saas комет сервисом по протоколу MySQL.

Почему это круто


  • Единый api для более чем 12 языков программирования
  • Простой и понятный вид запросов
  • В php есть средства поддержания постоянных соединений с MySQL и теперь их можно так же использовать для работы с comet сервером.

Например для получения информации о том когда пользователь был online достаточно выполнить следующий запрос:
select id, time from users_time where id = 2;

А вот запрос для отправки сообщения в канал:
INSERT INTO pipes_messages (name, event, message)VALUES("pipe_name", "event_in_pipe", "text message");

Как подключится и попробовать самостоятельно


Вы можете сами подключится с демо данными и попробовать.
# Сервер app.comet-server.ru
# Логин 15
# Пароль lPXBFPqNg3f661JcegBY0N0dPXqUBdHXqj2cHf04PZgLHxT6z55e20ozojvMRvB8
# База данных CometQL_v1

# Строка для подключения из консоли
mysql -h app.comet-server.ru -u15 -plPXBFPqNg3f661JcegBY0N0dPXqUBdHXqj2cHf04PZgLHxT6z55e20ozojvMRvB8 -DCometQL_v1

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

Ядерные технологии в CAD

Время на прочтение8 мин
Количество просмотров17K
image
В этой статье я предлагаю краткий обзор библиотек геометрического моделирования с точки зрения разработчика специализированной CAD системы и делюсь опытом интеграции ядра C3D.

Если рынок «больших» программ проектирования давно поделен между несколькими крупными игроками вроде AutoCAD, SolidWorks, NX, Creo Elements и CATIA и т.п., то рынок специализированных программ проектирования всего и вся – окон и лестниц, корпусной и мягкой мебели, трубопроводов и корпусов весьма широк и динамичен. Причин для этого, на мой взгляд, две: во-первых, это высокая стоимость покупки крупной САПР и сотрудника, умеющего в ней эффективно работать. А, во-вторых, отсутствие адаптации для проектирования конкретных изделий в крупной САПР приводит к тому, что скорость проектирования специализированных изделий в них низкая.

Специализированные САПР являются ответом на указанные проблемы и перед программистом стоят два пути их создания. Первый – доработка крупной САПР с использованием предоставляемых API, плагинов и всевозможных скриптов. Этот подход не всегда оправдан, т.к. в результате стоимость САПР возрастает для пользователя (нужно платить как за большую САПР, так и за адаптацию), а требуемая квалификация инженера (а, следовательно, и затраты на его обучение и содержание) для работы с таким комбайном достаточно высоки. Второй путь – создание системы «с нуля». Этот путь, несомненно, значительно сложнее, т.к. огромный функционал нужно разработать с самого начала. Но несмотря на это он может оказаться значительно дешевле и удобнее в использовании для конечного пользователя, который и определяет успех продукта.
Читать дальше →

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

Авторизация/Регистрация пользователя через Telegram

Время на прочтение2 мин
Количество просмотров80K
В данном топике хочу описать дополнительный, а для некоторых сервисов возможно и основной способ авторизации и регистрации пользователя через Telegram, подобно OAuth авторизации через социальные сети и web-сервисы.

Допустим, у Вас есть некий сервис, который предлагает пользователям вход через Telegram. На странице авторизации пользователю предлагается ввести его Username в Telegram. После ввода Username, на аккаунт пользователя приходит сообщение с кодом подтверждения, который он вводит на странице авторизации.

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

API интерфейс для бесплатной АТС и телефонии

Время на прочтение6 мин
Количество просмотров35K
imageНесколько недель назад проект Zadarma опубликовал собственный API. Он позволяет интегрировать основные функции IP-телефонии и бесплатной облачной АТС.
Каждый может за считанные минуты создать бесплатную облачную АТС и подключить к ней интерфейс API, а через него уже интегрировать АТС со своими приложениями.
В статье публикуем список и описание методов, ссылки на классы и примеры, которые уже есть для работы (опубликованы PHP-классы). Нам крайне интересны ваши отзывы: для дальнейшего развития интерфейса API, интеграции с CRM и другими системами.

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

PHP библиотека для интеграции с API Новой Почты

Время на прочтение8 мин
Количество просмотров30K
Привет друзья.
Хочу поделиться PHP библиотекой (SDK) для интеграции с API 2 Новой Почты (НП). Но сначала несколько слов о Новой Почте.
Новая Почта является лидером экспресс-доставки и перевозки грузов по всей Украине. В Новой Почте много услуг, что делает ее лидером на украинском рынке перевозок. Склады есть во всех городах Украины, очень быстрая курьерская служба. Основные услуги, которые компания надает: доставка и возврат грузов в розничных сетях; доставка паллетированного груза; обратная доставка,; наложенный платёж за товар; вызов машины; хранение груза; упаковка груза, доставка груза по городу и прочее. Для упрощения создание ТТН можно использовать API компании, что даст возможность оптимизировать создания ТТН.

Возможности которые дает SDK:
  • Работа с адресами
  • Работа со справочниками
  • Работа с контрагентами
  • Методы для получения печатных форм документов
  • Работа с реестрами экспресс-накладных
  • Работа с экспресс-накладными:
    • создавать экспресс-накладные
    • редактировать данные в созданных экспресс-накладные (до передачи отправления)
    • удалять/отменять созданные экспресс-накладные (до передачи отправления)
    • загружать списки документов используя фильтры
    • отслеживать статусы отправления



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

Botan.io — экспериментальный инструмент аналитики ботов Telegram от Яндекса

Время на прочтение1 мин
Количество просмотров26K
Недавно мы в Яндексе сделали в качестве эксперимента несколько ботов для Telegram. И перед нами встал очевидный вопрос — как нам их измерять? Очень не хватало хорошей, простой и доступной системы аналитики.

Мы стали искать готовые системы, которые бы подошли для нашей цели. Для начала решили посмотреть на аналитику для мобильных приложений. В этой отрасли сейчас правят бал Flurry, Mixpanel и Localytics. После небольшого исследования стало ясно, что Flurry и Localytics созданы с упором на мобильное SDK и простого способа слать им события с сервера нет и не предвидится.

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



Не найдя ничего, что полностью бы нас устраивало, мы посмотрели на возможности нашей Метрики. И сделали собственный инструмент аналитики ботов — Botan. Это обёртка вокруг AppMetric, мобильной версии Метрики для приложений.

Теперь мы хотим поделиться нашим решением со всеми и сделали его бесплатным. Botan позволяет собирать события из ваших ботов в мобильную Яндекс.Метрику и строить большинство доступных там отчетов.
Читать дальше →

Социальный логин: cильные стороны

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


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

Интеграция социального логина не вызывает сложностей. Написано большое количество библиотек, которые реализуют протокол аутентификации, учитывают особенности реализаций специфичные для каждого из провайдеров, используют API провайдера для извлечения профиля пользователя и затем приводят его к установленному формату.

Решают ли библиотеки все задачи?
Читать дальше →

Правильный дизайн API: что такое «один», «много», «нуль» и «ничто»

Время на прочтение9 мин
Количество просмотров20K
Здравствуйте, наши постоянные и эпизодические читатели.

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

Приятного чтения
Читать дальше →

SolidWorks API (Delphi): подключение и получение дерева объекта

Время на прочтение3 мин
Количество просмотров13K
Вероятно, многие читатели слышали о программе SolidWorks (см. оф.сайт). В настоящей статье она нас интересует с точки зрения автоматизации разработки изделий (деталей и сборок) на этапе проектирования промышленного производства.

Постановка задачи аналогична описанной в статье Tekla Structure API (c#): подключение и получение дерева объектов, за исключением технологии реализации, — получить дерево объектов модели, т.е. сборки, которые входят в модель и детали, которые входят в сборки, их взаимосвязи и параметры.

Используемая система разработки — Borland Delphi 7.
Читать дальше →

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