#инструмент дня
Делитесь, кто что использует для работы с API?
Postman? cUrl в терминале? REST Client для VSCode? Thunder Client?
Ладно, к чему это я. Есть же прекрасный инструмент HTTPie для веба, десктопа и терминала. Вот он как раз недавно обновился до версии 3.
Изменения в основном, конечно, косметические, но вот в версии для терминала появился менеджер плагинов. Точнее, он всегда там был, но не был открыт для сторонних разработчиков. А теперь — да.
В общем, ребята так отметили десятилетие своего проекта, порадуемся же за них.
#httpie #api #tool
Делитесь, кто что использует для работы с API?
Postman? cUrl в терминале? REST Client для VSCode? Thunder Client?
Ладно, к чему это я. Есть же прекрасный инструмент HTTPie для веба, десктопа и терминала. Вот он как раз недавно обновился до версии 3.
Изменения в основном, конечно, косметические, но вот в версии для терминала появился менеджер плагинов. Точнее, он всегда там был, но не был открыт для сторонних разработчиков. А теперь — да.
В общем, ребята так отметили десятилетие своего проекта, порадуемся же за них.
#httpie #api #tool
👍9
Media is too big
VIEW IN TELEGRAM
#такое дня
Вы же в курсе, что почти во всех современных телефонах есть гироскоп?
Но зачем?
Ну... можно зайти на https://gyroco.de/ и понять
...или не понять
#gyroscope #api #js
Вы же в курсе, что почти во всех современных телефонах есть гироскоп?
Но зачем?
Ну... можно зайти на https://gyroco.de/ и понять
...или не понять
#gyroscope #api #js
👍11🔥5
#статья дня
С 54000 звёзд на GitHub до нуля за одно мгновение?
HTTPie расскажет и покажет, как!
https://httpie.io/blog/stardust
На самом деле, всё до обидного просто: владелец репозитория по-ошибке сделал его приватным.
Мораль? Будьте внимательны.
Впрочем, ребята уже набрали обратно 18000 звёзд. Свежих, с пылу с жару. Что, в общем, хорошо.
Заодно в статье предложены интерфейсы, предполагающие предотвращение подобных ситуаций.
Есть перевод на русский, кстати: https://habr.com/ru/company/skillfactory/blog/662155/
#github #rest #api #httpie #tools
С 54000 звёзд на GitHub до нуля за одно мгновение?
HTTPie расскажет и покажет, как!
https://httpie.io/blog/stardust
На самом деле, всё до обидного просто: владелец репозитория по-ошибке сделал его приватным.
Мораль? Будьте внимательны.
Впрочем, ребята уже набрали обратно 18000 звёзд. Свежих, с пылу с жару. Что, в общем, хорошо.
Заодно в статье предложены интерфейсы, предполагающие предотвращение подобных ситуаций.
Есть перевод на русский, кстати: https://habr.com/ru/company/skillfactory/blog/662155/
#github #rest #api #httpie #tools
How we lost 54k GitHub stars – HTTPie blog
What we learned from losing a decade of stargazers and watchers, the biggest accidental community loss in open source history.
👍8
#инструмент дня
Надо узнать, когда была выпущена последняя версия браузера?
Воспользуйся https://www.browsers.fyi/
Ну и API, конечно же: https://www.browsers.fyi/api/
Зачем? Ну, а почему бы и нет.
#web #browser #api
Надо узнать, когда была выпущена последняя версия браузера?
Воспользуйся https://www.browsers.fyi/
Ну и API, конечно же: https://www.browsers.fyi/api/
Зачем? Ну, а почему бы и нет.
#web #browser #api
👍7
This media is not supported in your browser
VIEW IN TELEGRAM
#инструмент дня
Что делать, если API не готов, моки писать лень, а приложение разрабатывать надо?
Ну или, например, портфолио отсутствует, а хочется сделать условную книгу контактов или приложение для знакомств? Откуда данные-то брать? Забивать lorem ipsum тоже неохота...
На помощь придёт генератор случайных юзеров!
https://randomuser.me/
Ну и естественно, есть и полноценный генератор случайных данных, в котором всё, что вам нужно сделать — это описать их схему и пару правил генерации: https://randomapi.com/
Так ваше приложение из портфолио будет выглядеть максимально реально. Да и в продакшене не придётся ждать кого-либо ещё.
#api #random
Что делать, если API не готов, моки писать лень, а приложение разрабатывать надо?
Ну или, например, портфолио отсутствует, а хочется сделать условную книгу контактов или приложение для знакомств? Откуда данные-то брать? Забивать lorem ipsum тоже неохота...
На помощь придёт генератор случайных юзеров!
https://randomuser.me/
Ну и естественно, есть и полноценный генератор случайных данных, в котором всё, что вам нужно сделать — это описать их схему и пару правил генерации: https://randomapi.com/
Так ваше приложение из портфолио будет выглядеть максимально реально. Да и в продакшене не придётся ждать кого-либо ещё.
#api #random
👍14❤4
#инструмент дня
А что мы с вами пропустили? А выход публичной беты десктоп-приложения HTTPie пропустили!
HTTPie начинался как консольный HTTP-клиент. Наш ответ curl'у, так сказать. Чуть более человечный, чуть менее стандарт индустрии.
Почему надо предпочесть его — Postman'у и Thunder Client'у?
С Postman ответ очевиден — он стал монстром, пре- и пост-скрипты мне не нужны, интерфейс запутан, управление env-переменными ужасно.
Thunder... просто бесит.
Так вот, приложение: https://httpie.io/product
Обзор: https://twitter.com/httpie/status/1555557706538303488
Рассказ Злых Марсиан о том, как они его дизайнили: https://evilmartians.com/chronicles/ui-design-for-httpie-macos-vibes-for-the-api-testing-client
Забавно, что статья про дизайн — вторая из серии «Как сделать Electron-приложение максимально десктопным». Первая, про основные правила: https://evilmartians.com/chronicles/how-to-make-absolutely-any-app-look-like-a-macos-app
Короче, я HTTPie уже использую и вам рекомендую, котаны.
#httpie #client #api
А что мы с вами пропустили? А выход публичной беты десктоп-приложения HTTPie пропустили!
HTTPie начинался как консольный HTTP-клиент. Наш ответ curl'у, так сказать. Чуть более человечный, чуть менее стандарт индустрии.
Почему надо предпочесть его — Postman'у и Thunder Client'у?
С Postman ответ очевиден — он стал монстром, пре- и пост-скрипты мне не нужны, интерфейс запутан, управление env-переменными ужасно.
Thunder... просто бесит.
Так вот, приложение: https://httpie.io/product
Обзор: https://twitter.com/httpie/status/1555557706538303488
Рассказ Злых Марсиан о том, как они его дизайнили: https://evilmartians.com/chronicles/ui-design-for-httpie-macos-vibes-for-the-api-testing-client
Забавно, что статья про дизайн — вторая из серии «Как сделать Electron-приложение максимально десктопным». Первая, про основные правила: https://evilmartians.com/chronicles/how-to-make-absolutely-any-app-look-like-a-macos-app
Короче, я HTTPie уже использую и вам рекомендую, котаны.
#httpie #client #api
🔥8👍3❤2👌1
This media is not supported in your browser
VIEW IN TELEGRAM
#инструмент дня
Что делать, если API не готов, моки писать лень, а приложение разрабатывать надо?
Ну или, например, портфолио отсутствует, а хочется сделать условную книгу контактов или приложение для знакомств? Откуда данные-то брать? Забивать lorem ipsum тоже неохота...
На помощь придёт генератор случайных юзеров!
https://randomuser.me/
Ну и естественно, есть и полноценный генератор случайных данных, в котором всё, что вам нужно сделать — это описать их схему и пару правил генерации: https://randomapi.com/
Так ваше приложение из портфолио будет выглядеть максимально реально. Да и в продакшене не придётся ждать кого-либо ещё.
#api #random #бородач
Что делать, если API не готов, моки писать лень, а приложение разрабатывать надо?
Ну или, например, портфолио отсутствует, а хочется сделать условную книгу контактов или приложение для знакомств? Откуда данные-то брать? Забивать lorem ipsum тоже неохота...
На помощь придёт генератор случайных юзеров!
https://randomuser.me/
Ну и естественно, есть и полноценный генератор случайных данных, в котором всё, что вам нужно сделать — это описать их схему и пару правил генерации: https://randomapi.com/
Так ваше приложение из портфолио будет выглядеть максимально реально. Да и в продакшене не придётся ждать кого-либо ещё.
#api #random #бородач
👍14
#инструмент дня
Полку API-клиентов прибыло! Я уже рассказывал про GUI для HTTPie, который делали Злые Марсиане, а теперь пришло время рассказать ещё об одном. Почему пришло? Ну потому что Postman борзеет просто по часам и работает отвратительно.
Итак, Bruno: https://www.usebruno.com/
Хранит все запросы и коллекции в простых текстовых файлах (разрабы придумали язык разметки Bru специально для этого). Правда, я знаю как минимум одного человека-пользователя PhpStorm, который на этом месте презрительно хмыкнул.
Как следствие, все ваши коллекции запросов хранятся просто на диске. Нужно облако — используйте Git. Вот так просто. Планов на своё облако у команды нет.
Да, есть платная версия, 12 долларов в год (двенадцать в год). В ней из интересного есть поддержка вебсокетов и массового прогона данных по коллекциям для нагрузочного тестирования.
Кажется мне, для многих профессиональных пользователей Postman основной причиной всё ещё будут скрипты, но они и в Bruno есть. Посмотрим, куда вывезет.
#api #client
Полку API-клиентов прибыло! Я уже рассказывал про GUI для HTTPie, который делали Злые Марсиане, а теперь пришло время рассказать ещё об одном. Почему пришло? Ну потому что Postman борзеет просто по часам и работает отвратительно.
Итак, Bruno: https://www.usebruno.com/
Хранит все запросы и коллекции в простых текстовых файлах (разрабы придумали язык разметки Bru специально для этого). Правда, я знаю как минимум одного человека-пользователя PhpStorm, который на этом месте презрительно хмыкнул.
Как следствие, все ваши коллекции запросов хранятся просто на диске. Нужно облако — используйте Git. Вот так просто. Планов на своё облако у команды нет.
Да, есть платная версия, 12 долларов в год (двенадцать в год). В ней из интересного есть поддержка вебсокетов и массового прогона данных по коллекциям для нагрузочного тестирования.
Кажется мне, для многих профессиональных пользователей Postman основной причиной всё ещё будут скрипты, но они и в Bruno есть. Посмотрим, куда вывезет.
#api #client
👍16
#такое дня
Финляндия снова оказалась в мировых IT новостях, но на сей раз ситуация грустная для всех... разработчиков финансовых и платёжных систем.
А всё почему? А всё потому, что правительство Фи планирует повысить НДС до 25.5%.
Самые опытные из вас уже поняли, в чём проблема. И будут абсолютно правы. Потому что это не только офигеть какой высокий налог, но и первый случай нецелого значения налога.
А разработчики, как мы давно знаем, работать умеют только с целыми числами.
Если налог всё же будет введён, он резко превратится в лучшем случае в 26%, что вызовет тонну претензий, а в худшем — вызовет ошибки транзакций.
Ладно, скажете вы, нам-то зачем рассказываешь это? Мясо, мясо давай!
А вот и мясо. Глядите, на иллюстрации — API платёжной системы Paytrail. Прямо указано целое число. И ну всё бы ничего, но они обсуждали это... 2 года назад!
Вот: https://github.com/paytrail/api-documentation/issues/28
И тогда пришли к выводу, что не надо. А оно вот как вышло. Уже вовсю начали выдумывать варианты решения.
А сколько финансовых систем ещё в мире? :)
P. S. Я думаю, следующей новостью из Финляндии будет: «В связи со сложностью внесения изменений в информационные системы правительство приняло решение поднять НДС до 26%».
#api
Финляндия снова оказалась в мировых IT новостях, но на сей раз ситуация грустная для всех... разработчиков финансовых и платёжных систем.
А всё почему? А всё потому, что правительство Фи планирует повысить НДС до 25.5%.
Самые опытные из вас уже поняли, в чём проблема. И будут абсолютно правы. Потому что это не только офигеть какой высокий налог, но и первый случай нецелого значения налога.
А разработчики, как мы давно знаем, работать умеют только с целыми числами.
Если налог всё же будет введён, он резко превратится в лучшем случае в 26%, что вызовет тонну претензий, а в худшем — вызовет ошибки транзакций.
Ладно, скажете вы, нам-то зачем рассказываешь это? Мясо, мясо давай!
А вот и мясо. Глядите, на иллюстрации — API платёжной системы Paytrail. Прямо указано целое число. И ну всё бы ничего, но они обсуждали это... 2 года назад!
Вот: https://github.com/paytrail/api-documentation/issues/28
И тогда пришли к выводу, что не надо. А оно вот как вышло. Уже вовсю начали выдумывать варианты решения.
А сколько финансовых систем ещё в мире? :)
P. S. Я думаю, следующей новостью из Финляндии будет: «В связи со сложностью внесения изменений в информационные системы правительство приняло решение поднять НДС до 26%».
#api
🤡19👍4🤬4🤩2❤1
#фишка дня
Как-то так получилось, что на мобильных устройствах работать с файлами и буфером обмена ну... неудобно.
И ладно iOS, но на Android тоже интерфейсы такие себе. Даже на Windows Mobile и PalmOS было как-то... стандартнее чтоль.
С другой стороны, появилась идея шэринга, aka share. И она на самом деле отвечает запросам людей: перекинуть файл из одного приложения в другое, а что нам ещё нужно-то?
Итак, встречайте: Web Share API.
Пользоваться очень просто:
Но таким образом можно передавать не только текст и ссылки, но и файлы! Включая те, что вы только что сгенерировали на холсте или в приложении вообще.
На десктопе, к сожалению, не работает. Но там у нас иные средства имеются.
#web #share #api
Как-то так получилось, что на мобильных устройствах работать с файлами и буфером обмена ну... неудобно.
И ладно iOS, но на Android тоже интерфейсы такие себе. Даже на Windows Mobile и PalmOS было как-то... стандартнее чтоль.
С другой стороны, появилась идея шэринга, aka share. И она на самом деле отвечает запросам людей: перекинуть файл из одного приложения в другое, а что нам ещё нужно-то?
Итак, встречайте: Web Share API.
Пользоваться очень просто:
navigator.share({
title: "Будни разработчика",
text: "Фронтенд и не только",
url: "https://xn--r1a.website/htmlshit",
});
Но таким образом можно передавать не только текст и ссылки, но и файлы! Включая те, что вы только что сгенерировали на холсте или в приложении вообще.
navigator.share({
files: [file],
title: 'hello.png'
});
На десктопе, к сожалению, не работает. Но там у нас иные средства имеются.
#web #share #api
👍23
#книга дня
Сегодня книгой дня выбрана API от Сергей Константинова. Доступна на двух языках, на русском и английском. И на английском название даже более точно звучит — The API Book. Куда уж однозначней.
Ссылка: https://twirl.github.io/The-API-Book/API.ru.html
Эта книга написана для того, чтобы поделиться опытом и изложить лучшие практики разработки API. Состоит из шести разделов, посвящённых:
• проектированию API,
• паттернам дизайна API,
• поддержанию обратной совместимости,
• HTTP API и архитектурным принципам REST,
• SDK и UI-библиотекам,
• продуктовому управлению API.
Сергей Константинов был главой инжиниринга в Яндекс.Лавка, а с 2020 года — занимается примерно тем же в Bolt, развивая их маркет.
Труд действительно объёмный и охватывает практически все аспекты от проектирования API до взаимодействия с ним.
Важно заметить, что она постоянно дополняется и автор не стесняется спрашивать вопросы у аудитории, что выливается в прекрасные рекомендации.
Кстати, доступна и для Kindle, и для Apple Books, но уже как спонсорский пакет :)
#book #api
Сегодня книгой дня выбрана API от Сергей Константинова. Доступна на двух языках, на русском и английском. И на английском название даже более точно звучит — The API Book. Куда уж однозначней.
Ссылка: https://twirl.github.io/The-API-Book/API.ru.html
Эта книга написана для того, чтобы поделиться опытом и изложить лучшие практики разработки API. Состоит из шести разделов, посвящённых:
• проектированию API,
• паттернам дизайна API,
• поддержанию обратной совместимости,
• HTTP API и архитектурным принципам REST,
• SDK и UI-библиотекам,
• продуктовому управлению API.
Сергей Константинов был главой инжиниринга в Яндекс.Лавка, а с 2020 года — занимается примерно тем же в Bolt, развивая их маркет.
Труд действительно объёмный и охватывает практически все аспекты от проектирования API до взаимодействия с ним.
Важно заметить, что она постоянно дополняется и автор не стесняется спрашивать вопросы у аудитории, что выливается в прекрасные рекомендации.
Кстати, доступна и для Kindle, и для Apple Books, но уже как спонсорский пакет :)
#book #api
❤23🤩1
#фишка дня
Как-то так получилось, что на мобильных устройствах работать с файлами и буфером обмена ну... неудобно.
И ладно iOS, но на Android тоже интерфейсы такие себе. Даже на Windows Mobile и PalmOS было как-то... стандартнее чтоль.
С другой стороны, появилась идея шэринга, aka share. И она на самом деле отвечает запросам людей: перекинуть файл из одного приложения в другое, а что нам ещё нужно-то?
Итак, встречайте: Web Share API.
Пользоваться очень просто:
Но таким образом можно передавать не только текст и ссылки, но и файлы! Включая те, что вы только что сгенерировали на холсте или в приложении вообще.
На десктопе, к сожалению, не работает. Но там у нас иные средства имеются.
#web #share #api #бородач
Как-то так получилось, что на мобильных устройствах работать с файлами и буфером обмена ну... неудобно.
И ладно iOS, но на Android тоже интерфейсы такие себе. Даже на Windows Mobile и PalmOS было как-то... стандартнее чтоль.
С другой стороны, появилась идея шэринга, aka share. И она на самом деле отвечает запросам людей: перекинуть файл из одного приложения в другое, а что нам ещё нужно-то?
Итак, встречайте: Web Share API.
Пользоваться очень просто:
navigator.share({
title: "Будни разработчика",
text: "Фронтенд и не только",
url: "https://xn--r1a.website/htmlshit",
});
Но таким образом можно передавать не только текст и ссылки, но и файлы! Включая те, что вы только что сгенерировали на холсте или в приложении вообще.
navigator.share({
files: [file],
title: 'hello.png'
});
На десктопе, к сожалению, не работает. Но там у нас иные средства имеются.
#web #share #api #бородач
👍7❤4
#инструмент дня
Лучший API — это тот, который не пришлось писать самому! Потому так популярны и фреймворки, и сервисы вроде Firebase.
Но если охота чуть больше контроля над базой данных и своими ресурсами вообще, а писать код всё ещё неохота, рекомендую взглянуть на PostgREST. Это инструмент, который превращает вашу базу данных в полноценный REST API.
Почему это круто?
Мгновенный API Не нужно писать кучу эндпоинтов — PostgREST автоматически генерирует их на основе структуры вашей базы данных.
SQL вместо ORM Работаете напрямую с SQL-запросами, что дает максимальную гибкость и контроль над данными.
Авторизация и безопасность PostgREST использует роли PostgreSQL для управления доступом, избавляя от необходимости вручную прописывать логику авторизации. А процессы аутентификации и авторизации выстроены вокруг JWT.
Производительность Оптимизирован для работы с большими объемами данных, включая фильтрацию, пагинацию и сортировку.
Легкая интеграция
Подходит как для простых CRUD-операций, так и для сложной бизнес-логики через SQL-вьюхи или хранимые процедуры.
Возможно, он не решит всех проблем, но уж точно можно будет сильно сократить время разработки.
#postgres #api #service
Лучший API — это тот, который не пришлось писать самому! Потому так популярны и фреймворки, и сервисы вроде Firebase.
Но если охота чуть больше контроля над базой данных и своими ресурсами вообще, а писать код всё ещё неохота, рекомендую взглянуть на PostgREST. Это инструмент, который превращает вашу базу данных в полноценный REST API.
Почему это круто?
Мгновенный API Не нужно писать кучу эндпоинтов — PostgREST автоматически генерирует их на основе структуры вашей базы данных.
SQL вместо ORM Работаете напрямую с SQL-запросами, что дает максимальную гибкость и контроль над данными.
Авторизация и безопасность PostgREST использует роли PostgreSQL для управления доступом, избавляя от необходимости вручную прописывать логику авторизации. А процессы аутентификации и авторизации выстроены вокруг JWT.
Производительность Оптимизирован для работы с большими объемами данных, включая фильтрацию, пагинацию и сортировку.
Легкая интеграция
Подходит как для простых CRUD-операций, так и для сложной бизнес-логики через SQL-вьюхи или хранимые процедуры.
Возможно, он не решит всех проблем, но уж точно можно будет сильно сократить время разработки.
#postgres #api #service
🤩7❤4👍4👎2
#расширение дня
Писать e2e-тесты — важная часть разработки. Но иногда кажется, что бакенд специально делает все, чтобы их невозможно было подготовить:
😡 спека меняется на лету
🤬 методы недописаны
👿 половина API не работает или вообще отсутствует.
В итоге время тратится не на разработку, а на попытки договориться с сервером.
Чтобы не зависеть от нестабильного бекенда и вообще спокойно продолжать разработку, можно использовать такие инструменты, как Requestly.
Это расширение для браузера, которое позволяет подменять запросы и ответы, редактировать заголовки или даже подгружать локальные данные вместо серверных.
Например, можно настроить подмену API-ответов на заранее подготовленные JSON’ы. Это помогает проверить логику приложения и писать тесты, даже если реальный сервер недоступен или работает нестабильно.
Обратите внимание, что расширение работает на подмене ответа уже после выполнения запроса, поэтому во вкладке Network структура останется неизменной.
Инструмент полезен не только для тестирования, но и в повседневной разработке — особенно когда работаешь с командой, где бакенд часто не успевает за фронтом.
А какие у вас способы справляться с подобными проблемами?
#api #extention #chrome
Писать e2e-тесты — важная часть разработки. Но иногда кажется, что бакенд специально делает все, чтобы их невозможно было подготовить:
😡 спека меняется на лету
🤬 методы недописаны
👿 половина API не работает или вообще отсутствует.
В итоге время тратится не на разработку, а на попытки договориться с сервером.
Чтобы не зависеть от нестабильного бекенда и вообще спокойно продолжать разработку, можно использовать такие инструменты, как Requestly.
Это расширение для браузера, которое позволяет подменять запросы и ответы, редактировать заголовки или даже подгружать локальные данные вместо серверных.
Например, можно настроить подмену API-ответов на заранее подготовленные JSON’ы. Это помогает проверить логику приложения и писать тесты, даже если реальный сервер недоступен или работает нестабильно.
Обратите внимание, что расширение работает на подмене ответа уже после выполнения запроса, поэтому во вкладке Network структура останется неизменной.
Инструмент полезен не только для тестирования, но и в повседневной разработке — особенно когда работаешь с командой, где бакенд часто не успевает за фронтом.
А какие у вас способы справляться с подобными проблемами?
#api #extention #chrome
1👍17❤2🫡2
#фишка дня
Не совсем про разработку, но достаточно интересно.
Итак, понадобилось мне вчера отправить фотографии костюмов из одного сериала знакомой портной. Зашёл я на стриминг HBO Max, нашёл нужные кадры, снял скриншот...
А он чёрный. Элементы UI и... чёрный экран.
— DRM, — подумал Штирлиц.
И таки да, DRM. Защита авторских прав содержимого.
Виральность? Не, не слышали.
Технология, по которой работает DRM на стримингах, называется EME: Encrypted Media Extensions. Разработана совместно Netflix, Google и Microsoft.
Есть хорошее описание её работы: https://hsivonen.fi/eme/
Encrypted Media Extensions (EME) — это JavaScript API для <video> и <audio>, предназначенное для работы с DRM-защищенным контентом. Для расшифровки требуется Content Decryption Module (CDM), который доверен правообладателями и скрывает определенные данные от пользователя. Браузер при этом считается ненадежным.
CDM может быть встроен в браузер, загружен отдельно или реализован на уровне ОС и железа. Он управляет ключами для расшифровки контента. В EME есть учебная система Clear Key, но она не предназначена для коммерческого использования.
CDM может работать по-разному: просто расшифровывать данные, расшифровывать и декодировать видео в браузере, передавать декодированные кадры напрямую ОС или работать с GPU, скрывая пиксели даже от системы. EME определяет только интерфейс API, оставляя детали DRM разработчикам.
Так вот, к фишке дня. В Firefox EME не реализованы, скриншоты делаются без проблем. А в Chrome — работают на GPU, иначе ваши процессоры сошли бы с ума.
А это значит, что достаточно (по крайней мере пока) отключить аппаратное ускорение графики. И, вуаля, скриншоты снова можно делать!
Очевидно, с развитием железа и это скоро станет невозможно. Останется только аналоговая брешь (крутое название для экранки, не правда ли?).
#drm #eme #api
Не совсем про разработку, но достаточно интересно.
Итак, понадобилось мне вчера отправить фотографии костюмов из одного сериала знакомой портной. Зашёл я на стриминг HBO Max, нашёл нужные кадры, снял скриншот...
А он чёрный. Элементы UI и... чёрный экран.
— DRM, — подумал Штирлиц.
И таки да, DRM. Защита авторских прав содержимого.
Виральность? Не, не слышали.
Технология, по которой работает DRM на стримингах, называется EME: Encrypted Media Extensions. Разработана совместно Netflix, Google и Microsoft.
Есть хорошее описание её работы: https://hsivonen.fi/eme/
Encrypted Media Extensions (EME) — это JavaScript API для <video> и <audio>, предназначенное для работы с DRM-защищенным контентом. Для расшифровки требуется Content Decryption Module (CDM), который доверен правообладателями и скрывает определенные данные от пользователя. Браузер при этом считается ненадежным.
CDM может быть встроен в браузер, загружен отдельно или реализован на уровне ОС и железа. Он управляет ключами для расшифровки контента. В EME есть учебная система Clear Key, но она не предназначена для коммерческого использования.
CDM может работать по-разному: просто расшифровывать данные, расшифровывать и декодировать видео в браузере, передавать декодированные кадры напрямую ОС или работать с GPU, скрывая пиксели даже от системы. EME определяет только интерфейс API, оставляя детали DRM разработчикам.
Так вот, к фишке дня. В Firefox EME не реализованы, скриншоты делаются без проблем. А в Chrome — работают на GPU, иначе ваши процессоры сошли бы с ума.
А это значит, что достаточно (по крайней мере пока) отключить аппаратное ускорение графики. И, вуаля, скриншоты снова можно делать!
Очевидно, с развитием железа и это скоро станет невозможно. Останется только аналоговая брешь (крутое название для экранки, не правда ли?).
#drm #eme #api
👍23🤩6❤3
This media is not supported in your browser
VIEW IN TELEGRAM
#codepen дня
Мы когда-то давно смотрели на интересный пример использования clip-path и маскинга в CSS для создания кружочка статуса пользователя в сети: https://xn--r1a.website/htmlshit/2741
И вот Саймон Гелнер довёл этот пример до идеала! Размер, положение — всё настраивается через CSS-переменные и выглядит шикарно. Вот, можно поиграться: https://codepen.io/simeydotme/pen/ogNWvMN
Кстати, что даже более интересно, там используется прикольный API аватарок! https://www.dicebear.com/
Максимально неожиданная штука, конечно, с весьма интересными решениями по настройке внешнего вида аватарки и даже с предопределёнными генераторами (seed) на тысячи и миллионы вариантов.
Потрясающая находка, я считаю.
#css #svg #api #avatar
Мы когда-то давно смотрели на интересный пример использования clip-path и маскинга в CSS для создания кружочка статуса пользователя в сети: https://xn--r1a.website/htmlshit/2741
И вот Саймон Гелнер довёл этот пример до идеала! Размер, положение — всё настраивается через CSS-переменные и выглядит шикарно. Вот, можно поиграться: https://codepen.io/simeydotme/pen/ogNWvMN
Кстати, что даже более интересно, там используется прикольный API аватарок! https://www.dicebear.com/
Максимально неожиданная штука, конечно, с весьма интересными решениями по настройке внешнего вида аватарки и даже с предопределёнными генераторами (seed) на тысячи и миллионы вариантов.
Потрясающая находка, я считаю.
#css #svg #api #avatar
👍9❤5
#заметка дня
Итак, в разработке пульта на Flutter случилось — конечно же — неожиданное.
И неожиданное это тот факт, что новые телевизоры Samsung не поддерживают получение списка приложений и их иконок. Выдают 401. Выходит, API-то есть, а вот разрешения на использование — нет. И его не получить, потому что Samsung сдвигает свою инфраструктуру в сторону полурабочего SmartThings-облака.
Ну как, новые. Года с 2020. Просто меня интересовал конкретно мой, а он 2019 и документации в принципе исчезающе мало. Tizen и Tizen.
Что же делать?
Да ничего особого не делать. Нужно где-то найти список приложений и их иконки, ведь запуск всё так же остался возможен: по id приложения.
Очевидно, в голову приходит мысль, что для Smart TV должно быть некое подобие аппстора. И действительно: https://www.samsung.com/us/tvs/smart-tv/samsung-tv-apps/
Надеюсь, оно хотя бы SPA? Да! Список приложений получается через эндпоинт
Выглядит шикарно! В ответ получаем JSON с полным числом приложений — total — и массивом из 24 позиций. Так, а остальное как?
И тут моя беспокойная голова зачем-то решила проверить, а что там по остальным странам, и я начал перебирать коды стран в адресе самого магазина.
Финский вообще не заработал, французского нет, а в российском не работала постраничная навигация.
Ладно, не первый же раз работаем. Смотрим на список параметров запроса, видим
Посмотреть, работает ли навигация в американском аппсторе, я не догадался. Поэтому решил абьюзить на полную и просто передал 3336 в
Вывод 1: защищайте свои API.
Ну и мне стоило все же посмотреть на работу американского аппстора. Потому что, как оказалось, offset у них — это страница! То есть, для получения приложений с 11 по 20 надо было передавать не
Вывод 2: играешь в CTF — хотя бы немного думай.
Впрочем, своей цели я добился. Списки приложений есть, иконки — там же. Осталось подготовить наборы самых популярных приложений разных стран — и вперёд.
…а ведь Samsung мог просто не закрывать API на телевизоре.
#api #ctf
Итак, в разработке пульта на Flutter случилось — конечно же — неожиданное.
И неожиданное это тот факт, что новые телевизоры Samsung не поддерживают получение списка приложений и их иконок. Выдают 401. Выходит, API-то есть, а вот разрешения на использование — нет. И его не получить, потому что Samsung сдвигает свою инфраструктуру в сторону полурабочего SmartThings-облака.
Ну как, новые. Года с 2020. Просто меня интересовал конкретно мой, а он 2019 и документации в принципе исчезающе мало. Tizen и Tizen.
Что же делать?
Да ничего особого не делать. Нужно где-то найти список приложений и их иконки, ведь запуск всё так же остался возможен: по id приложения.
Очевидно, в голову приходит мысль, что для Smart TV должно быть некое подобие аппстора. И действительно: https://www.samsung.com/us/tvs/smart-tv/samsung-tv-apps/
Надеюсь, оно хотя бы SPA? Да! Список приложений получается через эндпоинт
/list с вполне однозначным набором параметров: https://vdapi.samsung.com/tvs/tvpersonalize/api/tvapps/appserver/list?country_code=US&language_code=en&offset=0&size=24&order=asc&category=all Выглядит шикарно! В ответ получаем JSON с полным числом приложений — total — и массивом из 24 позиций. Так, а остальное как?
И тут моя беспокойная голова зачем-то решила проверить, а что там по остальным странам, и я начал перебирать коды стран в адресе самого магазина.
Финский вообще не заработал, французского нет, а в российском не работала постраничная навигация.
Ладно, не первый же раз работаем. Смотрим на список параметров запроса, видим
offset и size. Это у нас типичный случай оконной пагинации (помимо курсорной и постраничной). В таких случаях просто передаем что-то вида загрузить 48 приложений начиная с 96. И… не работает. Какой вывод я сделал? Правильно: API сломано. Посмотреть, работает ли навигация в американском аппсторе, я не догадался. Поэтому решил абьюзить на полную и просто передал 3336 в
size с offset 0. Число 3336 не случайно — API сам отдает его с пустой категорией. И, внезапно, я получил ответ, содержащий все приложения. Ждать пришлось весьма долго, я ожидал, что для таких вещей нужен токен. Но нет. Вывод 1: защищайте свои API.
Ну и мне стоило все же посмотреть на работу американского аппстора. Потому что, как оказалось, offset у них — это страница! То есть, для получения приложений с 11 по 20 надо было передавать не
offset=10&size=10, а offset=1&size=10. Сбивает с толку, спасибо, что хотя бы не курсор. Вывод 2: играешь в CTF — хотя бы немного думай.
Впрочем, своей цели я добился. Списки приложений есть, иконки — там же. Осталось подготовить наборы самых популярных приложений разных стран — и вперёд.
…а ведь Samsung мог просто не закрывать API на телевизоре.
#api #ctf
❤10👍8
#фишка дня
Не совсем про разработку, но достаточно интересно.
Итак, понадобилось мне вчера отправить фотографии костюмов из одного сериала знакомой портной. Зашёл я на стриминг HBO Max, нашёл нужные кадры, снял скриншот...
А он чёрный. Элементы UI и... чёрный экран.
— DRM, — подумал Штирлиц.
И таки да, DRM. Защита авторских прав содержимого.
Виральность? Не, не слышали.
Технология, по которой работает DRM на стримингах, называется EME: Encrypted Media Extensions. Разработана совместно Netflix, Google и Microsoft.
Есть хорошее описание её работы: https://hsivonen.fi/eme/
Encrypted Media Extensions (EME) — это JavaScript API для <video> и <audio>, предназначенное для работы с DRM-защищенным контентом. Для расшифровки требуется Content Decryption Module (CDM), который доверен правообладателями и скрывает определенные данные от пользователя. Браузер при этом считается ненадежным.
CDM может быть встроен в браузер, загружен отдельно или реализован на уровне ОС и железа. Он управляет ключами для расшифровки контента. В EME есть учебная система Clear Key, но она не предназначена для коммерческого использования.
CDM может работать по-разному: просто расшифровывать данные, расшифровывать и декодировать видео в браузере, передавать декодированные кадры напрямую ОС или работать с GPU, скрывая пиксели даже от системы. EME определяет только интерфейс API, оставляя детали DRM разработчикам.
Так вот, к фишке дня. В Firefox EME не реализованы, скриншоты делаются без проблем. А в Chrome — работают на GPU, иначе ваши процессоры сошли бы с ума.
А это значит, что достаточно (по крайней мере пока) отключить аппаратное ускорение графики. И, вуаля, скриншоты снова можно делать!
Очевидно, с развитием железа и это скоро станет невозможно. Останется только аналоговая брешь (крутое название для экранки, не правда ли?).
#drm #eme #api #бородач
Не совсем про разработку, но достаточно интересно.
Итак, понадобилось мне вчера отправить фотографии костюмов из одного сериала знакомой портной. Зашёл я на стриминг HBO Max, нашёл нужные кадры, снял скриншот...
А он чёрный. Элементы UI и... чёрный экран.
— DRM, — подумал Штирлиц.
И таки да, DRM. Защита авторских прав содержимого.
Виральность? Не, не слышали.
Технология, по которой работает DRM на стримингах, называется EME: Encrypted Media Extensions. Разработана совместно Netflix, Google и Microsoft.
Есть хорошее описание её работы: https://hsivonen.fi/eme/
Encrypted Media Extensions (EME) — это JavaScript API для <video> и <audio>, предназначенное для работы с DRM-защищенным контентом. Для расшифровки требуется Content Decryption Module (CDM), который доверен правообладателями и скрывает определенные данные от пользователя. Браузер при этом считается ненадежным.
CDM может быть встроен в браузер, загружен отдельно или реализован на уровне ОС и железа. Он управляет ключами для расшифровки контента. В EME есть учебная система Clear Key, но она не предназначена для коммерческого использования.
CDM может работать по-разному: просто расшифровывать данные, расшифровывать и декодировать видео в браузере, передавать декодированные кадры напрямую ОС или работать с GPU, скрывая пиксели даже от системы. EME определяет только интерфейс API, оставляя детали DRM разработчикам.
Так вот, к фишке дня. В Firefox EME не реализованы, скриншоты делаются без проблем. А в Chrome — работают на GPU, иначе ваши процессоры сошли бы с ума.
А это значит, что достаточно (по крайней мере пока) отключить аппаратное ускорение графики. И, вуаля, скриншоты снова можно делать!
Очевидно, с развитием железа и это скоро станет невозможно. Останется только аналоговая брешь (крутое название для экранки, не правда ли?).
#drm #eme #api #бородач
❤17👍6🤬2