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

Рыбный дождь

Спорт, Симуляторы, Рыбалка

Играть

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

  • SpongeGod SpongeGod 1 пост
  • Uncleyogurt007 Uncleyogurt007 9 постов
  • ZaTaS ZaTaS 3 поста
Посмотреть весь топ

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

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

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

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

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
0617
0617
6 часов назад

Обновление информации в рабочей базе Битрикс⁠⁠

Есть рабочая база, в ней таблица контактов - примерно 100 тысяч строк.
Нужно обновить номера телефонов - примерно 30 тысяч строк. Новые телефоны в екселевской табличке.
Правильно ли я понимаю, что мне нужно вот это? https://www.bitrix24.ru/apps/app/dclouds.excel24/

Я в битриксах абсолютный нуль и не очень хочу в это вникать, но нужно помочь людям. С внедренцами немношк не сошлись характерами, теперь есть проблема.

Битрикс API Вопрос Текст
7
4
rostexlive
rostexlive
16 дней назад

Не нашел карманный достойный Health Checker – написал свой⁠⁠

Не нашел карманный достойный Health Checker – написал свой Разработка, Telegram, Бот, API, Java, Telegram (ссылка), Длиннопост

Недавно с товарищем разрабатывали один внутренний ресурс и понадобился удобный Alert. Нужно было получать уведомления, если система вдруг перестанет отвечать. Подумал, что телеграм в этом плане подойдет идеально: ничего дополнительно ставить не нужно, все под рукой.

Я пробовал поискать готового бота, пообщался с коллегами — давали разные варианты. Но либо функциональность не та, либо интерфейс неудобный. В итоге решил: «А почему бы не написать своего?»

И написал.

Бот по расписанию пингует API эндпоинты (в общем то любую страницу) и присылает уведомление в телеграм, если что-то пошло не так: нет соединения, долгий отклик или отрицательный код ответа. Звучит просто, но внутри все немного интереснее.

Писал на Java 21. Да, знаю, не супер прагматично для телеграм-бота, но я джавист — привычнее и спокойнее.

Начал с проектирования структуры и сущностей. Получились User (потом масштабировал в Chat), Api и HistoryApi. Первоначально бот управлялся через команды, но по мере роста модели управления пришлось перейти на inline-меню, чтобы UI был удобнее.

Проверку эндпоинтов реализовал конкурентно: выгрузку списка API из базы распределяю по виртуальным потокам (Java 21). В каждом потоке выполняются задачи проверки и асинхронного ожидания ответа (с учётом таймаутов). Такой подход позволил без лишних накладных расходов параллельно обрабатывать тысячи проверок.

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

Кстати, сервер, через который бот выполняет проверки, находится в Санкт-Петербурге (пока). Это значит, что время отклика измеряется именно из этого региона, и результаты могут немного отличаться от того, что вы видите со своего компьютера.

Сейчас бот работает так:

  • добавляем эндпоинт — встали в очереди на проверку;

  • дефолтный интервал проверки — 15 минут;

  • максимальное время отклика до уведомления — 2000 мс;

  • интервал обхода очереди всех API раз в минуту.

Не нашел карманный достойный Health Checker – написал свой Разработка, Telegram, Бот, API, Java, Telegram (ссылка), Длиннопост

Меню управления

В меню управления можно изменить название, URL, интервал проверки, время отклика, приостановить проверку, отключить уведомления для конкретного API или удалить его.

Если во время проверки больше 10 раз не удается получить положительный ответ, проверка ставится на паузу. Пользователь после решения проблемы с ресурсом может возобновить её вручную.

Не нашел карманный достойный Health Checker – написал свой Разработка, Telegram, Бот, API, Java, Telegram (ссылка), Длиннопост

Авто-остановка проверок при многократных ошибках

Бот бесплатный, но есть разные планы для удобства и справедливого распределения ресурсов.

  • Бесплатный — для обычных пользователей: до 2 API, проверка не чаще чем раз в 15 минут, простой порог отклика 1000 мс, статистика только последней проверки. Для большинства это более чем достаточно.

  • Персональный — для тех, кто хочет больше контроля: до 5 API, проверка каждую минуту, порог отклика до 250 мс, статистика последних 5 проверок и выгрузка CSV до 14 дней.

  • Групповой — для команд и групп: работа в чатах, до 20 API.

Эти тарифы сделаны не для того, чтобы кого-то заставлять платить, а чтобы покрывать расходы на активных пользователей, которые используют ресурсоёмкие функции. Если вы просто хотите получать уведомления о своих парах API, бесплатного плана хватит с головой.

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

В перспективе хочу добавить поддержку Мini app — чтобы UI стал еще удобнее и можно было управлять проверками прямо в Telegram без многоступенчатых меню.

Бот доступен по ссылке - @APIHealthCheckerBot

Показать полностью 2
Разработка Telegram Бот API Java Telegram (ссылка) Длиннопост
4
Kapibat
Kapibat
1 месяц назад

Конечная точка⁠⁠

В программировании есть множество подходов. Все их описывать - книгу писать. Остановлюсь на подходе клиент-сервер.

Именно в таком порядке. Пока клиент ничего не просит, сервер будет молчать.

Для взаимодействия между клиентом и сервером разрабатываются так называемые программные интерфейсы (API), соглашение "общения" между клиентом и сервером. Невозможно обойти эти соглашения.

API определяет некие точки входа, которые на английском называются endpoint, то есть конечные точки  или точки выхода. Довольно забавно.

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

[моё] Программирование IT API Текст
2
6
AI.Caramba
AI.Caramba
1 месяц назад
Искусственный интеллект

Как я неделю боролся со Swagger и в итоге сделал мощный промпт для проверки API⁠⁠

Всем привет!

У меня перестал собираться API и я долго не мог его поправить, ИИ мощно тормозили и несли фигню, а Swagger выдавал десятки ошибок.

Промпт хорошо показал себя для ChatGPT, а вот Gemini и Flash и Pro мощно облажались. ХЗ почему так.

Вот сам промпт, потом нужно работать с рекомендациями, но они хотя бы становятся предметными:

Ты выступаешь как эксперт по OpenAPI (Swagger) и REST API. Проверь следующую спецификацию OpenAPI (YAML или JSON) **на все возможные ошибки, несовместимости и плохие практики**, которые могут помешать сборке и отображению в Swagger UI или привести к ошибкам при генерации клиента. Не галлюцинируй!

Проанализируй файл по следующим пунктам:

1. **Синтаксические ошибки** YAML/JSON (неправильные отступы, запятые, кавычки и т.д.).

2. **Ошибки в `$ref`**:

- битые или циклические ссылки;

- ссылки на несуществующие объекты.

3. **Проверка структуры OpenAPI**:

- правильность `openapi`, `info`, `paths`, `components`;

- все обязательные блоки на месте.

4. **Ошибки в `paths` и методах**:

- дублирование методов;

- отсутствие `operationId`;

- некорректные или дублирующие параметры (`query`, `path`, `header`);

- отсутствие описаний (`summary`, `description`).

5. **Ошибки в `parameters` и `requestBody`**:

- неуказанные `schema` или `type`;

- ошибки в `required`, `nullable`, `example`, `enum`, `format`.

6. **Ошибки в `responses`**:

- отсутствие обязательных ответов (например, `400`, `500`);

- отсутствие схем в теле ответа;

- `example` не соответствует `schema`.

7. **Ошибки в `components.schemas`**:

- типы данных, противоречащие описанию;

- `example`, не соответствующий `properties`;

- неиспользуемые схемы.

8. **Ошибки в `securitySchemes`**:

- неверно указанные схемы авторизации;

- не подключены к методам.

9. **Ошибки в валидации по версии** (`openapi: 3.0.x` или `3.1.0`):

- элементы, не поддерживаемые данной версией;

- устаревшие или недопустимые ключи.

10. **Отсутствие или дублирование `operationId`**.

11. **Нарушения соглашений о наименовании**:

- `operationId`, `parameters`, `schemas` — не в camelCase/snake_case.

12. **Иные ошибки** или плохие практики, мешающие поддержке, генерации клиента, тестированию или UX.

❗ В ответе:

- сначала выдай краткую сводку по найденным проблемам (по пунктам);

- затем — подробности с указанием строки (если известна) или блока;

- и рекомендации по исправлению.

Начни с вопроса, готов ли я отправить файл, или предложи вставить YAML прямо сюда.

Показать полностью
[моё] Искусственный интеллект Нейронные сети Системный анализ API Контент нейросетей ChatGPT Текст
3
5
renatweb
renatweb
1 месяц назад
Лига Яндекса Пикабу [ЛЯП]

Полный список прав OAuth Яндекс ID: доступы к API Яндекс.Метрики, Вебмастера, Директа, Диска и других сервисов в 2025 году⁠⁠

Решил разобраться с API Яндекс.Метрики и Вебмастера, как-то не очевидно при создании приложения где посмотреть, какие вообще есть варианты с правами доступа (scopes), которые можно запросить через OAuth. Поковырялся перебором.

Как итог - полный и актуальный на август 2025 года список всех возможных доступов при регистрации приложения на oauth.yandex.ru

Здесь расшифровка каждого scope: от работы с Яндекс.Метрикой и Директом до управления календарями, почтой, умным домом и корпоративными сервисами Яндекс 360.

📊 Яндекс.Метрика (metrika)

Предоставляет доступ к аналитике веб-сайтов и мобильных приложений.

  • Получение статистики, чтение параметров своих и доверенных счётчиков
    metrika:read

  • Создание счётчиков, изменение параметров своих и доверенных счётчиков
    metrika:write

  • Загрузка офлайн данных (данные из CRM, офлайн конверсии, звонки)
    metrika:offline_data

  • Загрузка расходов
    metrika:expenses

  • Загрузка параметров пользователей
    metrika:user_params

  • Управление сегментами пользователей
    metrika:segments


🔍 Яндекс.Вебмастер (webmaster)

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

  • Получение информации о внешних ссылках на сайт
    webmaster:hostinfo

  • Добавление сайтов в Яндекс.Вебмастер, получение информации о статусе индексирования
    webmaster:verify

  • Добавление Турбо-страниц для сайта
    webmaster:turbopages


💼 Яндекс.Директ (direct)

Доступ к рекламным кампаниям и настройкам через API Яндекс.Директ.

  • Использование API Яндекс.Директа
    direct:api


🎯 Аудитории (audience)

  • Чтение параметров настройки своих и доверенных сегментов
    audience:read

  • Создание сегментов, изменение параметров настройки своих и доверенных сегментов
    audience:write


📺 Медиаметрика (mediametrika)

Работа с рекламными кампаниями в медийной сети.

  • Получение статистики, чтение параметров своих и доверенных рекламодателей и рекламных кампаний
    mediametrika:read

  • Создание рекламных кампаний, изменение параметров своих и доверенных рекламодателей и рекламных кампаний
    mediametrika:write


🧩 AppMetrica (appmetrica)

Интеграция с мобильной аналитикой AppMetrica.

  • Доступ к статистике приложений в AppMetrica, получение параметров настройки приложений
    appmetrica:read

  • Создание приложений в AppMetrica и изменение параметров их настройки
    appmetrica:write


🌐 Яндекс.Вики (wiki)

Работа с документами и знаниями в Яндекс.Вики.

  • Чтение из Вики
    wiki:read

  • Запись в Вики
    wiki:write


🗂️ Яндекс.Трекер (tracker)

Управление задачами и проектами.

  • Чтение из трекера
    tracker:read

  • Запись в трекер
    tracker:write


📅 Календарь (calendar)

Доступ к календарям и спискам дел.

  • Чтение и изменение содержимого календарей и списков дел
    calendar:all


📧 Почта (mail)

Доступ к электронной почте через IMAP и SMTP.

  • Чтение и удаление писем в почтовом ящике
    mail:imap_full

  • Доступ на чтение писем в почтовом ящике
    mail:imap_ro

  • Отправка писем через Яндекс.Почту по протоколу SMTP
    mail:smtp


📱 Яндекс ID (login)

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

  • Доступ к логину, имени и фамилии, полу
    login:info

  • Доступ к адресу электронной почты
    login:email

  • Доступ к дате рождения
    login:birthday

  • Доступ к портрету пользователя
    login:avatar

  • Доступ к номеру телефона
    login:default_phone

  • Доступ к домашнему и рабочему адресам
    login:address.home_work.read

  • Доступ к адресам – для быстрого заказа доставки
    login:address.all.read

  • Даю согласие на получение рекламных сообщений от данного
    login:promo_subscription


🖥️ Яндекс.Диск (cloud_api, yadisk)

Доступ к файлам и папкам на Яндекс.Диске.

  • Доступ к папке приложения на Диске
    cloud_api:disk.app_folder

  • Чтение всего Диска
    cloud_api:disk.read

  • Запись в любом месте на Диске
    cloud_api:disk.write

  • Доступ к информации о Диске
    cloud_api:disk.info

  • Доступ к Яндекс.Диску для приложений
    yadisk:disk


📦 Хранение данных (cloud_api.data)

Работа с данными приложения в облаке.

  • Доступ к общим данным пользовательских приложений
    cloud_api.data:user_data

  • Хранение данных приложения
    cloud_api.data:app_data


🏢 Яндекс 360: Администрирование (ya360_admin)

Управление почтовыми настройками в корпоративной среде.

  • Чтение правил обработки почты для домена
    ya360_admin:mail_read_routing_rules

  • Управление правилами обработки почты для домена
    ya360_admin:mail_write_routing_rules

  • Чтение настроек Антиспама для организации
    ya360_admin:mail_read_antispam_settings

  • Управление настройками Антиспама для организации
    ya360_admin:mail_write_antispam_settings

  • Чтение настроек почты пользователя
    ya360_admin:mail_read_user_settings

  • Управление настройками почты пользователя
    ya360_admin:mail_write_user_settings

  • Чтение Реестра Общих Ящиков
    ya360_admin:mail_read_shared_mailbox_inventory

  • Редактирование Реестра Общих Ящиков
    ya360_admin:mail_write_shared_mailbox_inventory

  • Просмотр разрешений на рассылку
    ya360_admin:mail_read_mail_list_permissions

  • Изменение разрешений на рассылку
    ya360_admin:mail_write_mail_list_permissions

  • Чтение настроек почты организации
    ya360_admin:mail_read_organization_settings

  • Управление настройками почты организации
    ya360_admin:mail_write_organization_settings


👥 Яндекс 360: Каталог (directory)

Управление пользователями, группами и доменами.

  • Чтение данных о сотрудниках
    directory:read_users

  • Управление сотрудниками
    directory:write_users

  • Чтение данных о подразделениях
    directory:read_departments

  • Управление подразделениями
    directory:write_departments

  • Чтение данных о группах
    directory:read_groups

  • Управление группами
    directory:write_groups

  • Чтение данных о доменах организации
    directory:read_domains

  • Управление доменами организации
    directory:write_domains

  • Чтение данных об организациях пользователя
    directory:read_organization

  • Редактирование организации
    directory:write_organization

  • Управление DNS-записями
    directory:manage_dns

  • Чтение внешних контактов
    directory:read_external_contacts

  • Управление внешними контактами
    directory:write_external_contacts


🔐 Яндекс 360: Безопасность (ya360_security)

Настройка безопасности и аудита.

  • Чтение списка сервисных приложений
    ya360_security:service_applications_read

  • Управление списком сервисных приложений
    ya360_security:service_applications_write

  • Чтение событий аудит лога Диска
    ya360_security:audit_log_disk

  • Чтение событий аудит лога Почты
    ya360_security:audit_log_mail

  • Управление обязательной 2FA для пользователей
    ya360_security:domain_2fa_write

  • Чтение информации о настройках паролей пользователей
    ya360_security:domain_passwords_read

  • Управление настройками паролей пользователей
    ya360_security:domain_passwords_write

  • Чтение информации о настройках сессий пользователей
    ya360_security:domain_sessions_read

  • Управление настройками и авторизационными сессиями пользователей
    ya360_security:domain_sessions_write

  • Чтение информации о настройках безопасности организации
    ya360_security:domain_settings_read

  • Управление настройками безопасности организации
    ya360_security:domain_settings_write

  • Чтение событий аудитлога
    ya360_security:read_auditlog


🚪 Паспорт (passport)

Работа с организациями и федерациями.

  • Управление федерациями
    passport:scim-api.all

  • Работа с организациями Яндекс ID
    passport:business


🎥 Телемост (telemost-api)

Управление видеовстречами и трансляциями.

  • Создание встреч и трансляций в Телемосте
    telemost-api:conferences.create

  • Удаление встреч и трансляций в Телемосте
    telemost-api:conferences.delete

  • Редактирование данных о встречах и трансляциях в Телемосте
    telemost-api:conferences.update

  • Чтение данных о встречах и трансляциях в Телемосте
    telemost-api:conferences.read


🧑‍💼 Ботплатформа (botplatform)

Работа с чат-ботами.

  • Чтение ботом сообщений чата, данных по чатам, пользователям, группам и департаментам
    botplatform:read

  • Отправка ботом сообщений и медиа данных в чат
    botplatform:write


📝 Формы (forms)

Работа с опросами и формами.

  • Просмотр настроек форм
    forms:read

  • Изменение настроек форм
    forms:write


🛒 Yandex Pay (yandexpay)

Интеграция с платёжной системой.

  • Оплата через Yandex Pay
    yandexpay:all

  • Управление заказами Yandex Pay Checkout
    yandexpay:merchant-api


🧪 Контест (contest)

Участие и управление в соревнованиях.

  • Управление соревнованиями и участниками
    contest:manage

  • Отправка и тестирование решений на соревнованиях
    contest:submit


🚚 Доставка (delivery)

Работа с логистикой и курьерами.

  • Загрузка данных о курьерах и заказах, выгрузка результатов (роль Логист)
    courier:logistician

  • Использование API Яндекс.Доставки для партнеров
    delivery:partner-api


🛍️ Яндекс.Маркет (market, products)

API для партнёров по товарам.

  • API Яндекс.Маркета / Поиска по товарам для партнеров
    market:partner-api

  • API Поиска по товарам для партнеров
    products:partner-api


🏷️ Партнёрские сервисы (pi, partner_office)

Работа с рекламным инвентарём и партнёрскими кабинетами.

  • Использование API партнёрского интерфейса Яндекса
    pi:all

  • Доступ к API управления рекламным инвентарём
    pi:access-ad-inventory-api

  • Использование API маркировки рекламы
    partner_office:advmarkup

  • Использование API партнёрского кабинета для агентств
    partner_office:api


🧠 Нейроэксперт (neuro-expert)

Доступ к ИИ-сервисам.

  • Доступ к Нейроэксперту
    neuro-expert:all


📡 Xiva (xiva)

Управление push-уведомлениями.

  • Использование API транспорта нотификаций
    xiva:use_api


🎯 Продвижение и реклама (adfox, bsapi, promopages, zen)

Рекламные и промо-платформы.

  • Использование API Adfox
    adfox:api

  • Доступ к Хранилищу Баннеров
    bsapi:access

  • Использование API Яндекс.ПромоСтраниц
    promopages:api

  • Получение статистики по Дзен Промо
    zen:promo.read


📱 Плюс (plus)

Работа с подписками и бенефитами.

  • Взаимодействие с функциональностью бенефитов и опций Плюса
    plus:use-benefits-and-options

  • Взаимодействие с ОПК-подписками Плюса
    plus:use-opk-subscriptions


🧩 Другие сервисы

📞 Адресная книга

  • Чтение и изменение содержимого адресной книги
    addressbook:all

📦 API дистрибуции Яндекса

  • Использование API дистрибуции Яндекса
    distribution:all

📺 Телепрограмма

  • Использование телепрограммы
    tv:use

📞 АОН (cid)

  • Использование Яндекс.АОН
    cid:use

🏥 Врачи и клиники

  • Передача отчётов
    doctors-clinics:write_reports

💬 Чаты (yamb)

  • Чтение и отправка сообщений в чатах
    yamb:all

🛒 Оплата частями (split)

  • Создание заявок на оплату частями
    split:api

🗺️ Справочник (sprav)

  • Использование Справочника
    sprav:all

🤖 Addappter

  • Использование сервиса Addappter
    addappter:use

🏢 Приоритетное размещение (clients)

  • Использование API Приоритетного размещения организаций
    clients:priority.api

🛠️ Умный дом (iot)

  • Просмотр списка устройств умного дома
    iot:view

  • Управление устройствами умного дома
    iot:control

🖥️ Инфраструктура умных устройств

  • Доступ к информации об устройстве
    smartdevicesinfrastructur:read

📦 Яндекс.Store

  • Доступ к API Яндекс.Store для Android-разработчиков
    yastore:publisher

🎨 Шедеврус (masterpiecer)

  • Доступ к API Шедеврус
    masterpiecer:all

🏬 Модели вендоров (vendors)

  • Просмотр ставок на модели вендоров
    vendors:model-bid.read

  • Просмотр параметров категорий и моделей
    vendors:model-edit.params

  • Выставление ставок на модели вендоров
    vendors:model-bid.write

  • Работа с заявками на редактирование моделей
    vendors:model-edit.requests

☁️ Облако (cloud)

  • Аутентификация в Облаке
    cloud:auth

Показать полностью
[моё] Яндекс Директ Яндекс Метрика API Длиннопост
1
Jeromejer
Jeromejer
1 месяц назад

API: объясняю как можно проще⁠⁠

Постараюсь объяснить проще на примере ресторана (это оказалось сложнее, чем с Agile, хотя казалось бы...)

API (Application Programming Interface) – интерфейс общения между программами. Это как "меню" или "набор правил", который позволяет разным программам общаться между собой.

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

Что происходит дальше? Я не вижу, как повар готовит мой стейк, не знаю, где он берёт мясо и как его маринует. Мне важно только, чтобы официант принёс мне мой заказ как можно скорее. Если я передумаю и захочу изменить прожарку на medium rare или убрать гарнир — официант передаст эту просьбу на кухню, и мне принесут обновлённый заказ.

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

Точно так же происходит запрос через API: когда одна программа хочет взаимодействовать с другой, она не лезет во внутренние процессы, а просто делает "заказ".

Получается, что:

Официант - это API. Он принимает заказ и возвращает его с кухни.

Меню - это документация и правила API. В документации API прописаны все возможные варианты, которые API может вернуть, и дополнительные параметры.

Кухня - сервер, который обрабатывает наш запрос и возвращает ответ через API. Он сам знает, что нужно сделать, чтобы ответить нам; нам нужно только принять информацию и обработать её.

Самый распространённый вид API — REST API.

Он работает через HTTP-запросы (про HTTP то я и напишу в следующий раз).

Например, в ресторане мы можем не только заказать еду, но и попросить изменить или отменить заказ. В REST API тоже есть разные запросы:

GET — посмотреть меню: "Какие у вас есть стейки?"

В цифровом мире: получение списка товаров, статей или любой другой информации

POST — сделать новый заказ: "Я буду стейк medium well с картофелем фри"

В приложении: создание нового заказа, регистрация пользователя

PATCH — изменить часть заказа: "Можно поменять прожарку на medium rare?"

В личном кабинете: изменить телефон или адрес доставки. Получается, что PATCH — это частичное изменение ресурса.

PUT — полностью переделать заказ: "Вместо стейка я возьму пасту карбонара"

В корзине интернет-магазина: заменить все выбранные товары. То есть PUT — это полная замена ресурса.

DELETE — отменить заказ: "Я передумал, отменяйте мой заказ"

Удаление товара из корзины или отмена подписки

Зачем это нужно не только программистам?

Понимание API помогает:

- Оценить, сколько времени займёт подключение к другому сервису

- Понимать, почему нельзя просто "быстро добавить" какую-то функцию

- Грамотно ставить задачи разработчикам, зная основные возможности и ограничения

- Не растеряться на собеседовании, даже если вы понимаете, как работает API, но объяснить не можете)

Конечно, все эти примеры с ресторанами, официантами и кухнями — утрированные. В реальной разработке всё сложнее: есть авторизация, токены, кэширование, ошибки API (например, 403 и 404) и множество других нюансов, о которых я постараюсь написать попроще. Но если вы — руководитель, менеджер, аналитик или другой специалист, который только начинает разбираться в IT, такие аналогии помогут уловить суть: без API современным сервисам было бы сложнее работать вместе:)

Я начала вести тг канал, где рассказываю просто о сложном в IT. Если вы дочитали этот пост, то скорее всего вас интересует тема, поэтому буду рада, если поддержите подпиской: https://t.me/jer_it

Показать полностью
[моё] IT Программирование Фриланс API Системный анализ Проект менеджер Текст
0
AndreyButakov
AndreyButakov
1 месяц назад

Как запустить ИИ-проект и не разориться на API: Мой опыт и «бесплатные» лайфхаки⁠⁠

Каждый, кто хоть раз пытался запилить свой пет-проект с ИИ, знает эту боль: только ты раскачался, только поймал дзен, а тут бац – ценник на API. И вот твой гениальный стартап, который должен был изменить мир, тихонько помирает в зародыше, потому что «дорого».

Но что, если я скажу, что есть способ обойти эту ловушку? Что, если можно получить доступ к мощным моделям и при этом не разориться? Да, есть нюанс: придётся согласиться, что ваши данные будут использоваться для обучения этих самых моделей. Ну, а что вы хотели? Бесплатный сыр, как известно, бывает только в мышеловке. Или в датасетах для обучения ИИ.

МОЙ ТОП-3 «БЕСПЛАТНЫХ» API ДЛЯ ИИ-ПРОЕКТОВ

Я тут немного покопался и собрал для вас три варианта, которые реально работают. Проверено на себе, на своих нервах и на нескольких десятках «гениальных» идей, которые так и не взлетели (но это уже другая история).

  1. GOOGLE AI STUDIO (GEMINI API)

    Это прямой доступ ко всем моделям Gemini, включая самую «умную» Gemini-2.5-pro. Звучит круто, правда? Почти как получить ключ от всех дверей в Googleplex. Но, как всегда, есть «но». Ограничения на количество запросов в день. Для pro-версии это 100 запросов, для flash – 250. Гугл, как истинный маркетолог, любит менять эти лимиты чаще, чем я меняю носки. Так что следите за новостями. И да, без VPN тут никуда. Привет, Роскомнадзор!

    2. MISTRAL LA PLATEFORME

    Если вы любите скорость и не гонитесь за гигантизмом, то Mistral – ваш выбор. Модели небольшие, но шустрые. И самое главное – не нужен VPN! Это уже победа, я считаю. Лимиты тут свои: 1 запрос в секунду, 500к токенов в минуту и 1кк токенов в месяц. Вполне себе для большинства пет-проектов. Главное – не пытайтесь на нём генерировать «Войну и мир» в режиме реального времени.

    3. OPENROUTER

    Это такой агрегатор всего и вся. Если какой-то модели нет на Openrouter, то, возможно, она вам и не нужна. Здесь можно найти практически любую модель. Но «бесплатность» тут условная. Бесплатными считаются только те, что с суффиксом `:free` (например, Deepseek R1 или Qwen3-235B-A22B). Чтобы получить к ним доступ, нужно закинуть денег на баланс. Да-да, вы не ослышались. Закинуть, но не обязательно тратить. Меньше 10$ на балансе – 50 бесплатных запросов в день. Больше 10$ – уже 1000. Маркетинг 80-го уровня, не иначе. Зато VPN не нужен, и пополнить можно криптой. Удобно, если вы уже в теме.

    ЧТО ВЫБРАТЬ И ПОЧЕМУ ВСЁ ЭТО НЕ СОВСЕМ БЕСПЛАТНО

    Я, как истинный прагматик, использую все эти варианты. Когда кончаются бесплатные лимиты на одном, переключаюсь на другой. А когда и там всё заканчивается, то, скрипя зубами, перехожу на платный API. Жизнь боль, когда ты разработчик.

    Самый простой и быстрый способ без VPN и танцев с бубном – это Mistral. Но если вы готовы к небольшим приключениям и хотите попробовать всё, то Google AI Studio и Openrouter тоже вполне себе варианты.

    В конечном итоге, «бесплатные» API – это отличный способ начать, протестировать идею и понять, стоит ли вообще вкладываться в ваш проект. Но не обольщайтесь: рано или поздно за всё придётся платить. Либо деньгами, либо вашими данными. Выбор за вами, господа энтузиасты.

    А как вы считаете, это реальная помощь для разработчиков или просто очередной маркетинговый трюк, чтобы подсадить нас на иглу ИИ-сервисов? Жду ваших мнений в комментах.

Показать полностью
[моё] Искусственный интеллект API Разработка Бесплатно Лайфхак Видео Короткие видео Длиннопост
0
4
pankovri
pankovri
2 месяца назад

Пишем desktop приложение на Golang + небольшой реверс инжениринг API POS-системы⁠⁠

Вводная часть

Зачем я вообще взялся за всё это? В одном небольшом розничном магазине стоит POS-система с не самыми гибкими настройками. Нужно было сделать так, чтобы продавец не видел остатки товаров в магазине — он продаёт только то, что отображается. Но! В некоторых разделах каталога остатки всё же должны быть видны. Для чего — это уже вопрос бизнес-логики.

Конечно можно было бы использовать API POS-системы, но они нагло запросили за это денег😁

Реверс инжениринг API POS-системы

Логинюсь в POS-систему под админом и открываю dev-tools браузере. Вижу, что используется reactjs, что для меня было хорошо. Перехожу в каталог. В каталоге все товары разбиты по категориям, открываю категорию и вижу, что данные приходят по Ajax. Соответственно, если данные приходят через ajax, то на бэкенд должен отправляться какой-то ключ аутентификации (jwt, access-token и т.д.). Это в общем база при HTTP запросах. Остаётся понять, как это работает.

Запросы уходят на https://my-pos-system.ru/service/?x_version=25.2155-162.10 с помощью HTTP POST метода. Долго не думая, кликнул правой кнопкой мыши на запросу Copy -> Copy as cURL

curl 'https://my-pos-system.ru/service/?x_version=25.2155-162.10' \

-H 'accept: application/json, text/javascript, */*; q=0.01' \

-H 'accept-language: ru-RU;q=0.8,en-US;q=0.5,en;q=0.3' \

-H 'cache-control: no-cache' \

-H 'content-type: application/json; charset=UTF-8' \

-H 'origin: https://my-pos-system.ru' \

-H 'pragma: no-cache' \

-H 'priority: u=1, i' \

-H 'referer: https://my-pos-system.ru/page/nomenclature-catalog' \

-H 'sec-ch-ua: "Google Chrome";v="137", "Chromium";v="137", "Not/A)Brand";v="24"' \

-H 'sec-ch-ua-mobile: ?0' \

-H 'sec-ch-ua-platform: "macOS"' \

-H 'sec-fetch-dest: empty' \

-H 'sec-fetch-mode: cors' \

-H 'sec-fetch-site: same-origin' \

-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36' \

-H 'x-calledmethod: Nomenclature.List' \

-H 'x-originalmethodname: Nf32Jkl4342nafi4=' \

-H 'x-requested-with: XMLHttpRequest' \

-b $'lang=ru; region=RU; DeviceId=qqqq-qqqq-qqqq-qqqq-qqqq; _ym_uid=123; _ym_d=1234; ... и далее много чего в куках' \

--data-raw '{"jsonrpc":"2.0","protocol":7,"method":"Nomenclature.List","params": ... и далее большой json в теле запроса'

Выполнил в консоли запрос и пришёл необходимый мне ответ от POS-системы. Это было небольшой успех, т.к. значит, можно отравлять и получать запросы.

Изучив curl запрос, предположил, что данные для аутентификации передаются через cookie. Удалил всё лишнее и выполнил запрос

curl 'https://my-pos-system.ru/service/?x_version=25.2155-162.10' \ -b $'lang=ru; region=RU; DeviceId=qqqq-qqqq-qqqq-qqqq-qqqq; _ym_uid=123; _ym_d=1234; ... и далее много чего в куках' \ --data-raw '{"jsonrpc":"2.0","protocol":7,"method":"Nomenclature.List","params": ... и далее большой json в теле запроса'

В ответ пришел 403 HTTP код. Значит удалил, что-то лишнее. Начал потихоньку пробовать возвращать параметры в curl и через пару минут понял, что не хватает заголовка -H 'content-type: application/json; charset=UTF-8'

Добавил в запрос и выполнил

curl 'https://my-pos-system.ru/service/?x_version=25.2155-162.10' \ -H 'content-type: application/json; charset=UTF-8' \ -b $'lang=ru; region=RU; DeviceId=qqqq-qqqq-qqqq-qqqq-qqqq; _ym_uid=123; _ym_d=1234; ... и далее много чего в куках' \ --data-raw '{"jsonrpc":"2.0","protocol":7,"method":"Nomenclature.List","params": ... и далее большой json в теле запроса'

Необходимый ответ пришёл. Это успех. Значит можно переходить к кодингу.

Ответ в JSON там очень большой, подробно разбирать его не будет, это не сильно интересно. Много полей с названиями полей f, a, t и т.д., но опытным путём нашёл какие поля необходимы. Мне нужно было найти только название номенклатуры, описание и остаток. Кто в своей юности использовал ArtMoney для получения бесконечных жизней и ресурсов в играх меня поймут. Взял первоначальный ответ, потом поправил в необходимые параметры в POS-системе и снова сделал запрос. Нашёл поля, которые изменились, они то мне и нужны.

Стек

К выбору стека исходил из своих навыков. Можно было конечно взять C++ и начал писать, но это не мой случай. Нужно быстро и чтобы я мог поддерживать это. Оценив свои навыки PHP, Golang, JS (TS), немного reactjs, начал гуглить, что вообще есть. Есть отличный фреймворк electron на котором написано ряд популярных приложений (slack, postman).

В общем взял electron начал создавать проект и компилировать его. Из плюсов, он очень мощный, можно копилить сразу под разные платформы. Развернул проект, начал компилить и у меня упорно не хотела происходить сборка. Потратив вечер на борьбу с electron, не хотел тратить много времени, решил погуглить ещё варианты. Нашёл фреймворк Wails на котором можно писать на Golang + JS (TS). Развернул и скомпилировал пустой проект за 5 минут. Было принято решение использовать его.

По итогу экспериментов на пустом проекте у меня получился такой стек:

  • Golang — backend-прослойка и основа приложения.

  • Wails — фреймворк для сборки desktop-приложений с UI на web-технологиях и backend на Go.

  • React — библиотека для построения интерфейсов.

  • TypeScript — типизированное надмножество JavaScript, упрощающее разработку и отладку.

  • MUI (Material UI) — готовый набор компонентов интерфейса в стиле Material Design.

Такой стек позволяет быстро разрабатывать современное desktop-приложение с мощной логикой на Go и удобным интерфейсом на React.

Инициализация wails

Первым шагом создадим базовый каркас desktop-приложения с использованием Wails

Установка Wails

Перед установкой убедитесь, что у вас установлен Go (версия 1.20+) и Node.js. Затем установим сам CLI:

go install github.com/wailsapp/wails/v2/cmd/wails@latest

Проверьте, что всё установилось корректно:

wails doctor

Если появилась надпись SUCCESS Your system is ready for Wails development! значит всё установилось и готово к работе

Создание проекта каркаса проекта

Создаём новый проект с шаблоном React + Vite + TypeScript:

wails init -n catalog-desktop -t react-ts

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

Пишем desktop приложение на Golang + небольшой реверс инжениринг API POS-системы Golang, API, Компьютер, Telegram (ссылка), Длиннопост

Запуск в режиме разработки

Перейдём в директорию проекта и запустим в dev-режиме:

cd catalog-desktop

wails dev

Эта команда одновременно запускает frontend (с hot reload через Vite) и backend на Go. Любые изменения в интерфейсе или логике пересобираются автоматически.

При успешной сборке у вас откроется окно приложения

Пишем desktop приложение на Golang + небольшой реверс инжениринг API POS-системы Golang, API, Компьютер, Telegram (ссылка), Длиннопост

👨‍💻 Код по итогу итерации

Создание UI

Для начала установим зависимости которые нам необходимы для UI.

Переходим в папку frontend и выполняем команду

npm install --save typescript @types/react @types/react-dom @emotion/styled @mui/material axios

Требования у меня были следующие:

- Отобразить данные в виде таблицы

- При запуске приложения сходить в POS-систему получить необходимые данные

- Необходимо обновлять данные из POS-системы раз в 1 минуту

- Отобразить кнопку обновить, чтобы кассир мог вручную обновить данные из POS-системы

Вот так я это примерно видел

Пишем desktop приложение на Golang + небольшой реверс инжениринг API POS-системы Golang, API, Компьютер, Telegram (ссылка), Длиннопост

Постараюсь описать в статье как можно меньше кода, т.к. в конце будет репозиторий со всем кодом.

Отобразить данные в виде таблицы

Для начала набросал UI, как это должно выглядеть.

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

По итогу получился вот такой "дизайн"

Пишем desktop приложение на Golang + небольшой реверс инжениринг API POS-системы Golang, API, Компьютер, Telegram (ссылка), Длиннопост

👨‍💻 Код по итогу итерации

При запуске приложения сходить в POS-систему получить необходимые данные

Забегая немного вперед, после написания кода для получения необходимых данных из POS-систему я столкнулся с CORS проблемой. Как я это решал, будет позже, пока пишем код.

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

Так же решил добавить лоадер и вывод ошибок

👨‍💻 Код по итогу итерации

Необходимо обновлять данные из POS-системы раз в 5 минут

Тут всё просто, особо говорить нечего. Запускаем таймер и дёргаем handleRequest

👨‍💻 Код по итогу итерации

Отобразить кнопку обновить, чтобы кассир мог вручную обновить данные из POS-системы

Тут ещё проще, берём handleRequest и навешиваем на событие onClick единственной кнопки UI

👨‍💻 Код по итогу итерации

Проблема с CORS

Как я уже упоминал, столкнулся с проблемой CORS — политики безопасности браузеров, которая блокирует запросы между разными доменами. Из-за этого нельзя напрямую отправлять запросы в POS-систему. Чтобы обойти это, сервер должен возвращать в заголовках значение Access-Control-Allow-Origin, разрешающее такие запросы.

Чтобы обойти эту проблему, нужен был прокси. Самый простой вариант — поднять веб-сервер прямо в приложении и ходить через него в POS-систему. Но у Wails есть одна интересная фишка: можно писать логику на Go и вызывать её из JavaScript. Магия, подумал я — и решил попробовать.

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

👨‍💻 Код по итогу итерации:
https://github.com/roman-pankov/catalog-desktop/commit/7a1d2902f4fdab3933c93bc3ae9699f0426e4fdd

Немного теории о Wails и IPC

Wails для этой магии использует IPC(Inter-Process Communication). IPC (Inter-Process Communication) — это набор механизмов, позволяющих двум или более процессам обмениваться данными между собой.

В случаем wails используется WebView messaging. WebView messaging — это механизм обмена сообщениями между веб-содержимым (WebView) и внешним приложением. Он позволяет вызывать действия на стороне приложения в ответ на события, происходящие в WebView, и наоборот. При этом запрос не отправляется через сеть.

Примерно так выглядит жизненный цикл запроса

[Frontend] window.backend.MyService.Hello("World")

↓ (WebView messaging)

[Nativе Bridge] Получаем JSON: {service: "MyService", method: "Hello", params: ["World"]}

↓

[Go] Выполняем метод MyService.Hello("World") → "Hello World"

↓

[Nativе Bridge] Возвращаем результат

↓

[Frontend] Promise resolved → "Hello World"

Сборка

Для сборки приложения достаточно выполнить команду wails build. В результате в папке build/bin будет создан исполняемый файл.

Главное преимущество Wails в том, что он не включает в себя целый браузер, как это делает Electron. Благодаря этому итоговый размер моего приложения составил всего 9.5 МБ.

Но есть нюанс — для каждой платформы (Windows, Linux, MacOS) придётся собирать приложение в её родной среде.

Итоги

После нескольких вечеров экспериментов с Electron и Wails мне удалось решить поставленную задачу. Код, конечно, пока далёк от идеала — многое можно переписать и оптимизировать. Кто-то может указать на небезопасность хранения авторизационной куки прямо в приложении, но в моём случае вопрос безопасности был не приоритетом: приложение должно работать в единственном экземпляре на рабочем месте кассира.

С развитием ИИ подход к таким задачам сильно упростился — просто набрасываешь код, запускаешь, проверяешь, как работает, и уже по ходу разбираешься, что и как. Быстро, гибко и эффективно — настоящий вайб кодинга в наше время.

Код на github https://github.com/roman-pankov/catalog-desktop

👉 Подписывайтесь на по ТГ буду стараться писать что-то полезное и интересное https://t.me/+fhVmaCi66s9kMDBi

Показать полностью 4
Golang API Компьютер Telegram (ссылка) Длиннопост
0
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии