Схема Peer-to-Peer предполагает прямую связь между двумя компонентами без необходимости в центральном координаторе.
🔹API Gateway
API-шлюз выступает в качестве единой точки входа для всех клиентских запросов к внутренним сервисам приложения.
🔹Pub-Sub
Шаблон Pub-Sub отделяет производителей сообщений (издателей) от потребителей сообщений (подписчиков) с помощью брокера сообщений.
🔹Request-Response
Это один из самых фундаментальных паттернов интеграции, когда клиент отправляет запрос на сервер и ждет ответа.
🔹Event Sourcing
Event Sourcing предполагает хранение изменений состояния приложения в виде последовательности событий.
🔹ETL
ETL - это схема интеграции данных, используемая для сбора данных из различных источников, преобразования их в структурированный формат и загрузки в конечную базу данных.
🔹Batching
Пакетирование подразумевает накопление данных за определенный период или до достижения определенного порога, после чего они обрабатываются как единая группа.
🔹Streaming Processing
Потоковая обработка позволяет непрерывно получать, обрабатывать и анализировать потоки данных в режиме реального времени.
🔹Orchestration
Оркестровка подразумевает наличие центрального координатора (оркестранта), управляющего взаимодействием между распределенными компонентами или сервисами для реализации рабочего процесса или бизнес-процесса.
Теперь разработчикам не придется перелопачивать весь интернет в поисках нужных ресурсов!
В этой коллекции собрано свыше тысячи API, аккуратно отсортированных по категориям, включая погоду, книги, календари, музыку, фильмы, финансы и множество других.
Цель данного репозитория — предоставить разработчикам удобный доступ к общедоступным и бесплатным API для различных целей, упрощая процесс поиска и интеграции разнообразных сервисов в их проекты. Это может помочь ускорить разработку и обогатить функционал приложений и веб-сайтов, добавляя к ним новые возможности без необходимости создавать все с нуля.
Например, если разработчику нужно добавить в приложение информацию о погоде, он может использовать погодный API из этой коллекции вместо того, чтобы собирать и обрабатывать данные самостоятельно. Это экономит время и ресурсы, а также предоставляет доступ к качественным и актуальным данным.
Хотите узнавать первыми о полезных сервисах с искусственным интеллектом для работы, учебы и облегчения жизни? Подпишитесь на мой телеграм канал НейроProfit, там я рассказываю, как можно использовать нейросети для бизнеса.
Выкручивайте остроумие на максимум и придумайте надпись для стикера из шаблонов ниже. Лучшие идеи войдут в стикерпак, а их авторы получат полугодовую подписку на сервис «Пакет».
Кто сделал и отправил мемас на конкурс — молодец! Результаты конкурса мы объявим уже 3 мая, поделимся лучшими шутками по мнению жюри и ссылкой на стикерпак в телеграме. Полные правила конкурса.
А пока предлагаем посмотреть видео, из которых мы сделали шаблоны для мемов. В главной роли Валентин Выгодный и «Пакет» от Х5 — сервис для выгодных покупок в «Пятёрочке» и «Перекрёстке».
Реклама ООО «Корпоративный центр ИКС 5», ИНН: 7728632689
Бывшие разработчики OpenAI выпустили Claude 3 сразу в трех вариантах:
1) Haiku - самая маленькая по производительности модель, еще не доступна через API
2) Sonnet - это бесплатная, самая быстрая и основная модель. Уже доступна через API
3) Opus - самая мощная модель, по бенчмаркам справляется с некоторыми задачами лучше чем GPT-4. Тоже уже доступна через API. Стоимость Claude 3 Opus — $15 за 1 миллион токенов на вход и $75 за 1 миллион токенов на выход.
Контекстное окно прежнее — 200 тысяч токенов. Появилась возможность распознавания картинок. Отлично работает с кодом и текстом, с математикой же справляется лучше конкурентов (на картинке это наглядно продемонстрировано)
Как использовать Claude 3 из России ❓
1. Меняем язык Google - аккаунта на английский тут
2. Включаем VPN на США, заходим на сайт Claude и логинимся через Google.
3. Покупаем иностранный номер телефона за 10 рублей, например, вот в этом сервисе, как пример
4. Для этого выбираем сервис «Claude» и страну, которая поддерживается в списке.
5. Получаем номер телефона, вставляем его в форму регистрации Claude и вводим полученный SMS для подтверждения.
Готово. Теперь у вас есть доступ к Claude и вы сами можете потестить модель Sonnet и сделать свои выводы 😉
Хотите узнавать первыми о полезных сервисах с искусственным интеллектом для работы, учебы и облегчения жизни? Подпишитесь на мой телеграм канал НейроProfit, там я рассказываю, как можно использовать нейросети для бизнеса.
Новый драйвер карточек Intel ARC под номером 101.5186 значительно поднимет производительность видеокарт линейки Intel ARC Alcemist в API DirectX 11 в определённых играх.
Самый жирный прирост FPS наблюдается у intel ARC с 8 ГБ видеопамяти. Карточки получили до 30 % бонусной производительности согласно пресс релизу intel. Также, долю любви оптимизации получили такие игры прошлых лет, как Assassin's Creed Syndicate, Titanfall 2, Watch Dogs Legion и Just Cause 3/4.
Помимо этого Intel обещает заметное увеличение кадровой частоты в приключенческом боевике The Last of Us Part I.
Какая-то мощная АКТИВНОСТЬ со стороны intel, вполне возможно что в ближайшие 3-6 месяцев intel могут анонсировать новые видеокарты Battlemage
Сегодня я хочу рассказать вам о проекте, над которым я и мой друг работали последние 6 месяцев. Называется он PLAY365 – и это игровой бот для групповых чатов Telegram.
Логотип PLAY365
Почему мы решили его создать? Все очень просто: розыгрыши всяких призов в больших чатах обычно проходят очень скучно. Все записываются в один большой список/группу/бота, а после окончания записи – админ запускает рандомайзер (рандстафф.ру, рандомус.ру, боты рандома, просто пальцем в небо сам и т.д.), который и выбирает номер победителя из списка. В качестве подтверждения результатов админ либо выкладывает скрин/видео итогов рандомайзера, либо дает ссылку на страничку с розыгрышем. И на наш взгляд, такой подход – мало того, что скучный, так еще и не всегда честный - рандомайзер можно бесконечно перекручивать под нужное число. К тому же, от участника не требуется вообще никакой активности: запишись в список и мониторь результаты. Даже вышедший недавно официальный метод розыгрышей в Telegram использует такой же подход, разве что теперь можно для записи в список установить обязательные для подписки каналы, а честность рандома обеспечена самим Telegram:
Самый главный его минус - необходимость приобретать Telegram Premium для выставления в качестве приза! Хоть опцию добавить свой приз к подписке предусмотрели, и на том спасибо...
Поэтому пришла идея: сделать что-то интересное, честное, интерактивное, требующее участия участника, и обязательно – в самом Telegram, чтобы не переходить на сторонние платформы и сайты.
После обсуждения общей концепции, самой первой была придумана игра «Баскетбол». Если в Telegram отправить в чат эмодзи баскетбольного мяча (🏀), то будет отыграна анимация броска мяча в кольцо, у которой есть 5 вариаций: 3 из них покажут, что мяч промахнулся, 2 – что попал, т. е. шансы на попадание – 40%, причем случайность определяется самим Telegram и на нее никак нельзя повлиять. Мы решили использовать это и сделали скрипт, который проводит игру в три раунда: в первом раунде игрок должен забить хотя бы 1 раз из 3 бросков чтобы пройти дальше, во втором – 2 из 3, в третьем – 3 из 3. Если игрок не попадает нужное количество раз – он выбывает. Чей сейчас ход, сколько кто набрал очков и так далее - все считает бот самостоятельно.
Вот так "Баскетбол" выглядит в чате
Потом мы начали думать, как реализовать запись на игру, и вспомнили об inline-клавиатуре в Telegram API, которая позволяет создавать кнопки в сообщениях от бота. После серии экспериментов, сделали такой порядок:
Админ запускает игру, например Баскетбол, командой /basket
Бот объявляет старт записи на игру сообщением в чат, под сообщением есть три кнопки:
«Присоединиться» - добавит игрока в список участников, при повторном нажатии – удалит его из списка;
«Статус» - сообщит игроку, есть ли он в списке или нет;
«Как играть» - выведет краткие правила текущей игры во всплывающем окне.
Запись на игру
Всплывающее окно "Как играть"
После того, как нужное админу количество участников записалось на игру – он стартует ее командой /next, и дальше бот все делает сам – бросает мяч за игроков, считает очки, сообщает о вылетевших и победителе:
Объявление победителя по результатам бросков
"Баскетбол", пожалуй, единственная игра, где игрок может ничего не делать. Во всех остальных нужно участвовать активно – отправлять цифры или команды, выбирать вариант из предложенных ботом кнопок и так далее.
После реализации ключевых функций дело пошло как по маслу, и мы добавили еще 7 игр:
Киллер (/killer) - каждый раунд бот выбирает случайного киллера из списка игроков и даёт ему список из 10 потенциальных жертв. Киллер пишет в чат номер жертвы для "убийства", если не успел - сам выбывает. Побеждает последний оставшийся в живых. Кстати, иногда киллер может промахнуться!
Бинго (/bingo) - игроки загадывают числа из заданного интервала, а потом бот постепенно оглашает случайные числа из него. Задача – отследить совпадение всех своих чисел со случайными и успеть написать "Бинго". Кто ошибся – выбывает.
Рулетка (/roulette) - бот выбирает случайного игрока, и тот должен успеть написать что угодно в чат. Кто промедлил - выбывает. Побеждает последний оставшийся или ответивший в свою очередь.
Заряд (/charge) - игроки как можно быстрее "заряжают батарейку" своими сообщениями в чате. Кто первый наберёт нужное количество - победил.
Больше-меньше (/updown) - Игроки отгадывают число из числового интервала. Каждый раунд бот пишет текущий интервал и даёт случайному игроку возможность написать число из него. После ответа игрока бот говорит - больше загаданное число написанного или меньше, и скорректирует интервал. Игра продолжается, пока кто-то не назовёт точное число.
Пандора (/pandora) - игроки по очереди выбирают ключи, чтобы открывать ящики. В ящиках - разные бонусы или штрафы. Задача - найти Грааль, кто нашёл – сразу побеждает.
Кинг-Конг (/kong) - В каждом раунде один игрок выбирается в качестве мишени Кинг-Конга. Цель может спрятаться или рискнуть подразнить Кинг-Конга, чтобы уменьшить или увеличить шанс поимки следующего игрока (и себя самого). Побеждает последний оставшийся непойманный игрок.
Также, для каждой игры добавили настройки – сколько длится ожидание ответа игрока, сколько раундов будет в игре, может ли промахиваться киллер и так далее:
Настройки игры "Бинго"
Потом у нас появились мини-игры, одна из них – классическая «Ферма»: нужно выращивать растения разной редкости, поливать и удобрять их, а после того, как они вырастут – собирать и продавать за Респекты (внутриигровую валюту). Более редкие растения приносят больше Респектов.
Ферма - теперь и в Telegram!
Респектами можно делиться, покупать на них новые растения, а также менять их на токены, которые, в свою очередь, можно потратить на покупку уникальности – например, сделать так, что в списке игроков твое имя будет отображаться не как @username, а как заданный тобой текст (например, ПоБеДиТеЛь777).
Токены также можно приумножить (или потерять) в премиум-рулетке
Чтобы админы могли модерировать игры – добавили /ban (запретит игроку записываться на игры в течение определенного срока), /mute (запретит игроку писать сообщения в чат), /kick (удалит игрока из текущей игры). Каждую функцию можно отменить:
Если просто ввести /ban, без указания длительности - срок будет расти динамически
К тому же реализовали возможность установить входной порог по количеству сообщений, которые игрок должен написать в чат для того, чтобы он смог записаться на игру.
Это позволяет проводить игры только для старожилов или активных участников чата:
Такое окно появится, если попробовать присоединиться к игре с лимитом
И в итоге, когда все было сделано и мы начали тестировать бота – неожиданно для себя мы уперлись в ограничения Telegram API по количеству отправляемых ботом сообщений: бот «падал» даже при нескольких, запущенных одновременно, играх. Чтобы это обойти и дать возможность всем играть нормально, сначала мы хотели создать много ботов, чтобы в чате мог быть только какой-то один, но это показалось слишком сложным и плохо масштабируемым при большом спросе на бота. Поэтому был придуман другой подход – сперва админ создает своего бота через @BotFather, получает его API-Token (пример такого токена - 1234567890:abcdefghijABCDEfghiJKLMNopqrSTUVwxyz), и потом связывает своего бота с системой PLAY365, отправив API-Token нашему основному боту, @play365_bot:
Главное меню основного бота
После этого админу становится доступен весь функционал PLAY365 в созданном им боте, который он и добавит в свой чат. Такой подход позволяет нам (и админу) вообще не беспокоиться об ограничениях Telegram.
Чтобы окупать сервера и дальнейшее создание игр и фич – мы прикрутили к боту монетизацию посредством подписки:
Еще мы добавили себе возможность применять промокоды, которые планируем иногда публиковать. Для Пикабу, например, это PIKABU365, который бесплатно применит тариф NEWBIE на 1 месяц к вашему боту.
В целом, проект получился очень насыщенный, с действительно большим количеством функционала: например, я не описал тут возможность добавления игроков-ботов в игры, логи игр, статистику игроков, добавление модераторов, плейсхолдеры для текстовой рекламы в сообщении с записью на игру и в объявлении победителя, призыв участников чата на игру... Всё это мы постарались описать на сайте-инструкции проекта, ссылка в самом конце поста. Если же есть любые вопросы/предложения/идеи - не стесняйтесь писать их тут, в комментариях, или напрямую к нам в саппорт, ссылка также в самом конце.
Отдельно хочу ответить на один из самых частых вопросов (пусть и задаваемый в разных вариациях) - это НЕ СКАМ, НЕ РУЛЕТКА, тут НЕЛЬЗЯ ВЫВОДИТЬ ДЕНЬГИ, это НЕ АЗАРТНАЯ ИГРА, НЕ СТАВКИ! Это просто игровой бот, который делает общение в чатах чуточку интереснее и веселее.
В очередной раз, когда я бессмысленно бродил по Steam, меня посетила идея - сделать (в первую очередь для себя) паблик, который периодически будет выбирать случайную игру и постить в ВК пост с кратким описанием, рейтингом, скриншотами и трейлерами. Таким образом, можно не отрываясь от обычного браузинга соц.сетей получать идеи "на поиграть", да и в целом подтянуть свою эрудицию в мире игр.
И так. Идея есть, а как реализовать? Первое, что приходит на ум - взять Steam API и с помощью него получать списки "Лидеров продаж", "Новинок" и всей библиотеки Steam, затем случайно выбирать игру из этих списков и постить.
Получение информации от Steam
Уже на этапе изучения API возникли сложности:
Steam умеет отдавать только список всех игр в магазине
Нельзя получить рейтинг игры
Нельзя получить теги игры
Ну что ж. В целом выглядит неприятно, но вполне решаемо. У Steam есть отдельные страницы для "Лидеров продаж" и "Новинок", что позволяет парсингом страницы получить все ссылки на игры с этих страниц. Так решаем первую проблему.
Вторая и треться проблема решаются аналогично, но ищем уже рейтинг и теги непостредственно на странице интересующей нас игры.
Хотелось бы ещё получать информацию о совместимости со Steam Deck, но они не дают эту информацию ни в API ни на странице игры. Очень странно.
Выбор игры
Как же выбирать игру из списка? Если мы будем роллить рандомно игры (особенно из всей библиотеки), то будет попадаться один шлак. Поэтому надо задать какие-то рамки, но и сильно зарезать выбор не хотелось. Поэтому фильтров для выбора всего 3:
У игры есть отзывы
Эти отзывы положительные
Игра не была ещё опубликована в паблике
Постинг по таймеру
Т.к. в первую очередь паблик делал для себя, то тут должен быть элемент неожиданности "А что же запоститься в этот раз??". Поэтому вариант запуска скрипта руками отпадает.
СОбственно был арендован дешёвый VPS, на котором по таймеру запускается скрипт.
Ну и раз уже всё сделано для ВК, то и Telegram грех не добавить. Тем более из-за того, что это родственные продукты,то и API у них схожие и особых проблем добавление кросспостинга не создаёт.
Немного технических подробностей
Для написания скрипта использовал Python с голыми requests, Beautiful Soap для парсинга страниц и wget для скачивания скриншотов и трейлеров. На сервере скрипт запускается по времени через Crontab.
Спасибо за внимание. Если тема паблика/канала вам показалась интересной - добро пожаловать!
Недавно обратился клиент. Хочет, чтобы по звонку с его телефона на определенный номер выключался компьютер.
Задача оказалась не сложная. Выбрали ip телефонию, настроили в ней webhook (отправка данных на url адрес) на событие инициализации звонка. На этом адресе разместили php скрипт который сверял номер с которого свершали звонок. Далее с помощью api телефонии сбрасывали звонок и отправляли get запрос на ip адрес компьютера, где вызывалась команда на выключение. Php скрипт при успешном ответе отправлял смс (по api сервиса отправки смс) о том, что ПК выключен.