Как стать автором
Обновить
71.21

API *

Интерфейс программирования приложений

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

Добавили бота в свой Telegram канал? Будьте готовы с ним попрощаться

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 8.5K
Аналитика

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

Читать далее
Всего голосов 31: ↑28 и ↓3 +25
Комментарии 17

Новости

Как добавить несколько товаров в Shopify корзину одним кликом?

Уровень сложности Средний
Время на прочтение 2 мин
Количество просмотров 852
Туториал

Недавно я писал конфигуратор в Shopify и решил поделиться тем, как добавить несколько товаров в Шопифай корзину. Прикрепляю скринкаст того, что можно сделать при помощи этого. Но применений довольно много, не только конфигуратор, например...

Читать далее
Рейтинг 0
Комментарии 2

PyTriton inference server c Gradio: быстро и просто делаем демо для ML-проектов

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 1.3K

Рассмотрим то как можно в одиночку быстро создать сервер и UI для ML приложения на Python с перспективой вывода в prod. Исследуем PyTriton и немного Gradio.

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 0

Как мы сделали настоящий хакатон. Такой, каким он должен быть

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 583
Обзор

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

Два года назад мы запустили первый хакатон. Через год — второй. Третий — стартует 1 октября. В этой статье я и моя коллега — Камилла Куликова, архитектор платформы API ВТБ, расскажем, как мы на сей раз наконец-то сделали всё именно так, как нужно, почему мы не боимся давать очень сложные задачи, как у нас профессиональных хакатонистов иногда обходят те, от кого этого совсем не ожидали, и что получает от этого всего наш банк и рынок в целом.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 0

Книга завершена [SDK & UI-библиотеки] Вычисляемые свойства. Заключение

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 909

Это главы 47-48 раздела «SDK и UI-библиотеки» моей книги «API». На этом второе издание книги завершено, все шесть разделов готовы. Если эта работа была для вас полезна, пожалуйста, оцените книгу на GitHub, Amazon или GoodReads. English version on Substack.

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

Пусть у нас имеется кнопка, которая получает одно и то же свойство iconUrl по двум вертикалям — из данных [т.е., в случае нашего примера, из результатов поиска предложений] и из настроек отображения:

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 2

Автоматизация тестирования голосового чат-бота в Google DialogFlow на Python

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 1.4K

Ещё на этапе собеседования в текущую команду передо мной поставили вопрос:

Применима ли автоматизация тестирования при проверке функционала чат‑ботов?

Я ответил "Да по-любому", и пошел изучать вопрос.

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 0

API для создания рандомных аватаров пользователей

Уровень сложности Простой
Время на прочтение 1 мин
Количество просмотров 1.8K
Обзор

Аватарки популярны на многих сайтах и позволяют украсить профиль не используя свою реальную фотографию. В статье рассмотрим простые и доступные API для генерации аватарок на свой сайт.

Читать далее
Всего голосов 6: ↑1 и ↓5 -4
Комментарии 5

[SDK и UI-библиотеки] Разделяемые ресурсы и асинхронные блокировки

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 490

Это глава 46 раздела «SDK и UI-библиотеки» моей книги «API». Второе издание книги будет содержать три новых раздела: «Паттерны API», «HTTP API и REST», «SDK и UI‑библиотеки». Если эта работа была для вас полезна, пожалуйста, оцените книгу на GitHub, Amazon или GoodReads. English version on Substack.

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

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 0

Подружим Sentry и Mattermost быстро и просто через адаптер

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 923
Туториал

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

Вот 4 простеньких шага для решения этой проблемы...

Читать далее
Рейтинг 0
Комментарии 3

Добавляем номер в чёрный список с помощью API

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

Привет, Хабр! Меня зовут Анастасия Иванова, я технический писатель МТС Exolve. В этой статье я расскажу, как можно реализовать автоматическое добавление номеров в чёрный список после нескольких входящих звонков в веб-приложении на NodeJS.

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 1

Расширенная настройка бэкэнд-проекта Python ( пример FastAPI )

Уровень сложности Средний
Время на прочтение 12 мин
Количество просмотров 7.6K
Туториал

👋 Привет! Возможно, вы что-то знаете о Python, если вы здесь. Особенно о веб-фреймворках Python. Например, есть одна вещь, которая меня очень раздражает при использовании Django: наложение слоя структуры проекта.

Вы можете спросить, почему это проблема, верно? Потому что вы просто следуете официальной документации, а затем у вас просто есть код, который понимает каждый, кто читает эту документацию.

Но как только вы начнете писать «лучшие» приложения, вы освоите другие шаблоны проектирования мирового класса, такие как DDD и его многоуровневая архитектура, и через некоторое время вы еще больше усложните свою систему с помощью CQRS. Лично мне стало труднее поддерживать базу кода, следуя всем этим принципам, когда фреймворк является ЦЕНТРАЛЬНОЙ частью всего приложения. Из него даже выйти невозможно, если через какое-то время решишь сменить фреймворк…

✅В этой статье я постараюсь поднять вопрос, а затем решить его.

🤚 Отказ от ответственности: давайте ограничим проект серверного API интернет-рынком.

Читать далее
Всего голосов 10: ↑7 и ↓3 +4
Комментарии 6

Почему мой любимый API — это файл zip на сайте Европейского центрального банка

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 28K
Обзор
Перевод

Когда был максимальный курс доллара к евро?

Вот небольшая программа, вычисляющая это:

curl -s https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.zip \ | gunzip \ | sqlite3 -csv ':memory:' '.import /dev/stdin stdin' \ "select Date from stdin order by USD asc limit 1;"

Результат: 2000-10-26. (Можете попробовать запустить её самостоятельно.)

Читать далее
Всего голосов 104: ↑90 и ↓14 +76
Комментарии 26

Ожидания в вакансии QA Engineer: Знакомство с JSON, REST и Типами запросов

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 8.4K
Recovery Mode

Одним из таких ключевых ожиданий со стороны работодателей является знание JSON, REST и типов запросов HTTP. В этой статье мы рассмотрим, почему это важно и какие преимущества это приносит как для специалистов, так и для компаний.

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Комментарии 0

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

Битва пет-проектов
Дата 25 сентября – 30 ноября
Место Онлайн
PG Boot Camp Russia 2023
Дата 5 октября
Время 10:00 – 17:00
Место Москва Онлайн
Joker
Дата 9 – 14 октября
Время 16:00 – 19:30
Место Санкт-Петербург Онлайн
Открытый урок «Kafka Streams»
Дата 16 октября
Время 10:00
Место Онлайн
Питч-сессия pravo (tech) impulse
Дата 19 октября
Время 15:45 – 17:30
Место Москва
Russia Risk Conference 2023 — 19-я конференция по риск-менеджменту
Дата 25 – 26 октября
Время 10:00 – 19:00
Место Москва Онлайн
Онлайн IT HR-конференция HR42
Дата 17 – 18 ноября
Время 10:00 – 14:00
Место Онлайн
HighLoad++ 2023
Дата 27 – 28 ноября
Время 9:00 – 20:00
Место Москва Онлайн

Простые инструменты для пайплайнов: sqlite, pandas, gnuplot и другие

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 8.3K
Туториал
Перевод

Почему мой любимый API — это zip-файл на сайте Европейского центрального банка?

Когда доллар был самым высоким по отношению к евро?

Вот небольшая программа, которая это вычисляет:

Открыть терминал
Всего голосов 52: ↑51 и ↓1 +50
Комментарии 5

[SDK и UI-библиотеки] Backend-Driven UI

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 1.4K

Это глава 46 раздела «SDK и UI-библиотеки» моей книги «API». Второе издание книги будет содержать три новых раздела: «Паттерны API», «HTTP API и REST», «SDK и UI‑библиотеки». Если эта работа была для вас полезна, пожалуйста, оцените книгу на GitHub, Amazon или GoodReads. English version on Substack.

В предыдущей главе мы обсудили, каким образом можно упростить разработку сложных компонентов с использованием паттерна «модель». Другой способ обойти сложность «переброса мостов» между несколькими предметными областями, которые нам приходится сводить в рамках одного UI-компонента — это убрать одну из них. Как правило, речь идёт о бизнес-логике: мы можем разработать компоненты полностью абстрактными, и скрыть все трансляции UI-событий в полезные действия вне контроля разработчика.

В такой парадигме код поиска предложений выглядел бы так:

Читать далее
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 8

Использование kafka-rest для построения интеграционных API

Уровень сложности Простой
Время на прочтение 12 мин
Количество просмотров 4.5K
Кейс

Есть простая, можно сказать, типовая – задача, передать данные из системы «А» в систему «Б». А – классическая legacy-трехзвенка из 00х с IIS-MSSQL, «Б» - новая-нулевая-микросервисная с внутренней шиной на apache kafka и собственным ETL на Apache NiFi, развернута в k8s. Направление передачи – из «А» в «Б», по расписанию , в общем ничего сложного – «Работенка на 5 минут»: идем в NiFi делаем QueryDatabaseTable->PublishKafkaRecord и продолжаем спать – но тут начинаются «Нюансы»(ТМ) в виде ИБ, которая говорит, что прямая интеграция корпоративных систем – харам, архитектуры которой (дикие люди!) не нравится хождение в чужую БД (Подержи моё пиво! Я сто раз так делал!) и прочих скучных регламентов, требующих «наличия аутентификации», «направления установления соединения совпадающего с направлением передачи» и тому подобных глупостей.

И вот тут на сцену выходит корпоративная интеграционная шина – (low|no)-code решение, которое умеет в расписания, подключение к ИС по различным протоколам (в том числе и *dbc), передачу данных с помощью REST\SOAP, аутентификацию, обработку ошибок, алертинг и кучу других вещей. Оооок, шина по расписанию будет ходить в БэДэ (Или не БэДэ – там уже видно будет), забирать данные и передавать… А куда, собственно, передавать?

Первый вариант – «в kafka’у!» хорош примерно всем – кроме реализации. Собственно, бинарный протокол kafka’и шина не умеет, ИБ не умеет в инспекцию этого самого протокола, ingress-nginx контроллер не умеет (Нормально – не умеет, ssl-passthrough в данном случае не очень-то «нормально») в публикацию kafka’и, а согласовывать с ИБ публикацию брокеров через LB – удачи, пацаны. Плюс нормальная аутентификация\авторизация на kafka’е – тот еще геморрой между нами говоря. Отметаем.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 2

«Oh no! code» или как создать голосового помощника без единой строчки кода с помощью VoiceBox

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 1.5K
Кейс

В последнее время на меня практически из каждого утюга льется реклама различных курсов по no-code разработке, в которой радостно рассказывают, что программировать скоро сможет каждый и это светлое будущее человечества. Но так получилось, что я хоть и не разработчик, но свой путь к азам программирования начал с учебника по Turbo Pascal 7. Поэтому на no-code я смотрю с некоторым подозрением. 

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

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 0

7 аргументов почему UUID лучше, чем автоинкрементные идентификаторы

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 18K

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

Читать далее
Всего голосов 34: ↑22 и ↓12 +10
Комментарии 90

Как банки становятся IT-компаниями с финансовыми сервисами: путь от SOAP к REST

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 2.3K
Обзор

Всем привет! Я Сергей Паршиков. С 2004 года работаю с digital-сервисами. Начинал с собственной дизайн-студии, был Product Owner в Яндексе и Mail (теперь VK), создавал B2B-экосистему Сбера: от ID и API до запуска и монетизации околобанковских сервисов. Сейчас развиваю digital-каналы (web, mobile, API) для юридических лиц в Альфе. Увлекаюсь Web3 инфраструктурой, которая крайне привлекает меня технологичностью, динамикой и сохраняющимся духом digital-пиратства. 

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

Читать далее
Всего голосов 19: ↑16 и ↓3 +13
Комментарии 1

[SDK и UI-библиотеки] MV*-фреймворки

Уровень сложности Сложный
Время на прочтение 6 мин
Количество просмотров 793

Это глава 44 раздела «SDK и UI-библиотеки» моей книги «API». Второе издание книги будет содержать три новых раздела: «Паттерны API», «HTTP API и REST», «SDK и UI‑библиотеки». Если эта работа была для вас полезна, пожалуйста, оцените книгу на GitHub, Amazon или GoodReads. English version on Substack.

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

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

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