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

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

О создании API

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

10 лет «на коленке» и вынужденная эволюция — на заметку молодым

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

Здравствуйте, присаживайтесь


Все мы, здесь собравшиеся, регулярно что-то пробуем, экспериментируем, зачастую в контексте «а дай попробую». На выходе получаем эдакий промежуточный результат в виде чего-то функционирующего, но не пригодного для использования в деле. По крайней мере без доведения до ума, о чем и пойдет речь в статье, в завершении которой речь дойдет до полноценного API и связанные воедино утилит, сопровождающих жизнь автора на более промышленном уровне.

В преддверии 28-летия решил непременно затронуть эту тему с оглядкой уже теперь на 10 лет опыта, вспоминая о всех набитых шишках. Тема удостоена внимания ввиду огромного количества времени, которое мы тратим на свое обучение, результат которого зачастую не используем, а ведь можем!

Делай так, чтобы не краснеть завтра


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

Киски: Рефакторинг

Время на прочтение6 мин
Количество просмотров17K
imageДобрый день, Хабровчане!

Продолжаю совмещать развитие навыков перевода c английского и изучение интересных, с моей точки зрения, материалов по программированию и делюсь с вами слегка адаптированным переводом первой части из небольшого цикла статей про рефакторинг от голландца Matthias Noback, который живет в городе Зейст что вблизи Утрехта.

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

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

Защита PHP скрипта путям привязки к доменному имени

Время на прочтение4 мин
Количество просмотров14K
Думаю, многие сталкивались с тем, что иногда необходимо защитить ваш скрипт от копирования, и вы использовали разные Ioncube, PHPLockit, но многим неудобно каждый раз кодировать. Понимаю, что в Ioncube есть такая штука, благодаря которой можно генерировать ключи безопасности и т.д., но многим невыгодно покупать или же пользоваться чужими услугами, а то мало ли, все бывает.

Некоторым хочется кодировать не весь код, а лишь его часть, и для этого многие используют такой «массив» для защиты:

$_SERVER['HTTP_HOST']

Но его легко обойти:

$_SERVER['HTTP_HOST']='разрешенный домен';

Поэтому есть решение данной проблемы, и её может решить любой человек с начальным знанием PHP, MySQL.
Читать дальше →

Кэширование в Android, Telegram для групп, улучшение callback, multicast, showlist и другие нововведения

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


Достаточно крупное обновление исправляющее ошибки в андроид клиенте, улучшение безопасности получения ID пользователя, рассылка одного пуша на группу пользователей в канале, а также API для работы со списками пользователей.
Сегодня в рубрике:
  1. Используем PushAll и Telegram при разработке в команде
  2. Иконки сожрали мой трафик — помогите!
  3. Почему я вижу лишь их кусок?
  4. Эмоджи убийцы!
  5. Как объединить тысячу итераций отправки уведомлений в одну (multicast)
  6. Воруем личные дан Получаем список пользователей, подписанных на канал
  7. Подписываемся на пуш уведомления ваших друзей (уязвимость)
  8. Не ждем отправки всех уведомлений, выполняем все в фоне.

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

Мечты об идеальном API или как преодолевались сложности в проекте AdHands

Время на прочтение8 мин
Количество просмотров6K
Пользователи привыкли к принципу одного устройства и одного интерфейса. Этот тренд находит отражение и в бизнесе: многофункциональные корпоративные системы и порталы, единые площадки торговли и закупок, т.д. Онлайн-реклама не осталась в стороне – разрабатываются сервисы, нацеленные на значительную оптимизацию труда рекламодателей и рекламных агентств. И одним из серьёзных технических моментов при создании дашбордов и агрегаторов статистики остаётся работа с API – программным интерфейсом, через который происходит обмен данными между системами. Существует ли API мечты, как его создать и зачем он нужен?


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

Подписываем данные: HMAC на практике в API и Web-формах

Время на прочтение8 мин
Количество просмотров77K
HMAC (сокращение от англ. hash-based message authentication code, код проверки подлинности сообщений, использующий односторонние хеш-функции) — в криптографии, один из механизмов проверки целостности информации, позволяющий гарантировать то, что данные, передаваемые или хранящиеся в ненадёжной среде, не были изменены посторонними лицами (атака типа «man in the middle»).

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

Что новые версии UEFI-стандартов нам готовят, часть третья, UEFI 2.5

Время на прочтение6 мин
Количество просмотров24K
В последней части цикла я постараюсь рассказать о новшествах стандарта UEFI 2.5, первые реализации которого должны появиться примерно через полгода на новых платах с процессорами Intel Skylake и AMD R-Series. В первой и второй частях речь шла о более низкоуровневых (и потому менее интересных неспециалистам) стандартах PI 1.4 и ACPI 6.0, здесь же поговорим об изменениях, напрямую влияющих на работу ОС и возможности загрузки по сети. Если вы хотите узнать, что нового в UEFI 2.5, почему PXE уходит в прошлое и зачем UEFI поддержка WiFi и Bluetooth — искренне прошу под кат.
Читать дальше →

Анализ тональности в социальных медиа на русском языке при помощи RussianSentimentAnalyzer API

Время на прочтение2 мин
Количество просмотров11K
В этом посте я покажу, как воспользоваться API анализа тональности в социальных медиа на русском языке. Одной из отличительных фич системы является возможность определять тональность по отношению к заданному объекту мониторинга. Проиллюстрирую на примере:

Мне нравится телефон X, но телефон Y ужасен.

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

Tekla Structure API (c#): подключение и получение дерева объектов

Время на прочтение4 мин
Количество просмотров19K
Tekla Structure (см. оф.сайт) — система, автоматизирующая процесс проектирования зданий. При использовании её в больших компаниях естественным является желание интегрировать Tekl'у в уже существующую систему управления предприятием.

Итак, первая задача — получить дерево объектов модели. Дерево должно иметь следующий вид — модель -> сборки (Assembly), из которых состоит модель -> детали, из которых состоят сборки (Part). Дерево объектов должно быть получено из существующих чертежей, т.е. разбирать модель мы будем через призму списка чертежей (звучит малопонятно, но по ходу статьи все станет ясно).

Используемая система разработки Visual Studio 2013 Community, язык c#.
Читать дальше →

Мультизагрузка в wysiwyg редакторе

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


Суть вот в чем, есть редактор (для примера: imperavi.com/redactor) и есть необходимость загружать сразу много картинок за один раз. В идеале простым перетаскиванием, а в нашем случае редактор кушает только одну картинку за раз. Это нужно поправить.

Покопавшись в api редактора и не найдя ничего про мультизагрузку, я начал думать, как решить эту проблему, не прибегая к каким-то глобальным разработкам вроде написания плагина с нуля. Это займет много времени и усилий, к тому же время поджимало и сделать нужно до вечера.
Читать дальше →

О тонкостях приватности в Telegram Bots API: «это не баг, это фича»

Время на прочтение2 мин
Количество просмотров51K
imageНеделю назад в мессенджере Telegram был запущен Bots API — платформа для создания ботов. Платформа пусть немного сыроватая, слегка костыльная, но тем не менее интересная — как для пользователей, так и для разработчиков, которые тут же ринулись писать (и портировать) разнообразных ботов. Но, как оказалось, в API есть как минимум одна особенность, которая может показаться довольно неожиданной (и даже неприятной) для конечных пользователей.

Сразу оговорюсь: данная заметка не является очередным нападком на защищенность Телеграма. Более того, учитывая дружеские отношения с некоторыми из разработчиков мессенджера, писать статью не особенно хотелось. Но предостеречь тех, кто планирует создавать и, главное, пользоваться ботами в Telegram, мне показалось важным. «Платон мне друг, но истина дороже».

Сначала вкратце для рядовых пользователей. Если вы отправляете какому-то боту в Телеграме фотографию (рассчитывая, что бот потом эту фотографию отправит другому человеку), — помните, что конечный получатель фото (при желании) легко сможет узнать ваше имя/фото/юзернейм (и сможет связаться с вами напрямую). Даже если бот предполагает приватность и анонимность. Этот интересный аспект крайне неочевиден даже для самих создателей ботов. И они (пока что!) ничего не могут с этим сделать. Строго говоря, это касается не только фотографий (а почти всех видов прикреплений), но увидеть ваш профиль в других случаях несколько сложнее.

В том числе этому подвержен приведенный в качестве примера в описании новой платформы @HotOrBot. В этом «аналоге Тиндера» можно легко подсматривать аккаунты тех, чьи фото вам предлагают оценить (и, собственно, писать им — даже если они ещё не ответили вам взаимностью).
Читать дальше →

Push-уведомления через Telegram

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


25 июня Telegram открыл платформу для ботов. Первая моя мысль была — ведь можно слать через него уведомления! При помощи уведомлений через телеграм можно решить сразу несколько проблем, хотя бы частично:
  • Поддержка iOS
  • Поддержка Windows Phone
  • Получение уведомлений без установки лишних приложений

Таким образом, PushAll теперь может отправлять уведомления на устройства Android, Chrome и в Telegram через бота.



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

Бесплатное распознавание речи от российской компании Стэл

Время на прочтение6 мин
Количество просмотров13K
Когда возникает необходимость превратить звуковой файл с речью в текст, первыми на ум приходят решения Гугла и Яндекса. Но, кроме Яндекса, есть ещё одна отечественная компания — «Стэл» (http://speech.stel.ru/), API которой поддерживает «over 9000» и даже «очень очень много» запросов в день, а пробные ключи Stel раздает бесплатно.

image

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

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

Яндекс-Перевод в терминале через Java

Время на прочтение3 мин
Количество просмотров22K
Используя API переводчика написал для себя простую программу для перевода слов и фраз, и чтобы из любого места работало. Хотел использовать curl, но непонятно почему получал ошибку что такого языка нет.

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

Отслеживаем состояние Push-уведомлений и новости проекта + UPD RSS

Время на прочтение4 мин
Количество просмотров5.7K
За последние несколько дней в PushAll был реализован функционал отслеживания состояния уведомления и получения ленты канала, которым вы владеете.

Что это нам дает? Теперь, если у вас на сайте есть отправка уведомлений через SMS, вы можете делать так:
  1. Отправляем Push
  2. Через 30-50 секунд проверяем, пришло ли пользователю уведомление, отреагировал ли он на него
  3. Если не пришло, шлем ему SMS, звоним, шлем на почту и т.д.

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

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

Немного о юнит-тестировании и внешних API в PHP

Время на прочтение6 мин
Количество просмотров15K
Юнит-тестирование — одна из неотъемлемых частей процесса разработки, и оно становится сложнее и противоречивее, если основная задача Вашего кода — отправлять запросы ко внешним API и обрабатывать ответы. Немало копий сломано о тему, каким должно быть тестирование кода, завязанного на внешних источниках, и где проходит грань между тестированием собственного кода и чужих API.

На этом этапе разработчикам приходится решить, какие запросы отправлять на удалённый сервер, а какие симулировать локально. Существует немало решений как для отправки запросов, так и для их симуляции. В своём посте я расскажу, как сделать и то, и другое на базе HTTP клиента Guzzle.


Упростить себе жизнь

GrabDuck: интеграция со StackOverflow через StackExchange API

Время на прочтение10 мин
Количество просмотров5.9K
Приветствую читатель,
сегодня мы посмотрим как можно использовать StackExchange API для того, чтобы получать данные с сайтов этого семейства, например таких, как StackOverflow. Также, мы рассмотрим, какие возможности существуют для продвижения приложений/сайтов, использующих данное API на StackExchange и, в завершение, покажем как выглядит интеграция с SO у нас на GrabDuck.



Заинтересовало? Просим под кат.

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

Миссия AllMyChanges

Время на прочтение3 мин
Количество просмотров4K
Когда наш проект только зарождался, он базировался на гипотезе, что почти для любой библиотеки можно найти changelog, а если найти нельзя, то можно построить его из коммит-мессаджей. Но реальность оказалась не столь радужной, как нам того хотелось: то файл changelog в каком нибудь безобразном формате попадётся, то его перестали вести, а продукт меж тем развивается, то что нибудь ещё. И тогда мы поняли, что распарсить мир – мало, надо его менять.

Изменить что-то за один миг — необычайно сложная задача


Поэтому мы не ставим себе такую цель. Миссия AllMyChanges в том, чтобы дать разработчикам всего мира понять, что ChangeLog это их способ взаимодействия с внешним миром, такой же канал, как блог или твиттер-аккаунт.

Mr. Speaker

До появления нашего сервиса, сложно было сравнивать простой ChangeLog с блогом, поскольку не было способа подписаться на обновления. Ведь ссылку на rss фид блога можно закинуть в rss читалку, на соцпрофиль можно подписаться, зафолловив человека, а подписаться на изменения библиотеки было сложно.
хмм, что же там дальше?

Как мы сделали из JSON язык программирования

Время на прочтение4 мин
Количество просмотров22K
Спустя месяцы напряжённой работы мы наконец выпустили приложение для iOS Relevant. С ним мы ломаем существующие устои взаимодействия с сервисами и контентом в сети, благодаря чему пользователь тратит куда меньше времени на привычные вещи. Достигается это путём представления приложений и веб-сервисов в виде карточек (подробнее здесь).

Карточки, как независимые интерактивные единицы, показывают, каким будет будущее мобильных интерфейсов.
image
Читать дальше →

Как работает API нашего IaaS-провайдера

Время на прочтение3 мин
Количество просмотров7.2K
Сегодня мы поговорим о практических кейсах, в рамках которых используется API нашего IaaS-провайдера 1cloud. Его основная задача — обеспечение интеграции клиентских приложений и нашей ИТ-инфраструктуры.

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

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