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

Сноуборд

Спорт, Аркады, На ловкость

Играть

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

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

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

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

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

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

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

API

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

Программирование IT Python Искусственный интеллект ВКонтакте Разработка Нейронные сети Все
131 пост сначала свежее
2
pankovri
pankovri
8 дней назад

Пишем 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
0
GNVV
GNVV
14 дней назад

Популярный онлайн-переводчик DeepL ограничил доступ пользователям из России⁠⁠

❗️Популярный онлайн-переводчик DeepL ограничил доступ пользователям из России. При попытке зайти на сайт появляется сообщение: «Этот сервис недоступен в вашем регионе».

🚫 Мобильное приложение DeepL также перестало работать. Согласно сообщению в нём, переводчик недоступен из-за «технических проблем», над которыми уже работают.

💡 Пользователи в соцсетях сообщили, что DeepL ограничил не только сайт и приложение, но и доступ к переводчику через API.

Судя по сообщениям в сети, DeepL также стал недоступен и в Беларуси.

#DeepL #переводчик #ограничениявРоссии #техническиепроблемы #API #Беларусь

Кросспостинг Pikabu Publish Bot Переводчик API Республика Беларусь Текст
8
205
Skyscrew
Skyscrew
26 дней назад
Лига Сисадминов

Теперь понятно⁠⁠

Теперь понятно
Картинка с текстом Скриншот Искусственный интеллект Индусы IT юмор Английский язык API Agi Нейронные сети
7
Партнёрский материал Реклама
specials
specials

Как бросить курить и не сорваться: инструкция от тех, кто смог⁠⁠

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

Как бросить курить и не сорваться: инструкция от тех, кто смог Курение, Борьба с курением, Зависимость, Telegram (ссылка), ВКонтакте (ссылка), Длиннопост

История 1 — отражение

@ holoroad

Маленькая дочка почти научилась ходить и всюду телепалась за мной. Я не курил при ней. Ходил на балкон, а она, прильнув к стеклу, смотрела на меня и ждала, когда я докурю и выйду к ней. И в какой-то момент она начала повторять за мной вот эти движения. Маленький человечек, ей было года полтора или два, прикладывала воображаемую сигарету к губам, а потом делала вид, что выпускает дым. И весело так на меня смотрела, сквозь стекло балконной двери. Ей нравилось все, что со мной связано, и она подражала всем моим действиям. Я курил уже двадцать лет и, конечно, делал множество попыток бросить до этого. Но в этот раз у меня в первый раз появилась по-настоящему важная причина бросить. Это важно для человека, который безгранично мне доверяет. С тех пор прошло почти десять лет, в течение которых я не сделал ни одной затяжки.

Решение бросить курить — одно из лучших, которое вы можете принять для своего здоровья, будущего и близких. Но справиться с зависимостью только потому, что «это вредно» будет тяжело. А вот если хотите не задыхаться, поднимаясь по лестнице, или волнуетесь за своего ребенка, которые вдыхает табачный дым, — уже другое дело.

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

История 2 — список

@ maxneb

Беременность жены, рождение ребенка, здоровье, деньги — ничего не было веским поводом бросить окончательно. Постоянно срывался. Помогло составить список, что теряю и что получаю от сигарет, и понимание, что хотя бы одна затяжка — и все насмарку: пару месяцев буду курить. Только список и его осознание. Для каждого он свой. И постоянное обращение к нему. После составления списка курил еще. Но он как заноза висел в голове с вопросом «зачем?»... Так, что-то щелкнуло и сейчас не тянет. Иногда тянет физически, но осознание бесполезности курения сразу глушит позывы. Полгода, полет нормальный...

Бросать на авось — идея, которая подойдет не всем. Нужно понимать, что делать в трудные моменты:

  • Определите дату отказа. Подготовьтесь морально, уберите сигареты, зажигалки, пепельницы.

  • Замените привычки. Сигарету в руках можно заменить орешками, палочками морковки, жвачкой или даже кубиком льда.

  • Займите время. Вспомните, чем вы любили заниматься: спорт, хобби, прогулки.

  • Планируйте, что делать при тяге. Она длится всего 3–5 минут. Дыхательные практики или звонок другу помогут пережить сильное желание закурить.

  • Откажитесь от «наградных сигарет». Одна затяжка и вы откатитесь назад.

Можно бросить резко, «с понедельника», или постепенно, снижая количество сигарет до нуля. Главное — определиться и не отступать.

История 3 — переключение

@ Spaka

45 лет, стаж 30. Пытался завязать много раз, потом понял, что после каждой попытки бросить, курить начинаешь больше. Как ребенок, которому не дают вкусняшку, а она случайно попала ему в руки. Из чего мозг сделал вывод: не уверен — не бросай. Потом стал замечать, что организм уже стал сам просить перестать курить. По утрам было очень неприятно во рту, удовольствие после сигареты стало короче, а негатив, приходящий следом, ощутимее: неприятные ощущения в горле, боли миндалин, страх схватить онкодиагноз. Хотя врачи говорили, что все ок, в голове-то гоняешь мысли. Я решил попробовать обмануть сам себя. Не делать из процесса отказа какого-то события. Бросить так, как будто это и должно было произойти, но ты не знаешь когда. Про себя помолился, как сумел, и попросил помощи, хитро прищурил глаз и в момент, когда забыл купить про запас (оставалась пара штук в пачке), просто перестал курить. Мне теперь даже странно, как я раньше это делал. Так и живу почти два года. Кстати, раньше в момент завязки курящих ненавидел, дым был очень противен, до тошноты. Теперь все равно. Присоединяйтесь ;)

Есть несколько стратегий отказа от курения:

  • Резкий. Эффективный и решительный подход.

  • Постепенный. Сначала — меньше сигарет, потом — меньше затяжек. И так до нуля.

  • Психологическая замена. Каждая сигарета — это ритуал. Найдите для каждого из них «здоровую замену».

  • Медикаментозная терапия. При сильной зависимости врач может порекомендовать никотинозаместительную терапию (пластыри, таблетки, жвачки) или препараты, которые помогают справиться с синдромом отмены. Но любые лекарства принимаются только по рекомендации специалиста.

Каждый, кто хочет оставить зависимость в прошлом, может обратиться в центры здоровья, которые работают при поддержке нацпроекта «Продолжительная и активная жизнь», и получить необходимую помощь специалистов. Адреса доступны на официальном портале Минздрава России о здоровье: takzdorovo.ru. Также можно позвонить на горячую линию по отказу от зависимостей 8 800 200-0-200.

История 4 — форма

Аноним

Курила электронки 2 года как замену обычным сигаретам. Думала, что это не так дорого, не так вредно да и для девушки вроде более привлекательно: не пахнут волосы и руки. А потом решила привести свое тело в форму. Стала ходить в зал и поняла, что задыхаюсь на первом же упражнении, хотя женщины гораздо старше меня бодрячком. Было очень тяжело слезть. Друзья советовали заменять сигаретами. А потом уехала в отпуск в страну, где нельзя покупать электронки, отвлеклась, и после возвращения уже не тянуло. Даже на тусовках, где все дымят.

За модными гаджетами и фруктовыми ароматами скрывается химическая бомба, разрушающая организм быстрее, чем обычные сигареты. Электронные сигареты активно продвигаются производителями как «безопасная» альтернатива сигаретам. Но курение вейпа может обернуться серьезными проблемами: от кашля и одышки до поражения сосудов и дыхательных путей.

«Особую тревогу вызывает рост потребления табачных изделий и электронных сигарет. Согласно исследованию, проведенному в нашем Центре, 36,8% курильщиков потребляют одновременно и табак, и электронные сигареты. Среди молодежи в возрасте 25-39 лет этот показатель превышает 45%. Электронные никотиносодержащие и безникотиновые устройства поражают сердце, сосуды, дыхательную систему и ДНК организма не менее пагубно, чем традиционные сигареты, а в ряде случаев способны вызывать острые состояния, включая сосудистые поражения и летальные исходы» – рассказывает руководитель Центра профилактики и контроля потребления табака НМИЦ терапии и профилактической медицины Минздрава России Маринэ Гамбарян.

История 5 — пари

@ kernima

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

Сульфат никотина, один из компонентов электронных сигарет, раньше использовали как пестицид, но запретили из-за высокой токсичности. Жидкость для «электронок» содержит и опасные химикаты вроде пропиленгликоля, ацетальдегида и акролеина — промышленных веществ, способных вызывать воспаления, поражения органов и мутации клеток. Ароматизаторы, создающие иллюзию безвредности, на деле могут привести к более тяжелой интоксикации, чем при курении сигарет. А еще вейпы содержат не природный, а синтетический никотин — солевой. Он быстрее всасывается, дольше выводится и вызывает зависимость стремительнее.

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

История 6 — связь

Аноним

Устал курить, понял, что мне это мешает заниматься спортом и в целом комфортно себя чувствовать. Пошел через ассоциации: покурил во время головной боли, и потом через самовнушение дал себе установку, что голова болела от курения. Звучит странно, конечно, но это сработало. Никотиновую зависимость снижал постепенно через редкое курение кальяна (2-3 раза в неделю с последующим уменьшением).

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

Разберитесь, что именно тянет вас к сигарете: скука, стресс, привычка? Когда вы это осознаете, будет легче подобрать альтернативные действия — прогулку, книгу, разговор с близким. Учитесь распознавать моменты, когда особенно хочется закурить, и переключаться на что-то другое. Можно подключиться к программам или группам поддержки — это поможет не сдаваться. И главное: уберите из дома все сигареты.

История 7 — вершина

Аноним

Поднимался с сыном по Пушкинской тропе на гору Железная. Мне лет сорок пять было, идем общаемся, сын бегает туда-сюда. Ну идем короче, а сзади нас догоняет семейная пара, мирно о чем-то щебеча между собой. Догнали и обходят. И так спокойно удаляются… Все бы ничего, но им лет по шестьдесят, если не больше. Я попробовал в их темпе, но задыхаться стал. Короче, поднялся я на гору, спустился, смял пачку и выкинул в мусорную урну. Вот уже 13 лет не курю. Стаж 27 лет.

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


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

Хорошая новость в том, что вы не одни. В сообществе «Давай бросать» (ВКонтакте и мессенджере Telegram), который работает при поддержке нацпроекта «Продолжительная и активная жизнь» знают, каково бороться с триггерами, искать замену привычке и удерживать себя от срыва. Здесь делятся историями тех, кто смог, поддерживают тех, кто только начал, и помогают разобраться в главном: как пережить отказ без мучений.

Социальная реклама. АНО «Национальные приоритеты», ИНН: 9704007633

Показать полностью
Курение Борьба с курением Зависимость Telegram (ссылка) ВКонтакте (ссылка) Длиннопост
10
Вопрос из ленты «Эксперты»
Аноним
Аноним
27 дней назад
Искусственный интеллект

Как работать с нейросетью через API?⁠⁠

Привет! Сразу прошу, не закидывайте камнями: да, тупой, да, куда я лезу, да, "ваш_вариант".
Но все с чего то начинают.

По работе возник запрос, провести маркетинговый анализ. Там материал объемом около 800 страниц, и по этой базе данных (текст, диалоги, описания) нужно провести исследование и получить ответ на около 100 вопросов.
Обычно я с нейросетями работаю просто тупо через чат. Покупаю иногда подписку на GPT, но он много придумывает и очень быстро возникает что-то типо "аналитическая усталось", когда он гоняет одни и те же тезисы по кругу, и начинает додумывать и говорить общими словами.
Deepseek красавчик, но постоянно ошибка сервера, и файл приходится дробить на кучу частей, соответственно уходит контекст.

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

Но я нифига не понимаю ни в кодинге, ни во всех этих питонах, удавах и прочее)
Я умею работать через чат, и все тут...

Подскажите мне, какие решения могут быть для моей задачи? Может быть есть сервисы, куда можно тупо вставить свой api и работать также, как я работаю чате?

Спроси Пикабу Вопрос Компьютерная помощь Программист ChatGPT DeepSeek API Чат-бот Нейронные сети Искусственный интеллект Openai Сайт Текст
4
3
YesAi
YesAi
1 месяц назад

Как подключить нейросеть Sora Images для генерации изображения через API⁠⁠

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

Как подключить нейросеть Sora Images для генерации изображения через API Чат-бот, Искусственный интеллект, Нейронные сети, Гайд, Тестирование, Openai, Digital, Sora, API, Дизайнер, Программа, Длиннопост

Как подключить нейросеть Sora Images для генерации изображения через API

Если вы решили использовать возможности Sora Images посредством API Yes Ai, то вам необходимо предварительно получить специальный авторизационный токен. Подробную инструкцию по его получению вы найдете в нашем руководстве.

Прежде чем приступать к созданию собственного приложения с использованием нашего API, стоит протестировать весь доступный функционал Sora Images через телеграм-бота @yes_ai_bot. Также советуем тщательно ознакомиться с возможностями самой нейросети — этому вопросу посвящена отдельная статья, с которой вы можете ознакомиться.

Ключевые положения:

  • Любые косвенные или прямые ссылки на контент, маркированный пометкой «18+» или иным образом относящийся к категории NSFW, недопустимы. Необходимо заранее проверять запросы на наличие запрещенных слов и выражений, прежде чем направлять их к нашему API.

  • Нейросеть Sora Images обладает возможностью создавать изображения по текстовым описаниям (промтам), заданным на разных языках, включая русский язык.

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

  • При использовании API с добавлением хотя бы одной картинки-референса пользователю необходимо в обязательном порядке указать промт — описание конкретных действий или изменений, которые нужно применить к отображённым на исходном материале объектам.

  • Sora генерирует изображения в трёх доступных пропорциях сторон картинки: 1:1, 2:3 и 3:2.

  • После каждого обращения API выдаёт результирующие изображения в количестве от одного до четырёх. В большинстве сценариев пользователи получат именно 4 готовых изображения; меньшее их число встречается значительно реже.

Обратите внимание! В настоящее время для работы с API Sora Images действуют определенные ограничения по количеству одновременно выполняемых задач. Эти ограничения зависят от того, какой пакет услуг подключен к вашему аккаунту:

  • Пакет Demo позволяет поставить в очередь не более 1 задачи одновременно.

  • Пакет Micro ограничен 2 задачами в очереди.

  • Пакет Start предусматривает очередь до 3 задач.

  • Пакет Standard допускает не более 5 задач одновременно в очереди.

  • Пакет VIP предоставляет максимальное значение — до 10 задач в очереди.

Если при использовании API Sora Images у вас возникнут дополнительные вопросы или вам потребуется расширение установленных лимитов, пожалуйста, обращайтесь в нашу службу технической поддержки по адресу: @yes_ai_support.


Как формулировать задания через промты (без использования референсов)

Пример составления запроса для создания изображений в сервисе Sora Images без референс-материалов

curl -X POST https://api.yesai.su/v2/sora/generations

-H "Authorization: Bearer <token>"

-H "Content-Type: application/json"

-d '{

"prompt": "текст вашего промпта на любом языке",

"style":"2,3",

"dimesions":"2:3"

}'

Описание параметров:

Параметр style = '', '0', '1' или '2,3,4' (необязательный): Задает стилистическое оформление. По умолчанию используется значение "0", то есть стиль не применяется. Доступны следующие варианты выбора:

0 – без заданного стиля

1 – случайный выбор стиля

2,3,4 и т.п. — выбор конкретного тематического стиля:

2 – Midjourney

3 – Стимпанк (Steampunk)

4 – Киберпанк (Cyberpunk)

5 – Аниме (Anime)

6 – Логотип (Logo)

7 – Фото (Photo)

8 – Изображение (Image)

9 – Кино (Cinema)

10 – Иллюстрация (Illustration)

11 – Ужасы (Horror)

12 – Детализированный (Detailed)

13 – Космос (Space)

14 – Готика (Gothic)

15 – Сюрреализм (Surrealism)

16 – Реализм (Realism)

17 – Фэнтези (Fantasy)

18 – Научная фантастика (Sci-Fi)

19 – Арт-фэнтези (FantasyArt)

20 – Комиксы (ComicBook)

21 – Пиксель-арт (PixelArt)

22 – 3D графика

23 – Линейный рисунок (LineArt)

24 – Оригами (Origami)

25 – Изометрия (Isometric)

26 – Неонпанк (NeonPunk)

27 – Аниме-премиум (PrimeAnime)

28 – Акварель (Watercolor)

29 – Поп-арт (Pop art)

30 – Каваии (Kawaii)

31 – Минимализм (Minimalism)

32 – Ретро футуризм (RetroFutur)

33 – Антиутопия (Dystopian)

34 – Реклама (Advertising)

35 – Ренессанс (Renaissance)

36 – Биомеханика (Biomechanical)

37 – Футуризм (Futuristic)

38 – Арт-деко (Art deco)

39 – Кубизм (Cubism)

40 – Мода (Fashion)

41 – RPG

42 – Диско (Disco)

43 – Архитектура (Architecture)

44 – Роскошь (Luxury)

45 – Кибернетика (Cybernetic)

46 – Ретро-кибер (RetroCyber)

47 – Биокибер (BioCyber)

48 – Сказочный (FairyTale)

49 – Пин-ап (Pin-up)

50 – Сияние (Shining)

51 – Сдвиг цветов (Color shift)

Параметр prompt = '' (обязательный): описывает задание, сформулированное пользователем. Язык описания может быть любым.

Параметр dimensions = '2:3' (необязательный): устанавливает пропорции получаемого изображения. По умолчанию установлено соотношение сторон 1:1 (квадрат). Возможные варианты:

  • 1:1 – квадратное изображение

  • 2:3 – вертикальное изображение

  • 3:2 – горизонтальное изображение

Обратите внимание: по умолчанию нейросеть Sora Images часто генерирует изображения с приглушенными оттенками и недостаточной яркостью. Чтобы устранить такую особенность алгоритма, наши специалисты разработали специальный стиль обработки с названием "Shining", которому присвоен индекс "50". Настоятельно рекомендуем использовать этот стиль по умолчанию при выполнении заданий.

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

Пример успешного ответа при постановке задачи:
['success' => true, 'message' => 'OK', 'results' => ['generation_data' => [ ... ]]], 200


Как подать задание с помощью референсов

Разбираем на примере, как создавать изображения в Sora Images с использованием референсов

curl -X POST https://api.yesai.su/v2/sora/generations

-H "Authorization: Bearer <token>"

-H "Content-Type: application/json"

-d '{

"prompt": "текст вашего промпта на любом языке",

"style":"2,3",

"dimesions":"2:3"

"references_urls":["https://yoururl.com/image1.jpeg","https://yoururl.com/image2.jpeg"]

}'

Параметры:

references_urls = [] (необязательно, массив ссылок на референсные изображения, минимум 1, максимум 10)

В это поле нужно вставлять от 1 до 10 прямых ссылок, ведущих на изображения в форматах jpg, jpeg или png, которые служат референсами для создания изображений нейросетью. Ко всем заданиям также обязательно следует добавлять подробные текстовые описания-промты, поясняющие, какое именно изображение требуется сгенерировать.

Перечень типичных ошибок:

['success' => false, 'message' => 'MODEL_ID_IS_EMPTY'], 400
['success' => false, 'message' => 'MODEL_ID_NOT_VALID'], 400
['success' => false, 'message' => 'ID_IS_EMPTY'], 400
['success' => false, 'message' => 'ID_NOT_VALID'], 400
['success' => false, 'message' => 'TYPE_IS_EMPTY'], 400
['success' => false, 'message' => 'TYPE_NOT_VALID'], 400
['success' => false, 'message' => 'STYLE_IS_EMPTY'], 400
['success' => false, 'message' => 'STYLE_NOT_VALID'], 400
['success' => false, 'message' => 'PROMPT_IS_EMPTY'], 400
['success' => false, 'message' => 'PROMPT_NOT_VALID'], 400
['success' => false, 'message' => 'REFERENCES_URLS_IS_EMPTY'], 400
['success' => false, 'message' => 'REFERENCES_URLS_NOT_VALID'], 400
['success' => false, 'message' => 'DIMENSIONS_IS_EMPTY'], 400
['success' => false, 'message' => 'DIMENSIONS_NOT_VALID'], 400
['success' => false, 'message' => 'UNAUTHORIZED'], 401
['success' => false, 'message' => 'ID_NOT_FOUND'], 404
['success' => false, 'message' => 'USER_HAS_BEEN_BANNED'], 409
['success' => false, 'message' => 'USER_HAS_BEEN_DELETED'], 409
['success' => false, 'message' => 'NOT_ENOUGH_RPOINTS'], 409
['success' => false, 'message' => 'PROMPT_NSFW_WORDS'], 409
['success' => false, 'message' => 'PROMPT_EN_NSFW_WORDS'], 409
['success' => false, 'message' => 'STYLE_LIMIT_EXCEEDED'], 409
['success' => false, 'message' => 'TASK_LIMIT_EXCEEDED'], 409
['success' => false, 'message' => 'TASK_IS_NOT_COMPLETED'], 409
['success' => false, 'message' => 'TOO_MANY_REQUESTS'], 429
['success' => false, 'message' => 'INTERNAL_SERVER_ERROR'], 500


Как получить готовые изображения через Sora Images API?

Когда вы отправляете запрос на генерацию через API Sora Images, сервис возвращает вам индивидуальный идентификатор задания. Именно этот ID используется далее для получения готовых результатов, которыми выступают ссылки на скачивание изображений. Обычно их количество составляет от одной до четырёх ссылок на одно задание.

Специалисты сервиса советуют первый раз проверять готовность генерации не ранее, чем через полминуты после отправки запроса. Ранее этого срока изображения просто не успеют сгенерироваться. Последующие проверки лучше всего проводить с интервалом от 10 до 15 секунд. Это оптимальный промежуток, позволяющий сервису завершить генерацию без лишней нагрузки и обеспечить комфортный пользовательский опыт.

GET https://api.yesai.su/v2/sora/generations/{id}/batch
headers: { Content-Type: application/json, Authorization: Bearer }

Образец запроса, который позволяет проверить статус выполнения задачи с использованием родительского идентификатора (ID).

curl -X GET https://api.yesai.su/v2/sora/generations/{id}/batch

-H "Authorization: Bearer <token>"

-H "Content-Type: application/json"

Параметры:
{id} = 12345 (обязательно, id задания)

Успех:
['success' => true, 'message' => 'OK', 'results' => ['generations_data' => [ ... ]]], 200

Список возможных ошибок:
['success' => false, 'message' => 'ID_IS_EMPTY'], 400
['success' => false, 'message' => 'ID_NOT_VALID'], 400
['success' => false, 'message' => 'UNAUTHORIZED'], 401
['success' => false, 'message' => 'ID_NOT_FOUND'], 404
['success' => false, 'message' => 'USER_HAS_BEEN_BANNED'], 409
['success' => false, 'message' => 'USER_HAS_BEEN_DELETED'], 409
['success' => false, 'message' => 'TOO_MANY_REQUESTS'], 429
['success' => false, 'message' => 'INTERNAL_SERVER_ERROR'], 500

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

  • "status": 0 ("status_description":"in queue"): задание ожидает своей очереди на выполнение. Требуемое действие – ожидание.

  • "status": 1 ("status_description":"in progress"): в данный момент идет работа над заданием. Нужно некоторое время подождать, пока работа не будет завершена.

  • "status": 2 ("status_description":"completed"): задание выполнено успешно. Исходя из этого статуса, вы можете приступать к обработке доступных результатов. По мере их готовности будут появляться новые дочерние задания (примерный временной интервал добавления таких заданий составляет от 3 до 10 секунд).

  • "status": 3 ("status_description":"rejected with error"): задание отклонено из-за возникшей ошибки. В таком случае обязательно ознакомьтесь с подробным комментарием, поясняющим причину, в полях "comment_ru" и "comment_en".

  • "status": 4 ("status_description":"rejected due to timeout"): срок выполнения задания вышел, и оно было автоматически отклонено системой. Рекомендуется повторно отправить задание.


Как разобрать JSON-данные, полученные через API от Sora Images при пакетной генерации (batch) изображений

Рассмотрим конкретный пример ответа API, который возвращается при запросе статуса задания по идентификатору родительского задания.

{
"success": true,// данные успешно получены
"message": "OK",
"results": {
"generations_data": {
"info": {
"count": 4, // количество изображений в задании
"max_id": 457,
"limit_offset": 0,
"limit_count": 20,
"sort_field": "id",
"sort_order": 1,
"id_offset": 2147483647
},
"data": [
{
"id": 454, // id первого задания в пачке (это ID родительского задания)
"user_id": 1234567890, // id пользователя, подавшего задание
"tariff_id": 30, // id тарифа пользователя, подавшего задание, 30 - VIP
"model_id": 1,
"type": 53,
"styles": [], // массив стилей, использованных для генерации изображений
"settings": {
"model_alias": "sora_images",
"sora_dimensions": "1:1",
"sora_references_urls": [
"https://api.yesai.su/tests/face1.jpeg",
"https://api.yesai.su/tests/face2.jpeg"
]
},
"child_ids": [ // список дочерних заданий, от 1 до 3 штук
455,
456,
457
],
"parent_id": 0,
"result_url": "https://yesai.su/files/sora/generations/1234567890_174741769...", ссылка на скачивание первой картинки из пачки заданий
"result_type": "image",
"result_data": {
"image_width": 1024,
"image_height": 1024,
"image_mime_type": "image/png"
},
"comment_ru": "", // комментарий к заданию на русском языке, будет заполнен только при ошибке генерации со статуосм 3
"comment_en": "", // комментарий к заданию на английском языке, будет заполнен только при ошибке генерации со статуосм 3
"accounting": {
"total_cost": 0.7,
"spent_points": 0,
"spent_rpoints": 0.7, // стоимость генерации этого изображения из пачки в монетах, все генерации в Sora Images оцениваются в монетах
"spent_repost_points": 0,
"spent_balance": 0,
"spent_rbalance": 0,
"remaining_points": 1832.87225,
"remaining_rpoints": 9809.445587639999, // остаток монет на балансе заказчика в помент выполнения задания
"remaining_repost_points": 0,
"remaining_balance": 0,
"remaining_rbalance": 22106.49481
},
"language": "",
"prompt": "текст вашего промта", // текст промта, по которому сгенерировано это изображение
"prompt_en": "",
"prompt_language": "",
"status": 2, // статус задания, 2 - успешное выполнение генерации
"status_description": "completed", // текстовое описание статусы задания
"start_at": 1747417691, // время начала выполнения задания в формате Unixtime
"finish_at": 1747417696, // время завершения выполнения задания в формате Unixtime
"created_at": 1747417518, // время подачи задания в формате Unixtime
"updated_at": 1747417792,
"deleted_at": 0
},
{
// здесь будет находиться блок с данными о второй генерации в пачке. Блоки JSON идентичны тем, которые были описаны выше.
},
{
// здесь будет находиться блок с данными о третьей генерации в пачке. Блоки JSON идентичны тем, которые были описаны выше.
},
{
// здесь будет находиться блок с данными о четвертой генерации в пачке. Блоки JSON идентичны тем, которые были описаны выше.
}
]
}
}
}

Если при обращении к API сервиса Sora Images вы получили JSON-ответ, содержащий только одну ссылку в разделе "result_url", это означает, что остальные изображения еще находятся в процессе генерации. Для получения оставшихся ссылок следует выполнять повторные запросы каждые 10–15 секунд. При этом мы рекомендуем ограничиться 7 попытками. Если через 50–70 секунд после первой ссылки новые изображения не появились, значит, нейросеть не смогла создать дополнительные картинки. Аналогично иногда нейросеть может выдать вместо стандартных 4 изображений только 2 или 3.

В случае невозможности выполнения генерации, поле статуса запроса ("status") будет содержать цифру 3, свидетельствующую об ошибке. Тогда важно сообщить клиенту разъяснение причин ошибки, которое представлено в описании блоков "comment_ru" (на русском языке) и "comment_en" (на английском языке). Такой подход позволяет предупредить повторные ошибки, заранее информируя пользователей о потенциальных проблемах.

Наиболее распространенной причиной отказа в генерации является нарушение правил использования сервиса Sora Images. Особенно строго запрещена генерация NSFW-контента ("Not Safe For Work" — неподобающий контент). Для предотвращения блокировки API обязательно уведомите клиентов о запрете отправки подобных запросов. Игнорирование этих рекомендаций может привести к ограничению доступа к API-платформе.


Как происходит обработка заданий на генерацию изображений в Sora Images, отправленных через API Yes Ai?

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

Если у вас возникнут любые дополнительные вопросы, служба технической поддержки оперативно поможет решить их в мессенджере Telegram: @yes_ai_support.

Оригинал инструкции по подключению нейросети Sora Images для генерации изображения через API - ПЕРЕЙТИ

Показать полностью 1
[моё] Чат-бот Искусственный интеллект Нейронные сети Гайд Тестирование Openai Digital Sora API Дизайнер Программа Длиннопост
0
5
RSX0806v1
1 месяц назад

Посты ВКонтакте⁠⁠

Пикабушники и пикабушницы! Нужна помощь!

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

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

Вот теперь появилась задача посложнее, надо сделать так, чтобы текст с картинками постился во все мои группы. Загуглил решение, предлагают это делать через api. Нашел варианты кода для node.js, создал standalone приложение, установил vs code, вроде пока понятно.
Но главный затык в том, что я никак не могу понять принцип работы. В код необходимо вставить access token. И вот дальше все.

Я нахрен не понимаю, куда писать эти команды для получения токена ( посмотрел видео, там говорят прямо в адресную строку, но в документации ВК написано, что это больше не работает).

Я нахрен не понимаю что вообще такое этот токен и для чего он нужен.

И наконец я нахрен не понимаю, раз этот токен действителен только час, его каждый раз получать надо?

В общем, если кто-то может, объясните на пальцах.

УПД. Надо было сразу написать, чтобы было понятно:
1. Я работаю в бюджете
2. Моя работа не связана с точными науками и программированием, я гуманитарий.
3. Это не спам, это тупые управленческие решения министерства.
4. Платить не будут, даже если напишешь министру. Вот лишить премии за не выполнение КПИ могут всю контору.
5. Отказаться нельзя, чисто по-человечески (да, у нас поселок маленький, здесь это работает).

Показать полностью
[моё] Программирование ВКонтакте API Nodejs Помощь Текст
23
12
mr.jinny
1 месяц назад
Книжная лига
Серия Работа системного аналитика

Отзыв. Книга. "Паттерны проектирования API"⁠⁠

Я потратил на неё 1851₽ и 20 часов, чтобы вам не пришлось.

Отзыв. Книга. "Паттерны проектирования API" Программирование, Обучение, IT, Книги, Аналитика, API

Я аналитик-самоучка с опытом ±3 года. Поэтому, иногда, подогреваемый синдромом самозванца, нет-нет да и посматриваю каких-то блогеров вкатывающих в аналитику.

От них и узнал об этой книге. Реально, каждый друг с другом не пересекается, но все в какой-то момент причисляли книгу к категории “ЭТО БАЗА!”.

Соблазнился на тайные магические знания сразу, но к прочтению приступил только спустя 1,5 года.

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

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

Это связано с тем что в больших корпоратах за вас уже давно подумали и установили свои золотые стандарты разработки\архитектуры. Попытаться изменить что-то конечно можно, но сложно, т.к. изменение придётся обосновать как-то объёмнее фразы “Нууу, в той книжке написано что вот так правильно”.

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

А вот в средней, в которой я нахожусь сейчас, мне удалось протолкнуть изменение касательно проектирования API, в т.ч. оперируя данной книжкой. Поскольку занимаемся разработкой продукта с нуля, то это даже существенно повлияло на скорость дальнейшей разработки.

Большую часть книги я прочитал из соображения “Блин! Ну не зря же я её купил!”. И даже при таком раскладе время было потрачено не зря, т.к.:

  • Часто ловил себя на мысли “О! Оказывается вон оно как работает!)”;

  • В книге много UML диаграмм - некоторые моменты начал применять в своих задачах, т.к. увидел что можно улучшить;

  • Подробнее ознакомился с подходами к версионированию, пагинации и мягкому удалению. Что кстати, т.к. скоро по ним предстоят задачи;

Из минусов могу отметить:

  • Много воды;

  • Лишние или повторяющиеся из раза в раз примеры;

А если моё мнение не повлияло на ваше желание получения каких-то тайных знаний, то рекомендую читать книгу также как “Разработка требований к программному обеспечению” - только главу по теме, с которой вы впервые столкнулись прямо сейчас. Задачу за вас она не сделает, но подскажет куда смотреть при выполнении.

Показать полностью
[моё] Программирование Обучение IT Книги Аналитика API
3
Партнёрский материал Реклама
specials
specials

Только каждый третий пикабушник доходит до конца⁠⁠

А сможете ли вы уложить теплый пол, как супермонтажник?

Проверить

Ремонт Теплый пол Текст
5
licoricspb
1 месяц назад
Лига программистов

Битрикс и диалоги в контакт-центре⁠⁠

Помогите решить "ребус".
Нужно из битрикса из контакт центра (куда стекаются диалоги со всех площадок типа ХХ, авто, ВК и прочее) дергать всю информацию (диалоги, сообщения) и далее передавать менеджеру в другой интерфейс.

  1. Я не очень понимаю какой интерфейс опрашивать, что бы получить нужную инфу.

  2. Как правильно выдать права на учетку. Вроде все выдал, но при запросах все равно вижу "нет прав"

  3. Как сделать вебхук, что бы не постоянно опрашивать битрикс, а наоборот - только получать от него информацию о новых сообщениях.

Натолкните, плиз, на правильное направление. Всегда получалось обходить битру стороной, но не в этот раз.

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