Обновить
28.37

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

О создании API

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

Как быстро получить много данных от Битрикс24 через REST API

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

Нередко при работе с Bitrix24 REST API возникает необходимость быстро получить содержимое определенных полей всех элементов какого-то списка (например, лидов).

Традиционный способ для этого - обращение к серверу через метод *.list (например, crm.lead.list для лидов) с параметром select, перечисляющим список требуемых полей. При этом, чем больше полей вы запрашиваете, тем больше времени серверу требуется для формирования ответа. Плюс, в силу того, что информация сервером выдается постранично, получение всего списка через последовательные запросы всех страниц может занимать много времени.

Однако существует несколько стратегий для того, которые позволяют ускорить процесс на порядки.

И что это за стратегии?

Скрапинг современных веб-сайтов без headless-браузеров

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


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

Для его демонстрации вместо Selenium, Puppeteer или любого другого решения на основе безголовых браузеров мы просто используем запросы на Python. Я объясню, как можно скрапить информацию из публичных API, которые потребляет на фронтэнде большинство современных веб-сайтов.

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

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

Немного Web Speech API для современных веб-приложений

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

Ниже речь пойдет о технологиях работы с голосом в вебе, таких как распознавание и синтез речи. В статье не будет примеров кода или сложного технического описания, моя цель — показать вам возможности этих технологий и уровень их зрелости на примере простого приложения, которое было разработано в рамках изучения данной темы. Ознакомиться с кодом этого приложения вы можете на GitHub.

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

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

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

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

Читать далее

Преобразование текстовых запросов в SQL

Время на прочтение11 мин
Охват и читатели13K
Большинство разработчиков, когда-либо сталкивавшихся с NLP задачами, рано или поздно задумывались над проблемой, обозначенной в заголовке статьи. Решений подобного рода создавалось достаточное количество, каждое со своими особенностями, плюсами и минусами. Первое, с которым мы с коллегами встретились лет 10 назад, и ссылку на которое я не смог сейчас даже найти, было оформлено в виде абсолютно нечитаемой диссертации. Мы честно, шаг за шагом пытались прорваться сквозь ее страницы, но отчаялись и утратили интерес к данной тематике на несколько лет. Но, рано или поздно к этой проблеме возвращаешься. И в целом в индустрии интерес к данному вопросу уже не один раз разогревался и остывал, а в последние годы он снова на подъеме.

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

Нейротипология и нейромаркетинг будущего

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

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

Читать далее

Ещё 8 правил проектирования API

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

Используйте глобально уникальные идентификаторы. Клиент всегда должен знать полное состояние системы. Избегайте двойных отрицаний…

Читать далее

Поиск замены депозита в облигациях с учетом того, что с 1 января 2021 года все выплаты облагаются налогами

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели40K

Полгода назад, летом 2020 года я написал скрипт поиска ликвидных облигаций на Мосбирже (статья в закладках у 194 человек, рейтинг +45). Скрипт нужен для поиска облигаций, которые можно купить прямо сейчас с доходностью гораздо выше банковского вклада.

Сейчас, в начале 2021 года модифицировал прошлогодний скрипт, потому что проценты по вкладам так и остаются на очень низких уровнях, а с началом 2021 года ещё и изменения в налоговом кодексе РФ подоспели. 

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

Облигации как замена вклада в 2021 году

Botsman: новая платформа для разработки Telegram-ботов

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

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

Для тех же, кому уже захотелось ознакомиться с Botsman (но не очень хочется много читать) — вот ссылка, милости прошу: https://bots.mn/. Главное, о чём стоит помнить — платформа только-только запустилась, и (пока что) не стоит переносить на неё что-то серьёзное и масштабное.

Читать далее

Поддержание обратной совместимости: о ватерлинии айсберга

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

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

1. Предоставляйте минимальный объём функциональности

В любой момент времени ваше API подобно айсбергу: у него есть видимая (документированная) часть и невидимая — недокументированная. В хорошем API эти две части соотносятся друг с другом примерно как надводная и подводная часть настоящего айсберга, 1 к 10. Почему так? Из двух очевидных соображений.

Читать далее

Насколько точной может быть IP-геолокация?

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

Технология IP-геолокации существует уже давно. Это единственный ненавязчивый инструмент, который поставщик услуг может использовать для оценки географического положения онлайн-посетителей.

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

Но насколько точна IP-геолокация? Можем ли мы доверить ей принятие важных бизнес-решений?

Точность IP-геолокации была одной из часто обсуждаемых тем на протяжении многих лет на многих платформах. Мы можем найти множество жалоб на форумах, например, о том, что IP-адреса не показывают правильное местоположение или достоверны только данные на уровне страны.

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

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

Целью этой статьи не является сравнение различных провайдеров геолокации IP. Но это будет скоро, следите за обновлениями!

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

IPv4 - это надолго

Когда мы говорим о геолокации IP, мы в первую очередь рассматриваем адресное пространство IPv4, так как большая часть нашего веб-трафика все еще идет с адресов IPv4.

IPv6 был создан, чтобы решить глобальную нехватку адресного пространства IPv4, предоставив колоссальное расширение аж на 2128 адресов. Однако этого не произошло, хотя с момента его введения прошло два десятилетия.

Читать далее

Яндекс.Карты API, я устал. Я ухожу

Время на прочтение3 мин
Охват и читатели83K
О последней и других каплях в чаше решения о прекращении использования Яндекс.Карты API.

Что случилось?


С 1 ноября Яндекс.Карты уменьшили лимиты на бесплатное использование HTTP API Геокодера с 25 000 до 1 000 запросов в сутки. Но не всех об этом уведомили.
Читать дальше →

Конструктор Lego и объектно-ориентированное программирование в Tcl. Разбор сертификата x509.v3

Время на прочтение31 мин
Охват и читатели3.3K
imageЧасто приходится слышать, что скриптовому языку Tcl не хватает поддержки объектно-ориентированного стиля программирования. Сам я до последнего времени мало прибегал к объектно-ориентированному программированию (ООП), тем более в среде Tcl. Но за Tcl стало обидно. Я решил разобраться. И оказалось, что практически с момента появления Tcl, появилась и возможность объектно-ориентированного программирования в его среде. Всё «неудобство» заключалось в необходимости подключить пакет с поддержкой ООП. А таких пакетом было и есть несколько, как говорится на любой вкус. Это и Incr Tcl, Snit и XoTcl.

Программисты, привыкшие к языку C++, чувствуют себя как дома, программируя в среде Incr Tcl. Это было одним из первых широко используемых расширений для OOП на основе Tcl.

Пакет Snit в основном используется при построении Tk-виджетов, а XoTcl и его преемник nx предназначались для исследования динамического объектно-ориентированного программирования.

Обобщение опыта, полученного при использовании этих систем, позволило внедрить ООП в ядро Tcl начиная с версии 8.6. Так появился TclOO — Tcl Object Oriented.

Сразу отметим, что Tcl не просто поддерживает объектно-ориентированное программирование, а в полном смысле динамическое объектно-ориентированное программирование.
Читать дальше →

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

Постановка проблемы обратной совместимости

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

Как обычно, дадим смысловой определение «обратной совместимости», прежде чем начинать изложение.


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

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

Проектируем интенты с Apache NlpCraft

Время на прочтение8 мин
Охват и читатели1.1K
В данной заметке я продолжу знакомить читателей с возможностями проекта Apache NlpCraft. Первая заметка была посвящена краткому описанию ключевых особенностей системы, следующая — обзору стандартных NER компонентов. Данная статья посвящена вопросу проектирования интентов при построении диалоговых систем.

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

Проблема статус-кодов HTTP

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

Ситуацию с использованием кодов ответов HTTP можно заносить в палату мер и весов: вот что происходит, когда благие намерения разработчиков спецификации сталкиваются с жестокой реальностью. Даже с двумя жестокими реальностями.


Как мы обсудили в Главе 10, одна из целей существования семантических ошибок — помочь клиенту понять, что стало причиной ошибки. При разработке спецификации HTTP (в частности, RFC 7231) эта цель очевидно была одной из главных. Более того, архитектурные ограничения REST, как их описал Фьелдинг в своей диссертации, предполагают, что не только клиенты должны понимать семантику ошибки, но и все сетевые агенты (прокси) между клиентом и сервером в «многослойной» архитектуре. И, в соответствии с этим, номенклатура статус-кодов HTTP действительно весьма подробно описывает почти любые проблемы, которые могут случиться с HTTP-запросом: недопустимые значения Accept-*-заголовков, отсутствующий Content-Length, неподдерживаемый HTTP-метод, слишком длинный URI и так далее.

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

До свидания, Google Fonts. Последний аргумент

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


Шрифты Google Fonts страшно популярны. Их загружают более 42,8 миллиона сайтов, в том числе Хабр. Библиотека Google Fonts содержит 1023 свободных шрифта и программные интерфейсы для их внедрения через CSS. Очень удобно, казалось бы.

Во многих статьях отмечалось, в какую цену обходятся многочисленные запросы через API. Совет самостоятельно хостить шрифты дают много лет. Даже сама Google давала такой совет на конференции Google I/O 2018 года в выступлении на тему веб-производительности.

Так почему же многие до сих пор загружают шрифты через Google Fonts API? Ну, был последний аргумент — кэширование. Мол, благодаря общему CDN пользователю не нужно скачивать шрифт заново с каждого сайта. Однако в октябре 2020 года этот аргумент перестал работать. Теперь шрифты Google Fonts больше не кэшируются!
Читать дальше →

Real Time API в контексте Apache Kafka

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

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

События (Events) предлагают подход в стиле принципа Златовласки, в котором API реального времени (real-time APIs) могут использоваться в качестве основы для приложений, которые являются гибкими, но в то же время высокопроизводительными; слабосвязанными, но эффективными.

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

Читать далее

Notion API выйдет весной, но пользоваться им можно уже сейчас

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


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

Новый продукт как результат карьерных изменений сотрудника

Время на прочтение7 мин
Охват и читатели2.8K
Всем привет! Меня зовут Максим, и я владелец продукта в ООО «КОРУС Консалтинг СНГ» (СберКорус).

В статье расскажу, как желание сотрудника техподдержки ускорить обработку входящих обращений привело к карьерному росту, смене вида деятельности, а, главное, — к созданию нового продукта! Но обо всём по порядку.

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

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