Обновить
28.22

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

О создании API

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

Обнаружение бездействующих пользователей с помощью API Idle Detection

Время на прочтение7 мин
Охват и читатели11K
Статья, перевод которой мы сегодня публикуем, посвящена новому API Idle Detection. Этот API уведомляет разработчиков при бездействии пользователя, указывая на то, что пользователь не работает с клавиатурой, мышью, экраном. API сообщает об активации хранителя экрана, о блокировке экрана, о переходе пользователя на другой экран. Разработчик при этом может настроить пороговые уровни показателей активности пользователя, достижение которых вызывает срабатывание API.


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

Умное добавление музыкальных групп в Google Таблицы через VK API, Tampermonkey и Telegram бота

Время на прочтение15 мин
Охват и читатели5.6K
Как организовать хранилище музыкальных групп в Google Таблицах с поддержкой с разных программ?


Дано: Аккаунты в Google, VK, Telegram.
Задача: Создать хранилище музыкальных групп с возможностью удобного пополнения.
Инструменты: Google Apps Script (GAS), VK API, Tampermonkey, Telegram Bot API.
Смотрим далее

Безопасность REST API от А до ПИ

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

Введение


Умение реализовать грамотное REST API — полезный навык в наше время, т.к. все больше сервисов предоставляют свои возможности с помощью API. Но разработка REST API не ограничивается реализацией HTTP запросов в определенном стиле и формированием ответов в соответствии со спецификацией. Задача обеспечения безопасности REST API не так очевидна, как, например, обеспечение безопасности баз данных, но ее необходимость не менее важна.
В настоящее время многие онлайн системы с помощью API передают приватные данные пользователей, такие как медицинские или финансовые. Текущая же ситуация с безопасностью в веб-приложениях весьма печальна: по данным Comnews порядка 70% содержат кри­тичес­кие уязвимости. Поэтому всем, кто участвует в проектировании, реализации и тестировании онлайн систем, важно иметь общую картину по существующим угрозам и способам обеспечения безопасности как всей системы, так и используемого REST API.

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

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

Remote observer

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

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


Хочу рассмотреть случай, когда упомянутая внешняя система хочет получать уведомления о каких-либо изменениях в нашей системе. Например, обновление каталога товаров.


Задача


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

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

О хранении JWT токенов в браузерах

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

Открытый стандарт JWT официально появился в 2015 (rfc7519) обещая интересные особенности и широкие перспективы. Правильное хранение Access токена является жизненно важным вопросов при построении системы авторизации и аутентификации в современном Web, где становятся все популярнее сайты, построенные по технологии SPA.

Неправильное хранение токенов ведет к их краже и переиспользованию злоумышленниками.
Читать дальше →

Изучаем Event Tracing for Windows: теория и практика

Время на прочтение10 мин
Охват и читатели28K
Добрый день. Недавно мне необходимо было разобраться со службой трассировки Windows. Эта служба появилась еще в Windows 2000, однако статей по этой службе в интернете оказалось крайне мало.Так появилась идея написания этой статьи. Итак, начнем!

Сегодня я попытаюсь рассказать про:

  1. Теоретические основы службы трассировки Windows
  2. Создание своей сессии ETW
  3. Использование event tracing API для работы с ETW
  4. Использование tracerpt и xperf для работы с ETW

Теоретические основы службы трассировки Windows


Event Tracing for Windows (ETW) — это служба, которая позволяет получать события от одного или нескольких поставщиков событий в режиме реального времени или из файла *.etl за некоторый временной период. Не понятно? Сейчас разберемся!

Для того, чтобы понять принцип работы ETW, необходимо разобраться со структурой этой службы

image

Архитектура ETW включает в себя 4 элемента

  1. поставщики событий (providers)
  2. потребители событий (consumers)
  3. контроллеры ETW (controllers)
  4. сессии ETW (event tracing sessions)

Принцип работы состоит в следующем.

В системе зарегистрировано некоторое число поставщиков событий, т.е. приложений, которые могут делиться своими событиями с сессиями ETW. Так же в этой системе есть некоторое число активных сессий ETW, которые могут потреблять события от одного или нескольких поставщиков и предоставлять их пользователю либо в режиме реального времени, либо записывать все события от поставщиков в файл логирования (*.etl). И управляют всем этим движением контроллеры.

А теперь рассмотрим каждый элемент рассмотренной выше архитектуры подробнее, чтобы окончательно разобраться с принципом работы!
Читать дальше →

Как организовать тестирование, чтобы ускорить и стабилизировать релизы продукта. Часть 2

Время на прочтение8 мин
Охват и читатели11K
У тестировщика много возможностей повысить качество продукта и сделать работу команды комфортнее. Главное – обсуждать любые изменения с коллективом и внедрять только то, что удобно и полезно для всех.

Меня зовут Виктория Дежкина, я отвечаю за тестирование ряда продуктов в Дирекции больших данных X5 Retail Group. В прошлой части статьи я начала рассказывать о том, как мы меняли процессы в команде продукта «Система автоматизации закупок торговой сети». Релизы продукта постоянно задерживались на несколько дней и часто выходили «сырыми». Мы изменили порядок выкладки кода и планирования задач, что позволило сократить релизный цикл на несколько дней, но нам еще предстояло выработать оптимальный формат постановки и приемки задач, установить точки тестирования в релизном цикле и научиться приоритизировать задачи по исправлению дефектов.


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

Как с помощью js и google sheets стать соседом Билла Гейтса по гольф клубу

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


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


Вот и у меня появилось свободное время, которое я посвятил анализу своих сделок в Тинькофф Инвестициях. Есть 2 типа людей: одни прекрасно строят многомерные массивы у себя в голове, пробегаясь по ним for-циклом в IPython Notebook, другим же нравится "щупать" цифры, раскладывая их по полочкам в Excel. Себя я отношу ко второй категории, поэтому все свои сделки аккуратно заносил в Google Sheets.


Под катом я расскажу, как автоматизировал свою рутину при помощи Google Apps Script и API от Тинькофф Инвестиций.

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

Шаблон backend сервера на Golang — часть 2 (REST API)

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

UPD. Ссылка на новый репозиторий проекта с поддержкой развертывания в Kubernetes


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


Первая часть шаблона посвящена HTTP серверу:


  • настройка HTTP сервера через командную строку и конфигурационный файл
  • настройка параметров TLS HTTP сервера
  • настройка роутера и регистрация HTTP и prof-обработчиков
  • настройка логирования HTTP трафика, логирования ошибок в HTTP
  • HTTP Basic и MS AD аутентификация, JSON Web Token
  • запуск сервера с ожиданием возврата в канал ошибок
  • использование контекста для корректной остановки сервера и связанных сервисов
  • настройка кастомной обработки ошибок и кастомного логирования
  • сборка кода с внедрением версии, даты сборки и commit

Вторая часть шаблона посвящена прототипированию REST API.
Ссылка на репозиторий проекта осталась прежней.


Третья часть посвящена развертыванию шаблона в Docker, Docker Compose, Kubernetes (kustomize).


Пятая часть посвящена оптимизации Worker pool и особенностям его работы в составе микросервиса, развернутого в Kubernetes.


Архитектура шаблона REST API


В ходе тестирования шаблона на стенде были получены следующие результаты.

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

Как перенести шейдер из игрового движка в Substance Painter

Время на прочтение8 мин
Охват и читатели11K
Меня зовут Тарас Улейский, я Technical Artist в Plarium Kharkiv. Для оптимизации графики нашей Survival RPG на мобильных устройствах мы использовали свои кастомные шейдеры. Они предполагают использование уникальных текстур и карт, которые не похожи на текстуры и карты в других популярных способах шейдинга. В результате 3D-художникам не совсем понятно, как создавать эти текстуры для ассетов в игре. Чтобы сразу можно было увидеть, как 3D-модель будет выглядеть в движке игры на этапе текстурирования, я перенес шейдер в Substance Painter. Материалов по API в Substance Painter на данный момент практически нет, я изучил эту тему самостоятельно, поэтому решил поделиться своими наработками.

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

Немного о WebRTC: что где использовать и случай из практики

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

WebRTC — это браузерная технология, предназначенная для передачи потоковых данных между браузерами или приложениями с использованием технологии двухточечной передачи (point-to-point transmission).




Эта технология хороша тем, что позволяет устанавливать связь между пользователями, используя только браузер. Для некоторых разработчиков, когда они узнают о WebRTC, это становится открытием: ведь можно создать видеочат без использования стороннего сервера — нужен только браузер.
Читать дальше →

Микросервисы на С++. Выдумка или реальность?

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


В этой статье я расскажу о том, как создал шаблон (cookiecutter) и настроил окружение для написания REST API сервиса на С++ с использованием docker/docker-compose и пакетного менеджера conan.


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


Так вот, перед нами встала задача написать высоконагруженный сервис, основной задачей которого был препроцессинг поступающих к нему данных и запись их в БД. И после очередного перекура товарищ предложил мне, как С++ разработчику, написать этот сервис на плюсах. Аргументируя это тем, что так будет быстрее, производительнее, да и вообще, жюри будут в восторге от того, как мы умеем распоряжаться ресурсами команды. На что я ответил, что никогда не занимался такими вещами на С++ и с легкостью могу оставшиеся 20+ часов посвятить поиску, компиляции и компоновке подходящих библиотек. Проще говоря, я струсил. На том и порешили и спокойно дописали все на Python.

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

Основы easygui python. Часть 1

Время на прочтение3 мин
Охват и читатели17K
Это статья об основах модуля easygui для языка Python. Рекомендую использовать Python ветки 2-x, так как это позволит совместить табуляцию и пробелы. Конечно же, данный модуль не для написания программ, а в качестве дополнения. Статья написана для самых начинающих, поэтому будет много комментариев.
Дать статье небольшой шанс

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

Добавление тысяч клипов в плейлист YouTube с канала Telegram

Время на прочтение8 мин
Охват и читатели8.5K
С приобретением телевизора с функцией просмотра YouTube и с подпиской на множество каналов Telegram, где ежедневно выкладываются клипы захотелось убрать лишние движения между мобильным телефоном и телевизором для просмотра очередного свежего контента.



Идея проста:

  • Дано: Один или несколько контент-мейкерских каналов Telegram с ежедневным выкладыванием новейших клипов.
  • Задача: Создать плейлист на своём YouTube со всеми этими клипами и автоматический отлов новых.
  • Инструменты: Google Apps Script (GAS), YouTube API

Как я это сделал?

Специфицируй это. Доклад Яндекса

Время на прочтение16 мин
Охват и читатели22K
Хорошая спецификация к API помогает клиентам его использовать. Несколько месяцев назад на большом Pytup разработчик Яндекса Александр Брязгин bryazginnn выступил с докладом о том, что собой представляет спецификация REST API на примере OpenAPI + Swagger и зачем нужна такая связка. Из конспекта можно узнать, как мы прикручивали автоматическую генерацию спецификации в уже готовом сервисе, какие библиотеки нам пригодились и какой есть тулинг вокруг спецификации OpenAPI.


— Всем привет, меня зовут Александр. Я хотел бы поговорить с вами про спецификации.
Читать дальше →

Иерархическое логирование приложения в Базу Данных

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

Всем, привет!


В статье я хотел бы рассказать об одном из подходов к логированию приложения, который сильно помогал мне и коллегам при отладке, поиске ошибок и анализе проблем производительности. Про необходимость логирования было написано множество хороших статей в том числе и на Хабре, поэтому здесь нет большого смысла повторяться. Я начинал карьеру в IT с Oracle и изучал эту БД по книгам главного эксперта — Тома Кайта. Мне запомнилась его фраза по поводу логирования из книги "Effective Oracle by Design":

Instrumentation is not overhead. Overhead is something you can remove without losing much benefit. Removing (or not having) instrumentation takes away considerable functionality. You wouldn’t need to do this if your systems never break, never need diagnostics, and never suffer from performance issues. If that is true, you don’t need to instrument your system (and send me your email address, because I have a job offer for you).


С работой над Oracle проектами всё и началось.

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

Создаем простой документ с таблицей при помощи ODF Toolkit

Время на прочтение3 мин
Охват и читатели4.2K
Если у вас стоит задача сделать пару несложных отчетов, а ваши пользователи используют Open Office, то вам нет необходимости использовать большие системы построения отчетов наподобие Bird, Jasper или их аналогов.

Для этой задачи отлично подойдет набор инструментов ODF Toolkit.

ODF Toolkit, согласно информации с официального сайта, — это набор модулей Java, которые позволяют создавать, сканировать или манипулировать документами в формате открытого документа (ISO / IEC 26300 == ODF). В отличие от других подходов, которые основаны на манипуляциях во время выполнения с тяжелыми редакторами через интерфейс автоматизации, ODF Toolkit является легковесным и идеально подходит для использования на сервере.

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

Создаем Python Flask сервис с актуальными данными по COVID-19 из Википедии

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

image


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


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


В статье я расскажу про основные компоненты сервиса, от получения и обновления данных до создания API для клиентских запросов. Код проекта доступен в github репозитории.

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

ОС «Сивелькирия»: пример построения программы

Время на прочтение7 мин
Охват и читатели5.1K
Привет, Хабр.

Этим постом продолжается цикл публикаций о проекте ОС «Сивелькирия». В первой статье цикла было дано общее описание концепции, во второй объяснялось, зачем это надо и в каком виде продукт сможет увидеть свет, в третьей тезисно описывались архитектурные решения, а в четвёртой был дан ответ на вопрос о том, как согласовать действия разработчиков ОС и ПО в данной модели. В данной статье будет показан пример разбиения простой программы на модули, чтобы вписать её в реалии новой ОС.
Читать дальше →

Kaspersky Security Center — Новый уровень

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

На Хабре уже были пару заметок о автоматизации Kaspersky Security Center(KSC)


Здесь и Здесь


Сегодня же я предлагаю окунуться чуть глубже и перейти на новый уровень Использовать: KSC Open API для Kaspersky Security Center 10+.

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

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