Всем привет, меня зовут Дмитрий Гаевский, я руковожу созданием внутренней платформы для разработчиков в Тинькофф. Последние два года стали знаковыми для российской ИТ-отрасли с точки зрения «распаковки» тем о таких платформах. Крупные технологические компании начали делиться опытом, и сегодня я расскажу о нашем кейсе.
API *
Интерфейс программирования приложений
Новости
На что бизнесу обращать внимание при проверке контрагентов: 13 показателей
Почти четверть компаний считались убыточными по итогам 2021 года, а более 8 тыс. юридических лиц из 3,2 млн в России на момент написания статьи находятся в реестре недобросовестных поставщиков. Недобросовестность партнеров может обернуться для компании не только финансовыми и налоговыми рисками, но и репутационными. Чтобы избежать или уменьшить риски, бизнес проверяет информацию о контрагентах в открытых источниках, собирает отзывы у коллег, которые уже работали с потенциальным партнером. Если проверять приходится много и часто, компании пользуются сервисами проверки контрагентов (СПК).
Конструктор триггеров в Telegram. Или как мы сделали простейшего, но полезного бота
Привет! Меня зовут Боровков Евгений и я предприниматель. В этой статье я расскажу про свой pet-проект. Или как я решил проблему вечного поиска информации прямо в уютном Телеграммчике.
Архитектура универсального проекта Django
В ходе последних лет моей разработки проектов Django я понял, что почти все они имеют одно строение:
API, Apps, Config, Library, Utils, Workers...
В статье, помимо схемы архитектуры проекта Django, которую я использую в реальных промышленных проектах, подробно расскажу как этого достичь, чтобы все работало.
Управление облаком с помощью API и CLI. Основы
В этой статье объясняем, зачем нужны инструменты автоматизации API и CLI и как с их помощью управлять инфраструктурой на примере Serverspace.
Как оставаться программистом, если у тебя память как у дрозофилы
Мой мадригал тем инструментам разработки, которые изменили мою жизнь
Программирование стало гораздо более многогранным ремеслом с тех пор, как в середине 1990-х я впервые попробовал AmigaBASIC. В те времена еще можно было купить один большой том о компьютере, на котором вы программируете – и там бы нашлось 99% всей нужной информации. Эта книга, где на множестве страниц уголки загнуты в качестве закладок, обклеенная стикерами, лежала бы у вас под рукой, пока вы вбивали бы команды в монохромный текстовый редактор.
Современная книга по клиентскому веб-фреймворку может быть толще, чем во времена программирования под C64 бывали мануалы, достаточные для создания полноценных игр. С другой стороны, сегодня информация по любым платформам, для которых требуется писать код, находится буквально в одном клике.
Сегодня никто бы больше и не подумал покупать документацию по разработке – и Microsoft, и Apple свободно выкладывают свою документацию в Интернете для всех желающих. А что говорить о проектах с открытым исходным кодом!
Во времена npm, PyPI и GitHub сложно объяснить, насколько неоднозначным решением (которое требовалось всесторонне обдумывать) раньше считалось потребовать хоть какие-нибудь возможности, которые выходили бы за рамки функционала операционной системы. Часто вместе с продуктом приходилось сдавать и все его зависимости.
Безопасный Spring REST с применением Spring Security и OAuth2
В этой статье мы продемонстрируем пример настройки Spring Security + OAuth2 для защиты конечных точек REST API на фреймворке Spring Boot. Клиенты и учетные данные пользователей будут храниться в реляционной базе данных (для баз данных H2 и PostgreSQL подготовлены примеры конфигураций).
Основное про API-шлюз в Kubernetes
Существует множество альтернатив для доступа к модулю извне кластера. Шлюз API - это определенно новинка этой области, и потому выбран темой этой статьи.
Ранее мы описывали несколько способов доступа к модулям Kubernetes. Так, например, доступ к модулю pods можно получить через его IP-адрес, но важно учитывать, что поды по своей сути являются временными. Штатный способ - настроить Service: в этом случае IP-адрес стабилен, а задача Kubernetes - обеспечивать мапироание между Service и соответствующими ей подами. В настоящий момент доступны различные виды сервисов: только внутренние, NodePort, позволяющий открыть доступа извне кластера, и LoadBalancer, который полагается на сторонний компонент - обычно это на облачный провайдер. Не будем забывать и об Ingress, обеспечивающем маршрутизацию.
Ну а API-шлюз, как новинку в этой области, мы оставили на десерт, решив посвятить ему целый пост.
Интеграция с маркетплейсами или как я научился не волноваться и полюбил API-интеграцию
В нашей компании принято устраивать звонки-знакомства — на них клиенты могут напрямую пообщаться с командами, которые будут им помогать или сопровождать. Во время таких встреч поднимается множество вопросов, в том числе связанных с интеграцией. Чаще всего вопросы одни и те же, поэтому я даже имею заготовленный спич, который позволяет на пальцах объяснить принцип работы нашей интеграции и быстро оценить сложность её реализации на своей стороне. Спич долго был только в моей голове, но для Хабра я решил изложить его в письменном виде и поделиться с вами.
💡 Сначала материал не разрешили публиковать — сочли его рекламным. Но когда узнали все детали — что через наш API можно формировать до 500 запросов в сутки бесплатно (а этого по опыту хватает в среднем на обработку 50 заказов), — «дали зеленый свет» и попросили указать все это в начале материала. Что я и делаю 🙂 Заявку на подключение доступа можно оформить на сайте компании через форму обратной связи.
Что станет с производительностью, если переборщить с ленивой загрузкой
В этом посте обобщены и проанализированы данные о прозрачности веба, взятые в открытых источниках, а также проделано импровизированное A/B тестирование. Эта работа помогает понять производительность и степень внедрения нативной ленивой загрузки при работе с картинками. Оказывается, ленивая загрузка может быть поразительно эффективна при избавлении от ненужных картиночных байт, но, если с ней переусердствовать – это плохо скажется на производительности. А именно: наше исследование показывает, что при более жадной загрузке изображений в пределах первичной области видимости – в сочетании с более свободной и ленивой загрузкой остальных – достижима золотая середина. Экономится количество загруженных байт и улучшаются показатели Core Web Vitals.
HTML, JavaScript, YandexAPI и щепотку Bootstrap
Привет, Хабр!
Сервис, который должен был объединить торговые площадки США Ebay, Amazon и Zappos
В далёком 2012 году довелось мне участвовать в одном интересном проекте - BuyinUsa. Идея проекта была в следующем: объединить в одном месте товарные предложения с наиболее популярных торговых площадок США, представить их российским потребителям, взять на себя доставку и конвертацию при оплате.
Для начала решили взять самые крупные: ebay, amazon, zappos. К тому же в этот год zappos вообще закрыл возможность для российских пользователей даже заходить на их сайт. А тут мы такие…
Как, наверно, кто-то еще помнить, тогда вездесущего алиэкспресс еще не было, да и умением покупать за границей отличались лишь “продвинутые интернетчики”, а наша задача была предложить услугу как можно более массовому потребителю.
Я выступал в роли и соучредителя и в качестве, как бы сейчас сказали, тимлида, так как вся разработка проекта была на мне. Я был еще достаточно юным и пылал энтузиазмом:)
Вся разработка осуществлялась удаленно, программисты, вебмастер, дизайнер и я работали исключительно через сеть. Использовались в основном простые средства вроде teamview и skype. В качестве основы для сайта взяли всем известную Joomla, а для интернет-магазина Virtualmart. Конечно, по современным воззрениям это ужас-ужас, но тогда мне так не казалось.
Что надо было решить:
1. Карточка товаров, которые были очень разноплановые. А от характеристик зависела возможность отфильтровать товары в поиске.
Решение: взяли более ста карточек с разными характеристиками и просили их отсортировать по важности знакомых и друзей. Сравнивали результаты и выделяли главные. А потом скопировали карточку с Запоса и отредактировали её под свои нужды:)
Гайд по первичной настройке асинхронного Python-приложения с GraphQL-библиотекой Strawberry
Пишете на Python и давно хотели запрыгнуть на поезд хайпа по GraphQL, но никак не могли выбрать между Graphene и Ariadne? Предлагаем вам третий вариант – Strawberry.
Strawberry – code-first библиотека с большим количеством батареек. 2.6 тыс. звёзд в репозитории на GitHub. Для описания типов можно использовать dataclasses и pydantic-модели. Из коробки поддерживается асинхронность.
В этом гайде мы напишем приложение, реализующее создание и получение пользователей (users) и их книг (books).
25 правил разработки программных интерфейсов [издание третье, дополненное и расширенное]
Это — очередная (уже третья) ревизия главы 11 мой книги о разработке API. Если вы найдёте этот текст полезным, я буду очень благодарен за рейтинг на Амазоне.
GraphQL: доступ запрещен
Жил-был один маленький разработчик, работал себе над REST API и горя не знал. Но вот приходит к нему тимлид и предлагает затащить GraphQL. Казалось бы: классный и мощный GraphQL — это запросто! Но в процессе проектирования API разработчик столкнулся с неожиданными проблемами и суровыми испытаниями: система оказалась довольно сложна и полна различных прав и ролей.
Всем привет! Меня зовут Олег, я — бэкенд-разработчик системы Talantix. В этой статье я расскажу о том, как работать с доступом к данным в GraphQL.
Создание IoT-приложения с использованием HTTP API
Уже несколько лет не снижается ажиотаж вокруг IoT-устройств. Эти устройства могут быть почти чем угодно: от будильника, показывающего погоду, до холодильника, сообщающего о ценах в ближайших продуктовых магазинах. Какой бы ни была реализация, для общения с источниками данных эти устройства используют API. Но как конкретно подключаются сообщения, данные и устройства?
В этом посте мы покажем пример проектирования и моделирования данных для IoT-устройства. Для этого будет использовано M5Stack — небольшое модульное IoT-устройство с экраном, и подключение к API Metropolitan Transportation Authority Нью-Йорка (MTA) для получения актуального графика движения поездов на разных станциях.
Интеграция QUIK в инфраструктуру или API
Торговая система QUIK [ссылка удалена мод.] для большинства серьёзных игроков рынка является очень популярной системой предоставления своим клиентам интерфейса для торговли ценными бумагами. Но в большинстве своём внутренности этой системы, как и любого коммерческого продукта являются закрытыми, в связи с чем могут возникать проблемы интеграции во внутреннюю инфраструктуру предприятия. В этой статье будут рассмотрены возможные механизмы интеграции QUIK в системы предприятия являющегося клиентом брокера или самостоятельным брокером.
REST API на основе Snake (Python, Mamba, Hydra и Fast API)
Сегодня я хочу попробовать что-то новое и начну исследовать мир Python. В этой статье представлен пошаговый туториал по реализации простого REST API при помощи Python, Fast API, Hydra и Mamba. Более того, я вкратце опишу, как упаковать всех этих змей в один образ Docker и заставить их работать вместе. Весь код выложен на моём GitHub.
Давайте начнём с кратного объяснения того, почему я решил выбрать эту тему.
Telegramm-habr-бот. Долгий путь к совершенству
Каждый день мы просматриваем habr. Каждый день заходим на главную ленту и просматриваем её. Что, если автоматизировать этот просмотр?
В статье я расскажу, как я писал telegram-бота на python3, который вытаскивает заголовки статей с habr и пишет их в telegram.
И т. Д.
Количество партиций в Spark при инициализации Data API: DataFrame, RDD, DataSet
Любое Spark Data API: DataFrame, RDD, DataSet состоит из партиций. Партиция — это часть данных, аллоцированных в оперативной памяти воркеров (жестком диске при кэшировании) для параллельных преобразований. Например, можно одновременно прибавить какое-то число к каждому элементу из партиции. Распределение элементов по партициям и их количество может происходить по принципу round-robin либо по хэшу от какой-то колонки в результате различных операций и зависит от типа операции.
Вклад авторов
-
alizar 505.0 -
forgotten 464.0 -
Mehdzor 393.0 -
m1rko 323.2 -
Vasilui 265.2 -
rsvasilyev 225.0 -
jirfag 213.0 -
Leono 197.0 -
host_m 190.4 -
GlobalSign_admin 187.2