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

Arkanoid Pikabu

Арканоид, Аркады, Веселая

Играть

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

  • AlexKud AlexKud 40 постов
  • unimas unimas 13 постов
  • hapaevilya hapaevilya 2 поста
Посмотреть весь топ

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

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

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

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

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

Есть ли какие-то минусы/подводные камни при смене региона на IPhone и Windows PC?⁠⁠

Так как в Windows и IOS из-за санкций многие из приложений недоступны (на IOS разработчики сами решают, в каких странах даже бесплатное приложение не будет доступно), а Windows вроде вообще магазин заблокировали, если не ошибаюсь. Вопрос: если при переустановке Винды или создании нового Apple ID на айфоне выбрать какой-то другой регион, никаких подводных камней/минусов с этим не будет?

Также интересует, можно ли будет по-прежнему оплачивать покупки в App Store по одному лишь номеру телефона (например, МТС позволяет покупать приложения и подписки через баланс твоей сим-карты), или же с российскими номерами это работает только если стоит российский регион в системе/аккаунте? Spotify можно будет оплатить по номеру телефона на айфоне?

[моё] iPhone Вопрос Windows Windows 10 Компьютерная помощь iOS Спроси Пикабу Текст
6
PowerofPower
PowerofPower
1 год назад

Санкции и геймдев: новые реалии индустрии видеоигр в 2024 году⁠⁠

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

Санкции и геймдев: новые реалии индустрии видеоигр в 2024 году Мобильные игры, Развитие, Игры, Стартап, Стратегия, Политика, Power, Android, Разработка, iOS, Геймеры, Telegram (ссылка)

Влияние санкций

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

Адаптация и инновации

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

Локализация и самодостаточность

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

Санкции и геймдев: новые реалии индустрии видеоигр в 2024 году Мобильные игры, Развитие, Игры, Стартап, Стратегия, Политика, Power, Android, Разработка, iOS, Геймеры, Telegram (ссылка)

Сообщество и поддержка

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

Заключение

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

Поддержи отечественного производителя — скачай игру "Power of Power"! Это не просто способ получить новый игровой опыт, но и возможность внести свой вклад в развитие отрасли, которая каждый день доказывает свою жизнеспособность и талант. "Power of Power" — это результат труда, мастерства и инноваций российских разработчиков, и каждая загрузка помогает укрепить основы нашего геймдева.

Играйте в игры, созданные в России, и будьте частью сообщества, которое ценит креативность и стремление к прогрессу. Ваш выбор имеет значение!

Ссылка на игру! 👉 https://t.me/+eb8bjp4ctsgxYzc6

Показать полностью 2
Мобильные игры Развитие Игры Стартап Стратегия Политика Power Android Разработка iOS Геймеры Telegram (ссылка)
4
PowerofPower
PowerofPower
1 год назад

Турниры среди геймеров: Как проходят и почему так популярны⁠⁠

Киберспорт – это неотъемлемая часть современной игровой индустрии. Турниры среди геймеров привлекают миллионы зрителей и участников со всего мира. Давайте рассмотрим, что делает эти соревнования такими популярными и как они проходят.

Турниры среди геймеров: Как проходят и почему так популярны Игры, Игровые обзоры, Соревнования, Новости игрового мира, Power, Турнир, Киберспорт, Приз, Android, iOS, Мобильные игры, Геймеры, Telegram (ссылка)

Power of Power

Популярные дисциплины

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

  1. Dota 2: Эпические битвы между командами, миллионные призовые и громкие имена – Dota 2 – одна из самых зрелищных и популярных игр в мире.

  2. Counter-Strike: Global Offensive (CS:GO): Этот шутер с видом от первого лица объединяет команды в сражениях на различных картах. CS:GO – это классика киберспорта.

  3. League of Legends (LoL): Многопользовательская онлайн-игра, где команды сражаются за контроль над картой. Лига Легенд – одна из самых успешных дисциплин.

Формат турниров

Турниры могут быть разных форматов:

  • Онлайн-турниры: Участники соревнуются через интернет, не покидая свои дома. Это позволяет собрать команды со всего мира.

  • Оффлайн-турниры: Команды собираются в одном месте и соревнуются в специальных игровых залах. Это создает атмосферу напряжения и соревнования.

Призовые и зрители

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

Турниры среди геймеров – это не только спортивные события, но и целая культура, объединяющая людей, увлеченных играми. Не удивительно, что они стали так популярными!

Игра "Power of Power" проводит свой турнир 8 июня и призывает всех желающих принять участие! Это отличная возможность для геймеров продемонстрировать свои навыки и соревноваться за призы.

Турниры среди геймеров – это не только спортивные события, но и целая культура, объединяющая людей, увлеченных играми. Не удивительно, что они стали так популярными!

Заявки на участие принимаются в тг канале👉https://t.me/+eb8bjp4ctsgxYzc6

В закрепе будет ссылка на игру!

Показать полностью 1
Игры Игровые обзоры Соревнования Новости игрового мира Power Турнир Киберспорт Приз Android iOS Мобильные игры Геймеры Telegram (ссылка)
0
PowerofPower
PowerofPower
1 год назад

Холодная война между США и СССР для чайников⁠⁠

Холодная война — это период длительного и напряжённого противостояния между Советским Союзом и Соединёнными Штатами Америки, который начался сразу после окончания Второй мировой войны и продолжался до распада СССР в начале 90-х годов. 50-е годы стали одним из самых напряжённых десятилетий в этом противостоянии, ознаменованные гонкой вооружений, космической гонкой и многочисленными политическими конфликтами по всему миру.

Почему началась холодная война?

Холодная война началась по ряду причин, связанных с политическими, идеологическими и экономическими разногласиями между Советским Союзом и Соединёнными Штатами после Второй мировой войны. Вот некоторые из ключевых факторов:

1. Идеологические различия: СССР и США представляли две противоположные идеологии — коммунизм и капитализм. Эти идеологические различия привели к недоверию и враждебности между странами.

Холодная война между США и СССР для чайников Политика, Ядерное оружие, Цивилизация, Историческое фото, СССР, США, Power, Android, iOS, Запад, Военная история, Игры, Мобильные игры, Видео, Telegram (ссылка), Длиннопост

2. Разделение Германии и Берлина: После войны Германия была разделена на зоны оккупации, что стало символом более широкого разделения Европы на советскую и западную сферы влияния.

Холодная война между США и СССР для чайников Политика, Ядерное оружие, Цивилизация, Историческое фото, СССР, США, Power, Android, iOS, Запад, Военная история, Игры, Мобильные игры, Видео, Telegram (ссылка), Длиннопост

3. Атомная бомба: США были единственной страной с ядерным оружием в конце Второй мировой войны, что давало им значительное преимущество. Когда СССР также разработал атомное оружие, это привело к гонке вооружений и усилению напряжённости.

Холодная война между США и СССР для чайников Политика, Ядерное оружие, Цивилизация, Историческое фото, СССР, США, Power, Android, iOS, Запад, Военная история, Игры, Мобильные игры, Видео, Telegram (ссылка), Длиннопост

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

Холодная война между США и СССР для чайников Политика, Ядерное оружие, Цивилизация, Историческое фото, СССР, США, Power, Android, iOS, Запад, Военная история, Игры, Мобильные игры, Видео, Telegram (ссылка), Длиннопост

5. Политика сдерживания: США приняли политику сдерживания, целью которой было предотвращение распространения коммунизма, что воспринималось СССР как угроза их интересам.

6. Космическая гонка и гонка вооружений: Обе страны стремились доказать своё технологическое и военное превосходство, что привело к интенсивной конкуренции в разработке оружия и космических технологий.

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

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

А теперь представь, что вся политика может решаться в игровом формате! Звучит интересно, но эти возможно в вселенной повер оф повер! Для того чтобы решать судьбу народа, важно стратегически мыслить и быть ловким! И никаких реальных ядерных угроз, ведь бомбу можно взорвать только в игре и она никому не навредит 😳 

Холодная война между США и СССР для чайников Политика, Ядерное оружие, Цивилизация, Историческое фото, СССР, США, Power, Android, iOS, Запад, Военная история, Игры, Мобильные игры, Видео, Telegram (ссылка), Длиннопост

Переходи в тг канал и в закрепе будет ссылка на игру! 👉 https://t.me/+eb8bjp4ctsgxYzc6

Холодная война между США и СССР для чайников Политика, Ядерное оружие, Цивилизация, Историческое фото, СССР, США, Power, Android, iOS, Запад, Военная история, Игры, Мобильные игры, Видео, Telegram (ссылка), Длиннопост
Показать полностью 6 1
Политика Ядерное оружие Цивилизация Историческое фото СССР США Power Android iOS Запад Военная история Игры Мобильные игры Видео Telegram (ссылка) Длиннопост
7
PowerofPower
PowerofPower
1 год назад

Игра за власть⁠⁠

Игра за власть Power, Brawl Stars, Android, iOS, Игровые обзоры, Игры, Мобильные игры, Новости игрового мира, Мемы, Стратегия, Юмор, Telegram (ссылка)

Power of Power

бравл старс Power of Power - новая мобильная игра которая захватывает этот мир.

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

Встречайте нашего фаворита:

Игра за власть Power, Brawl Stars, Android, iOS, Игровые обзоры, Игры, Мобильные игры, Новости игрового мира, Мемы, Стратегия, Юмор, Telegram (ссылка)

Power of Power

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

Дополнительные способности:

Чёрная дыра: Создает Сингулярность которая движется в направлении удара, а затем взрывается.

Вакуум: постепенно притягивает врагов к центру.

Горизонт событий: Замедляет течение времени для врагов.

Об остальных узнаете сами 😉

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

Готовы ли вы к этому вызову?

Ссылка на игру! 👉 https://t.me/+eb8bjp4ctsgxYzc6

Показать полностью 1
Power Brawl Stars Android iOS Игровые обзоры Игры Мобильные игры Новости игрового мира Мемы Стратегия Юмор Telegram (ссылка)
3
PowerofPower
PowerofPower
1 год назад

Политический Brawl вышел в России!⁠⁠

В России вышел аналог бравл Старс? Да!
Сейчас игра на стадии разработки, но уже доступна в тестовой версии и ее можно скачать на андроид и айфон. Это мобильная онлайн игра, в которой можно собираться в кланы, и даже есть турниры с призами! Только посмотрите на многообещающий трейлер.

Power of Power

Официального релиза еще не было, но я расскажу как ее скачать.

Заходим в телеграм канал 👉 https://t.me/+eb8bjp4ctsgxYzc6

Заходим в закреп и вуаля! Ссылка на игру! Доступно на айфон и на андроид
Только посмотрите какие тут персонажи, никого не напоминает? Лично мне - нет 😃

Политический Brawl вышел в России! Power, Brawl Stars, Android, iOS, Геймеры, Игры, Мобильные игры, Игровые обзоры, Стратеги, Новости игрового мира, Юмор, Мемы, Видео, Telegram (ссылка), Длиннопост

Power of Power

Вот сама игра, и правда похоже на бравл

Политический Brawl вышел в России! Power, Brawl Stars, Android, iOS, Геймеры, Игры, Мобильные игры, Игровые обзоры, Стратеги, Новости игрового мира, Юмор, Мемы, Видео, Telegram (ссылка), Длиннопост

Power of Power

В еще зацените оружие, например тут есть персонаж - отец Луко, а его оружие - это бульбамет

Политический Brawl вышел в России! Power, Brawl Stars, Android, iOS, Геймеры, Игры, Мобильные игры, Игровые обзоры, Стратеги, Новости игрового мира, Юмор, Мемы, Видео, Telegram (ссылка), Длиннопост

Power of Power

Показать полностью 3
Power Brawl Stars Android iOS Геймеры Игры Мобильные игры Игровые обзоры Стратеги Новости игрового мира Юмор Мемы Видео Telegram (ссылка) Длиннопост
4
PowerofPower
PowerofPower
1 год назад

Как победить на выборах⁠⁠

Хороший вопрос, это достаточно сложно, нужно проходить кучу осмотров, повышать себе рейтинг, правильно составить позиционирование, участвовать в политической жизни страны и много знать… А еще куча бабла на предвыборную компанию…

Как победить на выборах Опрос, Игры, Power, Brawl Stars, Android, iOS, Геймеры, Мобильные игры, Игровые обзоры, Стратегия, Новости игрового мира, Юмор, Мемы, Telegram (ссылка), Длиннопост

Power of Power

Но в альтернативной вселенной мобильной игры повер оф повер (Power of Power) которая похожа на бравл Старс и в которую я сейчас играю есть такая возможность! Нужно просто хорошо играть и поднимать рейтинг, тогда есть возможность выиграть выборы или войну.

Мир, в котором все решает игра

Как победить на выборах Опрос, Игры, Power, Brawl Stars, Android, iOS, Геймеры, Мобильные игры, Игровые обзоры, Стратегия, Новости игрового мира, Юмор, Мемы, Telegram (ссылка), Длиннопост

Power of Power

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

Это утопия или антиутопия?

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

Как победить на выборах Опрос, Игры, Power, Brawl Stars, Android, iOS, Геймеры, Мобильные игры, Игровые обзоры, Стратегия, Новости игрового мира, Юмор, Мемы, Telegram (ссылка), Длиннопост

Power of Power

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

Ссылка на игру! 👉 https://t.me/+eb8bjp4ctsgxYzc6

Что думаете по поводу того чтобы политику в мире решала игра?
Всего голосов:
Показать полностью 3 1
Опрос Игры Power Brawl Stars Android iOS Геймеры Мобильные игры Игровые обзоры Стратегия Новости игрового мира Юмор Мемы Telegram (ссылка) Длиннопост
7
15
MarkParker.5
MarkParker.5
1 год назад
Лига программистов
Серия Программирование и Туториалы

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал)⁠⁠

Предыдущие статьи:

  • Как мы построили ИИ-стартап на хакатоне выходного дня в Германии

  • House, MD - AI Diagnostician in Your Phone: Passing the Startup Torch

В этой статье мы рассмотрим все тонкости создания Proof of Concept (PoC) мобильного приложения, построенного с помощью фреймворка SwiftUI и бэкенда с использованием FastAPI. Дополнительно я продемонстрирую эффективные архитектурные паттерны для SwiftUI-приложений, в частности MVVMP в сочетании с принципами SOLID и Dependency Injection (DI). Для android код можно легко перевести на Kotlin с Jetpack Compose.

Зачем нам нужен бэкенд

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

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

  1. Безопасность: Бэкэнд помогает защитить конфиденциальные данные и токены аутентификации пользователей от атак типа MITM (Man-in-the-Middle). Он выступает в качестве защищенного шлюза между пользовательским устройством и базой данных или внешними службами, обеспечивая шифрование и аутентификацию всех данных.

  2. Контроль над использованием сервисов: Управляя API и взаимодействием с пользователями через бэкэнд, вы можете отслеживать и контролировать использование приложения. Это включает в себя дросселирование для управления нагрузкой, предотвращение злоупотреблений и обеспечение эффективного использования ресурсов.

  3. Интеграция с базой данных: Бэкэнд обеспечивает бесшовную интеграцию с базами данных, позволяя динамически хранить, извлекать и обновлять данные в режиме реального времени. Это важно для приложений, которые требуют учетных записей пользователей, хранят их предпочтения или нуждаются в быстром и безопасном получении больших объемов данных.

  4. Модели подписки и Freemium: Реализация услуг по подписке или модели freemium требует наличия бэкенда для выставления счетов, отслеживания использования и управления уровнями пользователей. Бэкэнд может безопасно обрабатывать платежи и подписки, обеспечивая бесперебойную работу пользователей и соблюдая требования по защите данных.

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

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

Объяснение технического стека

  • SwiftUI: Лучший вариант для нативных приложений для iOS после выхода UIKit. Он декларативен и упорядочен, а XCode является незаменимым редактором благодаря эпл. Для android код можно легко перевести на Kotlin с помощью Jetpack Compose.

  • FastAPI: Выбран для бэкенда за его скорость, минимальное количество шаблонов и декларативность, редактируется с помощью превосходного Zed.dev.

  • ChatGPT API: Используется в качестве большой языковой модели (LLM); выбор может меняться в зависимости от необходимости кастомизации.

  • Ngrok: Реализует туннелирование с помощью простой команды CLI для выхода локального сервера в интернет.

Создание приложения для iOS

Теория: Архитектурные паттерны

  1. MVVMP (Model View ViewModel Presenter):

  • Model: Представляет собой структуры данных, используемые в приложении, такие как Question, Answer, Questionary и FilledQuestionary. Эти модели просты и содержат только данные, следуя принципу KISS.

  • View: Отвечают только за представление пользовательского интерфейса и делегируют все данные и логику презентерам. Они не содержат никакой бизнес-логики и спроектированы так, чтобы быть простыми и сосредоточенными на рендере UI.

  • ViewModel: В SwiftUI ViewModel представлена объектом ObservableObject, который служит моделью наблюдения за изменяемыми данными. Здесь нет методов и логики.

  • Presenter: Presenter управляет всей логикой, связанной с модулем (экраном или представлением), но не бизнес-логикой. Он взаимодействует с доменным слоем для выполнения операций бизнес-логики, таких как взаимодействие с API или управление сохранением данных.

  • Domain Layer: Этот слой содержит бизнес-логику приложения и взаимодействует с внешними ресурсами, такими как базы данных, API или другие сервисы. Он состоит из нескольких компонентов, таких как сервисы, провайдеры, менеджеры, репозитории, мапперы, фабрики и т. д.

  • На самом деле, MP в MVVMP является инициалами Марка Паркера, а полная форма — «Model View ViewModel by Mark Parker».

  1. Принципы СОЛИД:

    • Принцип единой ответственности: У каждого класса должна быть только одна причина для изменений.

    • Принцип открытость-закрытость: Компоненты должны быть открыты для расширения, но закрыты для модификации.

    • Принцип замещения Лискова: Объекты суперкласса должны быть заменяемы объектами подклассов.

    • Принцип разделения интерфейсов: Ни один клиент не должен быть вынужден зависеть от интерфейсов, которые он не использует.

    • Принцип инверсии зависимостей: Зависимость от абстракций, а не от конкретики, чему способствует DI.

  2. Инъекция зависимостей (DI): Реализация с использованием DI-контейнера для соблюдения принципа инверсии зависимостей.

Разработка бэкенда

Код бэкенда довольно прост. Эндпоинты (main.py):

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

"onboarding" предоставляет список вопросов анамнеза, которые необходимо заполнить при первом запуске приложения. Ответы будут сохранены на устройстве и использованы для персонализированной диагностики в будущем. "doctor" — основной эндпоинт: он генерирует вопросы на основе предыдущих ответов и карты пользователя, либо возвращает результат диагностики.

Модели:

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Промпты:

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Модуль промптов использует GPT-3.5 от OpenAI для генерации ответов на основе пользовательского ввода, анамнеза и заполненных анкет. Он возвращает пользователю соответствующие вопросы и советы по диагностике здоровья. Как видите, ничего сложного здесь нет. Код элементарен, а промпты - просто набор четких инструкций для LLM.

Настройте окружение и запустите сервер с помощью fastapi dev main.py.

Подробности:

  • fastapi.tiangolo.com/tutorial/first-steps

  • pypi.org/project/openai/

Открытие доступа к локальному хосту через Интернет

  1. Зарегистрируйтесь на сайте ngrok.com и получите токен доступа.

  2. Установите ngrok с сайта ngrok.com/download.

  3. Выполните команду ngrok config add-authtoken <TOKEN>.

  4. Запустите с помощью команды ngrok http http://localhost:8080 (при необходимости измените порт).

Подробные инструкции по настройке можно найти в документации ngrok.

Кодим приложение

Я не буду показывать здесь весь исходный код, для этого есть GitHub. Найти его можно по адресу: HouseMDAI iOS App. Вместо этого я остановлюсь только на важных (IMO) моментах.

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

Первым делом нам нужны модели, и они довольно просты (принцип KISS).

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Теперь давайте сделаем онбординг. Продолжаем следовать KISS и SRP (Single Responsibility Principle), никакой бизнес-логики в представлениях, только UI. В данном случае - только список вопросов с прокруткой. Все данные и логика делегированы презентеру. Единственное, что здесь интересно, это небольшой вспомогательный метод bindingForQuestion, который, вероятно, должен быть в презентере, но сейчас это не имеет значения.

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Вы будете удивлены, но в презентере также нет никакой бизнес-логики!

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Все по-прежнему simple, stupid и имеет только одну ответственность. Presenter должен содержать только логику своего представления. Бизнес-логика уровня приложения находится вне его юрисдикции, поэтому презентер просто делегирует ее наверх по стэку вызова.

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

При использовании паттерна Dependency Injection зависимости предоставляются извне класса, а не инстанцируются внутри него. Это способствует развязке и позволяет упростить поддержку и тестирование кода.

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

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


Однако существует альтернативный подход, предлагаемый MarkParker5/AnyObservableObject.
Эта библиотека работает аналогично родным оберткам свойств SwiftUI, но убирает проверку типа во время компиляции в пользу проверки во время рантайма. Хотя такой подход может внести некоторые риски, их легко снизить, написав элементарные xcode тесты, которые просто инициализируют представления так же, как вы делаете это во время рантайма.

Используя эту альтернативу, вы можете упростить свой код и оптимизировать процесс работы с протоколами в SwiftUI.

Итак, если презентер не содержит бизнес-логику, то где же она? Это задача для доменного слоя, который обычно содержит сервисы, провайдеры и менеджеры. У них всех очень схожее применение, и разница между ними до сих пор является предметом дискуссий. Давайте создадим OnboardingProvider, который будет содержать всю бизнес-логику процесса онбординга.

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

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

Теперь давайте соберем все вместе в корне приложения.

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Это приложение SwiftUI устанавливает свое начальное состояние с помощью оберток полей StateObject. Оно инициализирует OnboardingProvider, OnboardingPresenter и HomePresenter в своем методе init. Провайдер OnboardingProvider отвечает за управление данными, связанными с онбордингом, а OnboardingPresenter управляет логикой представления онбординга. HomePresenter управляет главным домашним представлением.

В теле сцены приложения проверяется, нужна ли регистрация на сайте. Если да, то она представляет OnboardingView с OnboardingPresenter. В противном случае она представляет TabView, содержащий HomeView с HomePresenter и, если доступно, ProfileView.

Теперь настало время для домашнего экрана. Логика проста:

  1. Получаем сообщение от пользователя

  2. Используя сообщение, запрашиваем список вопросов из бэкенда

  3. Показываем вопросы по одному, используя встроенную push-навигацию.

  4. Добавляем ответы к запросу и повторяем 2-4, пока бэкенд-доктор не вернет окончательный результат

  5. Показываем финальный результат

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

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

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Он управляет вводом сообщения пользователем и обновляет путь навигации на основе ответов от бэкенда.

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

Аналогично, когда заполняется вопросник, метод onQuestionaryFilled() отправляет заполненный вопросник на бэкенд и соответствующим образом обновляет путь навигации.

Здесь есть небольшое дублирование кода между методами onSend() и onQuestionaryFilled(), которое можно было бы отрефакторизовать в один метод для обработки обоих случаев. Однако оставим это как упражнение для дальнейшей доработки.

Модуль Questionary (View+Presenter) почти является копией Onboarding и просто делегирует логику до HomePresenter, поэтому я не вижу необходимости показывать код. Опять же, для этого есть github.

Последнее, что я хочу показать, это две реализации DoctorProvider, единственной обязанностью которых является вызов API и возврат DoctorResponse.

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Первая использует наш бэкенд:

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Вторая вызывает openai api напрямую (подход backendless) и является практически копией модуля подсказок из бэкенда:

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Обе реализации легко взаимозаменяются благодаря инъекции зависимостей:

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Другой пример

Посмотреть пример этой архитектуры в реальном приложении можно в моем проекте TwiTreads на github.com/MarkParker5/TwiTreads

Что делать дальше

  • Интегрируйте аутентификацию и базу данных пользователей в бэкенд. Можете использовать официальный шаблон FastAPI из FastAPI Project Generation.

  • Реализуйте логику аутентификации в приложении.

  • Сосредоточьтесь на улучшении дизайна приложения, чтобы повысить удобство работы с ним. Давайте создавать красивые приложения!

Заключение

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

О других интересных проектах периодически пишу в телеграм.

Показать полностью 14
[моё] Программирование Разработка iOS Искусственный интеллект Туториал Открытый код Чистый код Архитектура по Frontend Backend Open Source Длиннопост
0
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии