Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Открой для себя волшебный мир реальной рыбалки. Лови реальную рыбу на реальных водоемах! Исследуй новые рыболовные места и заполучи заветный трофей.

Реальная Рыбалка

Симуляторы, Мультиплеер, Спорт

Играть

Топ прошлой недели

  • CharlotteLink CharlotteLink 1 пост
  • Syslikagronom Syslikagronom 7 постов
  • BydniKydrashki BydniKydrashki 7 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Новости Пикабу Помощь Кодекс Пикабу Реклама О компании
Команда Пикабу Награды Контакты О проекте Зал славы
Промокоды Скидки Работа Курсы Блоги
Купоны Biggeek Купоны AliExpress Купоны М.Видео Купоны YandexTravel Купоны Lamoda
Мобильное приложение

API

С этим тегом используют

Программирование IT Python Искусственный интеллект ВКонтакте Нейронные сети Разработка Все
130 постов сначала свежее
1189
neurogenerated
neurogenerated
1 год назад
Искусственный интеллект

Пользуемся бесплатно API ChatGPT без ограничений⁠⁠

Использование API для ChatGPT дает нам расширение возможностей работы с ним: переводчик текста, персональный помощник, работа с документами, кастомные клиент и многое другое. Чтобы получить ко всему этому доступ, нам понадобится - актуальная версия моего форка FreeGPT c Github, и поддержка установки кастомного endpoint (openai api) сервера со стороны нужной нам программы. О том, как работает FreeGPT я рассказывал в самом само первом посте, связанным с проектом: ChatGPT-4 и ChatGPT-3.5 в 1 клик на вашем ПК. Работает без VPN

Итак, качаем самую актуальную версию FreeGPT. Вы можете как установить обычную версию самостоятельно, так и воспользоваться портативной версией, не требующей установки и запускающуюся в один клик. Портативные версии можно найти в релизах на Github проекта, они помечены припиской portable.

На данный момент есть 2 портативные версии - архив с python скриптами и виртуальной средой, и скомпилированный exe файл. Второй более компактный, но к сожалению, из-за сборки в exe некоторые антивирусы выдают ложные срабатывания, поэтому если вас это смущает - воспользуйтесь версией в архиве.

Пользуемся бесплатно API ChatGPT без ограничений Нейронные сети, ChatGPT, API, Бесплатно, Чат-бот, Гайд, Python, Длиннопост



После загрузки/распаковки нам нужно запустить bat файл start_endpoint.bat или же start_portable_endpoint.bat, в зависимости от того, какая у вас версия программы - обычная или портативная.

После запуска, у вас откроется окно консоли:

Пользуемся бесплатно API ChatGPT без ограничений Нейронные сети, ChatGPT, API, Бесплатно, Чат-бот, Гайд, Python, Длиннопост

Адрес нашего Endpoint сервера - http://127.0.0.1:1337

Именно его мы и будем использовать в различных программах и плагинах вместо родного https://api.openai.com

Учтите, что называться он может по-разному: Endpoint, OpenAI API Server, API URL, и т.д. Самое главное, что обычно по умолчанию это идет адрес https://api.openai.com и его нам надо заменить на наш http://127.0.0.1:1337

Давайте разберем на примере.

Возьмем программу ChatGPT Next. В настройках у нас есть графа Endpoint, где указан официальный API сервер OpenAI:

Пользуемся бесплатно API ChatGPT без ограничений Нейронные сети, ChatGPT, API, Бесплатно, Чат-бот, Гайд, Python, Длиннопост

Пишем сюда наш адрес: http://127.0.0.1:1337 а в поле ключ указываем псевдо-ключ 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

На самом деле ключ указывать не обязательно, просто некоторые программы проверяют его наличие и отказываются работать без него. Именно по этому мы используем ключ заглушку. Вы можете указать тут абслютно любой ключ, который найдете в сети, или же воспользоваться генератором псевдо-ключей

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

Пользуемся бесплатно API ChatGPT без ограничений Нейронные сети, ChatGPT, API, Бесплатно, Чат-бот, Гайд, Python, Длиннопост

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

К примеру, вот программа и плагин для Chrome OpenAI Translator:

Пользуемся бесплатно API ChatGPT без ограничений Нейронные сети, ChatGPT, API, Бесплатно, Чат-бот, Гайд, Python, Длиннопост


Или плагин помощник для Visual Studio Code:

Пользуемся бесплатно API ChatGPT без ограничений Нейронные сети, ChatGPT, API, Бесплатно, Чат-бот, Гайд, Python, Длиннопост


Важный нюанс: работать будут только те модели, которые есть в FreeGPT. Если вы попытаетесь работать с моделями, не добавленными в FreeGPT, у вас будут лишь ошибки.

На данный момент, работают: ChatGPT-3.5-Turbo, ChatGPT-3.5-Turbo-0613, ChatGPT-3.5-Turbo-16k, ChatGPT-3.5-Turbo-16k-0613


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

Показать полностью 5
[моё] Нейронные сети ChatGPT API Бесплатно Чат-бот Гайд Python Длиннопост
150
69
bigseo
bigseo
2 года назад

Backend - Fronrend - API⁠⁠

Backend - Fronrend - API Backend, Frontend, API, Программирование, Программист, Проект, Картинка с текстом
Показать полностью 1
Backend Frontend API Программирование Программист Проект Картинка с текстом
23
Grust32
2 года назад
Лига программистов

Собираем стату по контрибьютерам с Gitlab⁠⁠

Делюсь свежей поделкой, может кому пригодиться. Простой, синхронный обход Gitlab API, ничего нового. Выплевывает CSV который потом удобно вставить в Гугл или Эксель табличку. Страшный UI присутствует. Работает с версией гитлаба выше 12. Kotlin, Ktor.
https://github.com/qwertukg/gitlab-data-picker

[моё] IT Программирование API Github Текст
4
13
Аноним
Аноним
2 года назад
Лига программистов

Покойся с миром, Telk, создатель Some random API...⁠⁠

Возможно, вы знаете о some random API (SRA)... Сегодня на официальном дискорд сервере был выложен пост в канале updates.

Вот его содержание

Hey @everyone I have some heavy news. This should have been posted earlier but it's been a long weekend and it's been a lot to get everything sorted.

As some of you already know Telk's brother Chrono posted the below message on friday:

```Some of you may know me as Telkenes (the creator) 's little brother in real life. Im here to share the unfortunate news that he has passed away on the 8th of May 2023... I will not be sharing details or responding to any questions regarding this death as its personal. Thank you for all the support for Some Random Api that he made and all the patreon supporters. Sadly once the domain expires so will all the things (or not entirely sure how it works) as I do not know how or have access to those things to refresh them to keep them going. There will be no continuation for the API and no changes will be made. (unless the other developers decide to continue it -- I do not know who is involved for that though i dont think anyone is) The discord server will be left as is as I am not going to do anything to it.

I know it is very sudden and random but rest assured it wasnt suicide as he was sick and other stuff. A lot of things happened and I myself am already feeling better. Sorry and Thank you```

The future of SRA is going to be continued on by me in Telk's memory.

I've made a tribute on the SRA site here https://some-random-api.com/tribute

I understand if this news comes as a shock to you, and you aren't alone.

Feel free to reach out should you like to add anything to the tribute or if you'd just like to talk.

Перевод такой

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

Как некоторые из вас уже знают, брат Телка Chrono опубликовал нижеприведенное сообщение в пятницу:

```Некоторые из вас, возможно, знают меня как младшего брата Телкенеса (создателя) в реальной жизни. Я здесь, чтобы поделиться печальной новостью о том, что он скончался 8 мая 2023 года... Я не буду делиться подробностями или отвечать на какие-либо вопросы, касающиеся этой смерти как личной. Спасибо вам за всю поддержку какого-то случайного Api, который он создал, и всем сторонникам patreon. К сожалению, как только срок действия домена истечет, то же самое произойдет со всеми вещами (или я не совсем уверен, как это работает), поскольку я не знаю, как или не имею доступа к этим вещам, чтобы обновить их, чтобы они продолжали работать. Продолжения для API не будет, и никаких изменений внесено не будет. (если только другие разработчики не решат продолжить это - я не знаю, кто в этом замешан, хотя и не думаю, что кто-то замешан) Сервер discord будет оставлен как есть, поскольку я не собираюсь ничего с ним делать.

Я знаю, это очень внезапно и случайно, но будьте уверены, это не было самоубийством, так как он был болен и все такое прочее. Многое произошло, и я сам уже чувствую себя лучше. Извините и спасибо вам```

Будущее SRA будет продолжено мной в память о Телке.

Я отдал дань уважения на сайте SRA здесь https://some-random-api.com/tribute

Я понимаю, если эта новость станет для вас шоком, и вы не одиноки.

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

Источник: discord сообщество Some Random API

Показать полностью
Смерть API Печаль Трагедия Человек Текст
5
2
trapwalker
trapwalker
2 года назад
Искусственный интеллект
Серия Простыми словами

ИскИны играют в Мафию⁠⁠

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

Спешу поделиться, поскольку, как ни странно, еще никто не запостил это на Пикабу.

Прошлый мой пост про устройство ChatGPT "на пальцах" обрёл некоторую (по моим меркам) популярность, а если так, то этот ролик тоже будет кому-то интересен.

TLDR: Тут Onigiri заставляет ChatGPT играть против себя в мафию. По ходу он рассказал о нескольких интересных тонкостях этой нейросети.

YouTube Нейронные сети Искусственный интеллект Игра мафия Обман Javascript Программирование API ChatGPT Видео
5
NEDoK
2 года назад

Как мы ChatGPT-3 бота учили контекст запоминать⁠⁠

Привет, это NED, сейчас я расскажу вам о разработке нашего нового бота под названием projectND(Nastya Dyatlova) ,данный бот работает только в телеграм и находится в закрытом тестировании, чтобы туда попасть вам необходимо вступить в паблик ChatGPT Артемий (vk.com) и войти в беседу ,находящуюся в закрепленном посте , да-да, там тоже живет бот и работает 24/7 на моем сервере абсолютно бесплатно !

Так вот, в прошлых статьях я писал о том ,как поднимал сервер , запускал паблик ВК и то как ChatGPT 3.5 написал мне код и я его доработал без опыта в программировании !

Сейчас же после наплыва аудитории возникла потребность в том, чтобы бот смог поддержать разговор ,так как это основная претензия (ну и еще жалуются на вылеты, ну тут сорян openAI часто вылетает с разрывом соединения) прочитав пару гайдов в интернете ,как сделать так ,чтобы PythonBot мог понимать контекст ,а также спросив об этом ChatGPT бота у меня с горем пополам получилось сделать ,так ,чтобы ботик мог запоминать контекст...

НО ТУТ

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

Как мы ChatGPT-3 бота учили контекст запоминать Telegram, Искусственный интеллект, Переписка, IT юмор, ChatGPT, Gpt, Машинное обучение, Нейронные сети, Python, Программирование, Юмор, Девушки, Диалог, Программист, IT, API, Интернет, ВКонтакте, Бот, Чат-бот, Длиннопост
Как мы ChatGPT-3 бота учили контекст запоминать Telegram, Искусственный интеллект, Переписка, IT юмор, ChatGPT, Gpt, Машинное обучение, Нейронные сети, Python, Программирование, Юмор, Девушки, Диалог, Программист, IT, API, Интернет, ВКонтакте, Бот, Чат-бот, Длиннопост
Как мы ChatGPT-3 бота учили контекст запоминать Telegram, Искусственный интеллект, Переписка, IT юмор, ChatGPT, Gpt, Машинное обучение, Нейронные сети, Python, Программирование, Юмор, Девушки, Диалог, Программист, IT, API, Интернет, ВКонтакте, Бот, Чат-бот, Длиннопост

ЭТО БЫЛИ МОИ ЗАПРОСЫ, А ВОТ ЧТО НАЧАЛИ ТВОРИТЬ РЕБЯТА ИЗ ЧАТИКА

Как мы ChatGPT-3 бота учили контекст запоминать Telegram, Искусственный интеллект, Переписка, IT юмор, ChatGPT, Gpt, Машинное обучение, Нейронные сети, Python, Программирование, Юмор, Девушки, Диалог, Программист, IT, API, Интернет, ВКонтакте, Бот, Чат-бот, Длиннопост
Как мы ChatGPT-3 бота учили контекст запоминать Telegram, Искусственный интеллект, Переписка, IT юмор, ChatGPT, Gpt, Машинное обучение, Нейронные сети, Python, Программирование, Юмор, Девушки, Диалог, Программист, IT, API, Интернет, ВКонтакте, Бот, Чат-бот, Длиннопост
Как мы ChatGPT-3 бота учили контекст запоминать Telegram, Искусственный интеллект, Переписка, IT юмор, ChatGPT, Gpt, Машинное обучение, Нейронные сети, Python, Программирование, Юмор, Девушки, Диалог, Программист, IT, API, Интернет, ВКонтакте, Бот, Чат-бот, Длиннопост
Как мы ChatGPT-3 бота учили контекст запоминать Telegram, Искусственный интеллект, Переписка, IT юмор, ChatGPT, Gpt, Машинное обучение, Нейронные сети, Python, Программирование, Юмор, Девушки, Диалог, Программист, IT, API, Интернет, ВКонтакте, Бот, Чат-бот, Длиннопост
Как мы ChatGPT-3 бота учили контекст запоминать Telegram, Искусственный интеллект, Переписка, IT юмор, ChatGPT, Gpt, Машинное обучение, Нейронные сети, Python, Программирование, Юмор, Девушки, Диалог, Программист, IT, API, Интернет, ВКонтакте, Бот, Чат-бот, Длиннопост

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

Спасибо за внимание, это была больше развлекательная статья нежели познавательная, однако обученная модель с пониманием контекста вскоре будет внедрена, как в телеграм, так и ВК ботов

-----------------------------

Ссылки на ботов : ВК ChatGPT Артемий (vk.com)

Бот Телеграм : https://t.me/GPT_RUSSIA_BOT

Повторяю, протестировать Настю можно только вступив в наш чатик, который находится в паблике ВК, админ чаще всего находится там и решает прежде всего проблемы бота находящегося в ВК

-----------------------------

Показать полностью 8
[моё] Telegram Искусственный интеллект Переписка IT юмор ChatGPT Gpt Машинное обучение Нейронные сети Python Программирование Юмор Девушки Диалог Программист IT API Интернет ВКонтакте Бот Чат-бот Длиннопост
6
1
Kabzki
Kabzki
2 года назад
Лига программистов

Вопрос: откуда сервисы afisha или кассир.ру берут данные?⁠⁠

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

И дополнительный вопрос. Если кто помнит, был сервис Foursquare. Чек-ины. Потом он разделился на Swarm. Но в итоге стал самой большой геолокационной базой мест в мире. С открытым api. Кто то вопрос изучал интеграции с ними? как, сколько стоит и т д.

Гуглил, не нагуглил. Спасибо заранее за ответы.

[моё] IT Программирование API Текст
20
23
Web.Study
Web.Study
2 года назад
Web-технологии

4 редких API, которые встречаются в дикой природе JavaScript⁠⁠

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


Наш канал для новичков во Front-end

4 редких API, которые встречаются в дикой природе JavaScript Программирование, IT, Javascript, API, Frontend, Программист, Длиннопост

Beacon API


Beacon API позволяет отправлять на сервер асинхронные и неблокирующие запросы (методом POST), которые гарантированно завершаются до выгрузки страницы, в отличие от XMLHttpRequest или Fetch API.


Одним из основных вариантов использования Beacon API является логгирование активности пользователей или отправка аналитических данных на сервер.


Раньше для этого приходилось прибегать к таким уловкам, как обработка событий unload или beforeunload глобального объекта Window с помощью синхронного XMLHttpRequest, например:


const someData = {
a: 1,
b: 2,
};
// страница будет выгружена только после отправки данного запроса
window.addEventListener("beforeunload", () => {
const xhr = new XMLHttpRequest(); 
xhr.open("POST", "https://example.com/beacon");
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
const params = new URLSearchParams(Object.entries(someData)); xhr.send(params); 
});


Интерфейс


Beacon API расширяет свойство navigator методом sendBeacon, который имеет следующую сигнатуру:

navigator.sendBeacon(url: string | URL, data?: BodyInit | null)

- url — адрес сервера;

- data — опциональные данные для отправки, которые могут быть строкой, объектом, ArrayBuffer, Blob, DataView, FormData, TypedArray или URLSearchParams.


sendBeacon возвращает логическое значение (true или false) — индикатор постановки data в очередь для передачи.


Пример использования


Создаем шаблон проекта с помощью Yarn и Vite на чистом JavaScript:

# rare-web-apis - название проекта
# --template vanilla - используемый шаблон
yarn create vite rare-web-apis --template vanilla

Переходим в созданную директорию, устанавливаем зависимости и запускаем сервер для разработки:

cd rare-web-apis
yarn
yarn dev

Определяем в файле main.js следующий обработчик:

4 редких API, которые встречаются в дикой природе JavaScript Программирование, IT, Javascript, API, Frontend, Программист, Длиннопост

Событие visibilitychange объекта document (подробнее о нем можно почитать по ссылке, приведенной в начале статьи) является более надежным способом определения состояния видимости страницы, чем события unload или beforeunload. В обработчике при скрытии страницы, например, при переключении вкладки или сворачивании страницы, с помощью sendBeacon по адресу https://example.com/beacon отправляются некоторые данные в форме URLSearchParams.


Результат переключения вкладки:

4 редких API, которые встречаются в дикой природе JavaScript Программирование, IT, Javascript, API, Frontend, Программист, Длиннопост
4 редких API, которые встречаются в дикой природе JavaScript Программирование, IT, Javascript, API, Frontend, Программист, Длиннопост

Поддержка — 96.8%.



Clipboard API



Clipboard API позволяет выполнять асинхронные операции записи/чтения текстовых и других данных в/из системного буфера обмена, а также обрабатывать события copy, cut и paste (копирование, вырезка и вставка) буфера.

По причинам безопасности Clipboard API доступен только при условии, что:


- страница обслуживается по протоколу https или localhost;

- страница находится в активной вкладке браузера (не находится в фоновом режиме);

- операции записи/чтения инициализируются пользователем (например, с помощью нажатия кнопки).


Разрешение clipboard-write для записи данных предоставляется активной странице автоматически, а разрешение clipboard-read для чтения данных запрашивается у пользователя с помощью Permissions API.


Раньше для работы с содержимым редактируемой области использовался метод document.execCommand. Например, вот как выполнялась запись текста:

4 редких API, которые встречаются в дикой природе JavaScript Программирование, IT, Javascript, API, Frontend, Программист, Длиннопост

Интерфейс


Clipboard API расширяет свойство navigator интерфейсом Clipboard, экземпляры которого предоставляют следующие методы для работы с буфером:


- writeText(text: string) — для записи текста, принимает строку;

- readText() — для чтения текста, возвращает строку;

- write(data: ClipboardItem[]) — для записи данных, принимает массив объектов ClipboardItem (см. ниже);

- read() — для чтения данных, возвращает массив объектов ClipboardItem.


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


ClipboardItem — это интерфейс, предназначенный для работы с нетекстовыми данными, который имеет следующую сигнатуру:

new ClipboardItem(
items: Record<string, string | Blob | PromiseLike<string | Blob>>,
options?: ClipboardItemOptions
)

- items — данные для записи в форме объектов, ключами которых являются MIME-типы, а значениями — строки, Blob или промисы, разрешающиеся строками или Blob;

- options — опциональные настройки (точнее, одна настройка — presentationStyle).


В действительности, ClipboardItem можно использовать также для работы с текстовыми данными, но есть один нюанс, о котором чуть позже.


Что касается событий copy, cut и paste, то их обработка обычно выполняется через свойство clipboardData события ClipboardEvent, которое содержит объект DataTransfer, предоставляющий следующие методы:


- setData(format: string, data: string) — для записи данных;

- getData(format: string) — для чтения данных;

- clearData() — для удаления данных и др.

Пример использования


Начнем с записи и чтения текста. Редактируем файл index.html следующим образом:

4 редких API, которые встречаются в дикой природе JavaScript Программирование, IT, Javascript, API, Frontend, Программист, Длиннопост

Получаем ссылки на DOM-элементы:

4 редких API, которые встречаются в дикой природе JavaScript Программирование, IT, Javascript, API, Frontend, Программист, Длиннопост

Определяем функцию копирования текста:


async function copyText() {
let textToCopy; 
// получаем выделение
const selectedText = getSelection().toString().trim(); 
// текстом для копирования является либо выделенный текст, либо содержимое `copyBox`
selectedText
? (textToCopy = selectedText)
: (textToCopy = copyBox.textContent.trim()); 
// если текст отсутствует
if (!textToCopy) {
logBox.textContent = "No text to copy"; 
return; 
}
try {
// записываем текст в буфер
await navigator.clipboard.writeText(textToCopy); 
logBox.textContent = "Copy success"; 
} catch (e) {
console.error(e); 
logBox.textContent = "Copy error"; 
}
}

Определяем функцию для вставки текста:

4 редких API, которые встречаются в дикой природе JavaScript Программирование, IT, Javascript, API, Frontend, Программист, Длиннопост

Наконец, регистрируем соответствующие обработчики:

copyBtn.addEventListener("click", copyText); 
pasteBtn.addEventListener("click", pasteText);

Обратите внимание: при первой вставке текста браузер запрашивает разрешение на чтение буфера. При отказе в разрешении выбрасывается исключение DOMException: Read permission denied.


Записать текстовые данные с помощью ClipboardItem можно следующим образом:

4 редких API, которые встречаются в дикой природе JavaScript Программирование, IT, Javascript, API, Frontend, Программист, Длиннопост

Обратите внимание: несмотря на то, что значением объекта ClipboardItem может быть строка (new ClipboardItem({ [type]: text })), при записи такого объекта в буфер выбрасывается исключение DOMException: Invalid Blob types.


Также обратите внимание, что при программной записи данных в случае, когда страница находится в фоновом режиме, выбрасывается исключение DOMException: Document is not focused.


Для извлечения данных из ClipboardItem используется метод getType:

const blob = await item.getType(type); 
const text = await blob.text(); 
console.log(text); // Text to copy

Добавим возможность копирования и вставки изображения, хранящегося на сервере.


Добавляем кнопки в index.html:

<div>
<button id="copy-img-btn">Copy remote image</button>
<button id="paste-img-btn">Paste remote image</button>
</div>

Определяем тип и функцию для копирования изображения:


const IMG_TYPE = "image/png";
async function copyRemoteImg() {
try {
const response = await fetch(
"https://images.unsplash.com/photo-1529788295308-1eace6f67388..."
);

// см. ниже
const blob = new Blob([await response.blob()], { type: IMG_TYPE });

// создаем элемент копирования

const item = new ClipboardItem({ [blob.type]: blob });
// записываем его в буфер
await navigator.clipboard.write([item]);

logBox.textContent = "Copy image success";
} catch (e) {
console.error(e);
logBox.textContent = "Copy image error";
}
}

Не уверен насчет других браузеров, но в Chrome наблюдается следующее:


- при преобразовании изображения из тела ответа в Blob с помощью response.blob() дефолтным типом становится image/jpeg (независимо от типа запрашиваемого изображения);

- при попытке записи такого Blob в буфер выбрасывается исключение DOMException: Type image/jpeg not supported on write.


Поэтому приходится выполнять двойное преобразование с помощью new Blob([await response.blob()], { type: IMG_TYPE });.


Определяем функцию для чтения данных из буфера и вставки изображения:

4 редких API, которые встречаются в дикой природе JavaScript Программирование, IT, Javascript, API, Frontend, Программист, Длиннопост

Итерация по item.types является безопасной, в отличие от прямого обращения к item.getType() — при отсутствии типа выбрасывается исключение DOMException: Failed to execute 'getType' on 'ClipboardItem': The type was not found.


Регистрируем соответствующие обработчики:

copyImgBtn.addEventListener("click", copyRemoteImg); pasteImgBtn.addEventListener("click", pasteRemoteImg);

Реализуем модификацию копируемых и вставляемых данных.


Редактируем index.html:


<textarea cols="30" rows="10" id="text-area">Lorem ipsum dolor sit amet consectetur, adipisicing elit. Libero, labore.</textarea>

Определяем функцию модификации копируемых данных:

4 редких API, которые встречаются в дикой природе JavaScript Программирование, IT, Javascript, API, Frontend, Программист, Длиннопост

Данная функция добавляет к копируемому тексту строку copied from MySite.com.


Определяем функцию модификации добавляемых данных:

4 редких API, которые встречаются в дикой природе JavaScript Программирование, IT, Javascript, API, Frontend, Программист, Длиннопост

Данная функция переводит добавляемый текст в верхний регистр.


Обратите внимание, что в обоих случаях отключается стандартная обработка события браузером с помощью e.preventDefault().


Регистрируем соответствующие обработчики:

textArea.addEventListener("copy", onCopy); textArea.addEventListener("paste", onPaste);

Поддержка — 95.08%.



Notifications API


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


Интерфейс


Для запроса разрешения на показ уведомлений используется метод Notification.requestPermission. Данный метод возвращает промис, который разрешается или отклоняется со статусом разрешения. Статус разрешения содержится в свойстве Notification.permission и может иметь одно из трех значений:


- default — запрос на разрешение не выполнялся, уведомления не отображаются;

- granted — пользователь предоставил разрешение, уведомления отображаются;

- denied — пользователь отклонил запрос, уведомления не отображаются.


Для создания уведомления используется конструктор Notification, который имеет следующую сигнатуру:

new Notification(title: string, options?: NotificationOptions | undefined)

- title: string — заголовок уведомления;

- options — опциональный объект с настройками, такими как:

- body: string — тело уведомления;

- icon: string — ссылка на иконку;

- tag: string — тег, используемый для идентификации уведомления. Тег позволяет обновлять уведомления без их отображения, что может быть полезным при большом количестве уведомлений;

- image: string — ссылка на изображение;

- data: any — данные, ассоциированные с уведомлением и др.


Для закрытия уведомления используется метод notification.close.


Notifications API позволяет обрабатывать следующие события:


- show — отображение уведомления;

- close — закрытие уведомления;

- click — нажатие на уведомление;

- error.


Пример использования


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


Определяем в index.html кнопку для запроса разрешения на показ уведомлений:

<button id="notification-btn">Enable notifications</button>

Регистрируем соответствующий обработчик в main.js:

notificationBtn.addEventListener("click", () => { Notification.requestPermission();
});
Определяем переменные для уведомления и идентификатора таймера, а также функцию для создания уведомления:
4 редких API, которые встречаются в дикой природе JavaScript Программирование, IT, Javascript, API, Frontend, Программист, Длиннопост

Несмотря на то, что большинство браузеров автоматически уничтожают уведомления по прошествии некоторого времени (около 4 сек), рекомендуется делать это явно.


Расширяем обработку изменения состояния видимости страницы:

4 редких API, которые встречаются в дикой природе JavaScript Программирование, IT, Javascript, API, Frontend, Программист, Длиннопост

Включаем уведомления:

4 редких API, которые встречаются в дикой природе JavaScript Программирование, IT, Javascript, API, Frontend, Программист, Длиннопост

Переключаем вкладку:

4 редких API, которые встречаются в дикой природе JavaScript Программирование, IT, Javascript, API, Frontend, Программист, Длиннопост

При клике по уведомлению на странице приложения появляется сообщение Notification clicked.


Обратите внимание: при нахождении в другой вкладке уведомление уничтожается через 3 сек, а при возвращении в приложение — сразу.


Поддержка оставляет желать лучшего — 79.86%.



Performance API


Performance API позволяет измерять задержку в приложении на стороне клиента. Интерфейсы Performance (интерфейсы производительности) считаются высокоточными (high resolution), поскольку имеют точность, равную тысячным миллисекунды (точность зависит от ограничений аппаратного или программного обеспечения). Данные интерфейсы используются для вычисления частоты кадров (например, в анимации) и бенчмаркинге (например, для измерения времени загрузки ресурса).


Поскольку системные часы (system clock) платформы подвергаются различным корректировкам (таким как коррекция времени по NTP), интерфейсы Performance поддерживают монотонные часы (monotonic clock), т.е. время, которое все время увеличивается. Для этого Performance API определяет тип DOMHighResTimeStamp вместо использования интерфейса Date.now().


DOMHighResTimeStamp представляет высокоточную отметку времени (point in time). Данный тип является double и используется интерфейсами производительности. Значение DOMHighResTimeStamp может быть дискретной отметкой времени или разницей между двумя такими отметками.


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


Интерфейс


Основным методом, предоставляемым Performance API, является метод now, который возвращает DOMHighResTimeStamp, значение которого зависит от времени создания контекста браузера или воркера (worker).

Кроме этого, рассматриваемый интерфейс содержит два основных свойства:


- timing — возвращает объект PerformanceTiming, содержащий такую информацию, как время начала навигации, время начала и завершения перенаправлений, время начала и завершения ответов и т.д.;

- navigation — возвращает объект PerformanceNavigation, представляющий тип навигации, происходящей в текущем контексте браузера, такой как переход к странице из истории, по ссылке и т.п.


Пример использования


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


Редактируем main.js:

4 редких API, которые встречаются в дикой природе JavaScript Программирование, IT, Javascript, API, Frontend, Программист, Длиннопост

Определяем функцию вычисления факториала числа и измеряем время ее выполнения:

const getFactorial = (n) => (n <= 1 ? 1 : n * getFactorial(n - 1)); howLong(getFactorial)(12);

Определяем функцию получения данных из сети и измеряем время ее выполнения:

const fetchSomething = (url) => fetch(url).then((r) => r.json()); howLong(fetchSomething)("https://jsonplaceholder.typicode.com/users?_limit=10");

Результат:

4 редких API, которые встречаются в дикой природе JavaScript Программирование, IT, Javascript, API, Frontend, Программист, Длиннопост

Поддержка — 97.17%.



Иии...


На этом все, надеюсь ты узнал что-то новое и применишь это на практике. Иначе зачем я писал этот и прошлый пост

Показать полностью 17
[моё] Программирование IT Javascript API Frontend Программист Длиннопост
1
Посты не найдены
О Нас
О Пикабу
Контакты
Реклама
Сообщить об ошибке
Сообщить о нарушении законодательства
Отзывы и предложения
Новости Пикабу
RSS
Информация
Помощь
Кодекс Пикабу
Награды
Команда Пикабу
Бан-лист
Конфиденциальность
Правила соцсети
О рекомендациях
Наши проекты
Блоги
Работа
Промокоды
Игры
Скидки
Курсы
Зал славы
Mobile
Мобильное приложение
Партнёры
Промокоды Biggeek
Промокоды Маркет Деливери
Промокоды Яндекс Путешествия
Промокоды М.Видео
Промокоды в Ленте Онлайн
Промокоды Тефаль
Промокоды Сбермаркет
Промокоды Спортмастер
Постила
Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии