TGViewer
Channel Public Channel
Prefire iOS

Prefire iOS

@prefire_ios

Чат/блог о современной 🍏iOS разработке

Пробустить канал → https://t.me/prefire_ios?boost

Автор: @barredewe
Subscribers
980
Photos
101
Videos
7
Links
103

Showing posts older than #79 · Back to latest

Older Posts 18 shown
Post #78 809
🧠 Как я заменил Ollama на встроенный llm в ScreenCat

Изначально кот работал через встроенный Ollama, но хотелось большего контроля. Поэтому я перешёл на обёртку - Llm.swift, которая напрямую работает через llama.cpp.

Теперь:
👉 Модель Llama 3.1 8B грузится прямо из .app (gguf файл в ресурсах)
👉 Нет лишних процессов, демонов или сторонних сервисов
👉 Полная интеграция с логикой кота: перезапуск, остановка, ограничения длины ответа
👉 Полный контроль за всеми параметрами генерации
👉 Возможность дообучать котика (ставим лайк или дизлайк ему ответу)

🧩 Структура (Template)
Чтобы корректно работать с llama 3.1 нужно сначала задать корректный шаблон.
(ох сколько я убил времени что бы его найти 🥲)
Template(
system: ("<|start_header_id|>system<|end_header_id|>\n\n", "<|eot_id|>\n"),
user: ("<|start_header_id|>user<|end_header_id|>\n\n", "<|eot_id|>\n"),
bot: ("<|start_header_id|>assistant<|end_header_id|>\n\n", ""),
stopSequence: "<|eot_id|>",
systemPrompt: systemPrompt
)


⚙️ Настройки LLM
Вот c такими параметрами создается бот:
- seed: 42 - стабильность генерации (немного меньше рандома)
- topK: 15 - ограничение по количеству вариантов токенов
- topP: 0.7 - контроль вероятностей (nucleus sampling)
- temp: 0.6 - температура пониже, чтобы кот отвечал логичнее и аккуратнее
- historyLimit: 0 - без истории: каждый ответ независимый, кот реагирует на текущую ситуацию
4096 токенов - с запасом для промпта и ответа

📢 В следующем посте расскажу, как кот собирает промпт:
что он видит на экране, как учитывает своё настроение и как это влияет на его реплики.

И покажу примеры реальных ответов котика 😼

Ну и держите кусочек реального промта кота:

Ты — \(CatMind.shared.catName), пиксельный кот. Говоришь ТОЛЬКО по-русски.
Формат ответа: одно предложение, кратко и БЕЗ ВАРИАНТОВ.
❗️ Запрещено: англицизмы, лишние эмодзи, сленг.

#screencat #ai
  • ❤ 11
  • 👍 2
  • 🔥 2
  • 🤡 2
  • 👾 2
Post #77 688
DeepWiki — что за сервис и стоит ли его пробовать?

DeepWiki — это веб-платформа от Cognition AI (релиз 25 апреля 2025 г.)⁠, которая по запросу создаёт wiki-страницу для любого публичного GitHub-репозитория. Достаточно заменить github.com на deepwiki.com в URL, после чего открывается сгенерированное «досье» на проект — со структурой файлов, диаграммой зависимостей и встроенным чат-ассистентом Devin.

Мой опыт использования
Когда я открыл свой репозиторий Prefire в DeepWiki, сервис вывел жирным заголовком фразу “Define Once, Use Everywhere”. Забавно: эта мысль действительно лежала в основе библиотеки — мы описываем UI-превью один раз (через #Preview или PrefireProvider), а дальше они превращаются и в снапшот-тесты, и в живую демку. Но сформулировать это как чёткий принцип я раньше не догадался, а в README он мелькал только намёками.

Было круто посмотреть как мой репозиторий виден со стороны 😏

#ai
DeepWiki BarredEwe/Prefire | DeepWiki Prefire is a library designed to automate the generation of UI component documentation and visual regression tests from SwiftUI Preview declarations. It leverages your existing SwiftUI previews to cre
  • 🔥 10
  • 👍 4
Post #76 771
🎮 Меню для ScreenCat — в духе Persona 5

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

Технически:
👉 Меню написано на SwiftUI
👉 Каждая кнопка — кастомная Shape с гранями, как в Persona
👉 Кнопки располагаются по кругу, рассчитываются через угол + радиус
👉 При наведении — лёгкая 3D деформация и тень
👉 Есть эффект «разворота», если угол большой — текст поворачивается, чтобы быть читаемым
👉 Под котом появляется фон, подчёркивающий действия

Интересно было балансировать читаемость, кликабельность и стиль. Теперь меню реально ощущается частью персонажа, а не просто интерфейсом.

#screencat
  • 🔥 30
  • ❤ 6
Post #74 782
🧪 Стек ScreenCat

Вообще стек довольно простой. Старался брать минимум зависимостей для меньшего размера. Опыт с SpriteKit у меня уже был, на самой первой работе. Писал там игру 2D scroll shooter.

🐱 UI — SwiftUI: меню, баблы, панели. Всё кастомное, даже Shape для кнопок.
🧵 SpriteKit: хвост анимируется шейдерами, глаза моргают, тело дышит — всё процедурно. Сам кот состоит из хвоста, глаз и тела. Маловато конечно для крутых анимаций, но уже выглядит живо.
🧠 Ollama + LLaMA 3: локальная LLM встроена прямо в .app, скачивает модель при первом запуске.
🪟 Vision: кот реально «смотрит» на окна и читает, что на экране.
🧠 PromptBuilder: собирает контекст из нужд кота, окружения и текста с экрана.
🔄 CatEngine — мини-движок сценариев. Есть очередь, прерывания, заморозка и логика приоритетов. На сценариях я пишу вообще все, открытие меню, ходьбу котика, игры с ним и тд. Приложил скриншот как раз с уже готовыми сценариями 😏
🔋 DisplayLink: анимации хождения по экрану + некоторые игры.
💾 UserDefaults + Cache: всё, что кот знает, он помнит. Даже как ты его звал.

#screencat
  • 🔥 17
  • 👍 5
  • ❤ 4
Post #73 718
🧠 За милой мордочкой ScreenCat скрывается ИИ-движок.

Я встроил прямо в приложение бинарь Ollama — он запускается локально при первом старте и предлагает скачать модель LLaMA 3.1 8B. Всё оффлайн, всё приватно. Такой модели хватает для умного котика 🙂

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

Инфу кот получает из окна вокруг себя — область 400×400px. Чтобы увидеть остальной экран, ему нужно ходить. Это не абстрактный ИИ — он реально «смотрит» на экран и воспринимает только то, что рядом.

Контент из приложений читаю через Vision, чтобы понять, что именно там происходит: код, сообщения, статьи и т.д. Всё это добавляется в prompt — и кот реагирует.

Скоро покажу примеры того, как он ведёт себя в разных ситуациях.

#screencat #ai
  • ❤ 17
  • ❤‍🔥 3
  • 🔥 2
Post #71 715
🎨 Сейчас работаю над UI для ScreenCat.

Хочется не просто меню — а чтобы оно было игровым, пока у меня выходит только подобие мобильного UI, а это совсем не то 😏

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

Нашел классную статью о UI в играх (на примере разбора Persona 5 UI) и это нечто совсем другое в отличии от UI мобилки. Сильно затянуло 🕕

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

Прикладываю меню из Persona 5
(с котиком) и текущее меню (мне кажется очевидно что оно слишком простое и в итоге не игровое)


#screencat
  • ❤ 14
  • ⚡ 2
  • 🔥 2
Post #70 785
🐾 Что за ScreenCat?

Делаю новый проект — кота для macOS. Он живёт поверх всех окон, бегает по экрану, следит за вашим кодом и даже комментирует происходящее с помощью AI 🧠

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

Если зайдёт — может быть, котика можно будет завести и у вас 🐱

PS: Я уже пару недель веду разработку, наверное стоило отписать пораньше, но лучше поздно 😏

#screencat
  • 👍 19
  • 🔥 10
  • ❤ 2
  • 👀 2
Post #69 943
Mobius: Plus Vibe Coding

На этом Mobius я буду ведущим вайб кодинг батла. Ожидается cursor, слепой код, анимации и крякающие утки 😀

Начало в 19:45, приходите поучаствовать/пообщаться/посмотреть
  • 🥴 9
  • 🔥 5
  • 👎 3
  • ❤ 2
  • 🤯 1
Post #68 868
Swift падает в рейтингах. Стоит ли волноваться?

По данным TIOBE Index, Swift упал с 10-го на 20-е место.
Немного неприятно, но не катастрофа.

Почему падает?
👉 Кроссплатформа растёт (KMM, Flutter и тд)
👉 Бизнесу нужны универсальные решения, набирают обороты BDUI решения на основе KMM
👉 Новые языки и AI технологии набирают обороты. Тот же Python опять вырос и стал актуальным для работы с LLM.

Личный взгляд
Я всё ещё вижу кучу возможностей в iOS-разработке.
Swift жив, развивается и нужен рынку.

Что делать?
👉 Качать фундаментальные знания (Foundation, Combine)
👉 Следить за новыми API
👉 Постепенно расширять кругозор
👉 Погружаться в LLM помощники

А как вы думаете — стоит ли сейчас пробовать другие языки или всё-таки продолжать вкладываться в Swift?
  • 🤔 9
  • 🥴 3
  • 🤣 3
Post #67 960
У тебя спина белая, а у Apple релиз Swift Package Manager 6.1

1 апреля вышел новый релиз Swift Package Manager.

Из интересного:
👉 Наконец-то поправили билд макросов, теперь нет оверхеда при первой работе макросов и тот же SwiftTesting будет работать сильно быстрее
👉 Добавлена поддержка циклических зависимостей пакетов без циклов на уровне таргетов
👉 Пофикшено довольно много багов связанных с плагинами
👉 Практически весь SPM внутри переписан на использование Sendable, Actors и async/await. Сами разработчики пишут что за счет этого все должно стать стабильнее.

Релиз выглядит сильно минорным и направленным на стабильность. Рекомендую обновляться 😎
GitHub Release Swift 6.1 Release · swiftlang/swift-package-manager What's Changed Suppress redundant linkage warnings due to dependency linkage propagation by @pusukuri in #7404 Write output-file-map.json atomically by @ahoppen in #7406 Fix a memory leak in D...
  • ❤‍🔥 6
  • ❤ 4
  • 👍 4
Post #66 1.09K
🔥Prefire на конкурсе от Яндекса!

Я подал Prefire на конкурс open-source проектов от Яндекса! Приз — грант 600 000 рублей на развитие проекта.

Для меня это огромная возможность. Prefire — это 3+ года разработки, сотни часов кода, экспериментов и фидбэка от вас. И если получится выиграть, я наконец-то смогу сделать Prefire Snapshot Dashboard — удобный, наглядный и мощный инструмент для работы со снапшотами.

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

#prefire
  • 🔥 24
  • 👍 6
  • ❤ 4
Post #65 1.13K
🚀 Shaft: кроссплатформенный SwiftUI

Если вы ищете инструмент, который объединяет мощь SwiftUI с гибкостью кросс-платформенной разработки, обратите внимание на Shaft. Это фреймворк, который позволяет создавать интерфейсы для Linux, macOS и Windows, сохраняя нативную производительность и знакомый синтаксис Swift.

🔍 Что интересно в Shaft?

1. Единый код для трех ОС
Больше не нужно адаптировать интерфейсы под каждую платформу. Shaft компилирует ваш Swift-код в нативные приложения для Linux, Windows и macOS.

2. Интеграция с системными API
Прямой доступ к возможностям ОС — например, управление окнами через NSWindow на macOS или работа с графикой через Vulkan на Linux.

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

4. SwiftUI-подход
Декларативный синтаксис, как в SwiftUI, но с возможностью кастомизировать компоненты под любые задачи.

⌨️ Пример кода
@Observable class UserSettings {  
var isDarkMode = false
}

Toggle(isOn: settings.$isDarkMode) {
Text("Темная тема")
}

Всего три строки — и переключатель темы работает на всех платформах.

💡 Где это использовать?
- Десктоп-утилиты для разработчиков (например, менеджеры зависимостей).
- Приложения с требовательной графикой (визуализация данных, медиаплееры).
- Инструменты для глубокой интеграции с ОС (системные мониторы, настройки).

📌 Ссылки
-
Репозиторий на GitHub
- Детальный разбор на Medium

Если вы экспериментируете со Swift или ищете альтернативу Flutter — Shaft стоит попробовать.
  • 🔥 13
  • 🤡 9
Post #64 842
Разработка и игры

Как заядлый геймер, у которого есть почти все актуальные консоли (кроме Xbox 🚬), я пришел в разработку благодаря страсти к играм. Да-да, пошел в университет, чтобы научиться делать игры.

Начинал еще в 90-х с Sega Mega Drive 💎, и с тех пор ничего не изменилось — продолжаю играть и сейчас. Уже давно вынашиваю идею своей игры, очень хочу когда-нибудь ее реализовать. Из опыта: делал игру на Unity ♟ под Windows — там нужно было сжигать зомби светом 😁.

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

Вам сюда 🏃‍♂️
  • ❤ 11
  • 🔥 5
  • 🤡 2
Post #63 1.06K
Swift Build: Открытая система сборки проектов на Swift

Apple представила новую открытую систему сборки проектов на Swift — Swift Build. Все уже успели обсудить момент с новым IDE (хотя его можно было делать и до этого), но для меня, ключевым нововведением является публичный формат описания Xcode-проекта — Project Interchange Format (PIF), реализованный в SwiftBuild/ProjectModel. Ранее подобная функциональность была доступна только через инструменты вроде XcodeProj, предназначенные для генерации и модификации .xcodeproj файлов.

Пример описания проекта в репозитории swift-build:

public struct Project: Sendable {
public let guid: String
public let isPackage: Bool
public let xcodeprojPath: Path
public let sourceRoot: Path
public let targetSignatures: [String]
public let groupTree: FileGroup
public let buildConfigurations: [BuildConfiguration]
public let defaultConfigurationName: String
public let developmentRegion: String?
public let classPrefix: String
public let appPreferencesBuildSettings: [BuildConfiguration.MacroBindingSource]
}


Потенциальные примеры применения:
👉 Автоматизация создания проектов: Разработчики могут создавать скрипты для автоматического генерации Xcode-проектов, используя PIF, что ускоряет настройку новых проектов и уменьшает количество ручных операций.
👉 Интеграция с системами сборки: Инструменты сборки, такие как Tuist или XcodeGen, могут использовать PIF для более эффективного управления зависимостями и конфигурациями проектов.
👉 Анализ и визуализация структуры проекта: С помощью PIF можно разрабатывать инструменты для анализа структуры проекта, выявления потенциальных проблем и визуализации зависимостей между компонентами.
👉 Миграция проектов: При переходе с одной системы сборки на другую PIF может служить промежуточным форматом для облегчения процесса миграции и минимизации ошибок.
👉 Обучающие инструменты: PIF может быть использован в образовательных целях для демонстрации внутренней структуры проектов на Swift, что поможет новичкам лучше понять организацию проектов.

Открытие формата PIF предоставляет разработчикам новые возможности для создания и улучшения инструментов, связанных с управлением и сборкой проектов на Swift.
GitHub GitHub - swiftlang/swift-build: A high-level build system based on llbuild, used by Xcode, Swift Playground, and the Swift Package… A high-level build system based on llbuild, used by Xcode, Swift Playground, and the Swift Package Manager - swiftlang/swift-build
  • 🔥 8
  • 🤔 5
  • ❤ 4
  • 🤡 1
Post #62 1.29K
Друзья, у меня для вас горячий апдейт🔥

Я присоединился к команде Okko в роли лида платформенной команды мобилки, веб и смарт ТВ. Эта возможность — как новый уровень в игре🎮, где я смогу применить опыт из разных сфер и подходить к решению задач с новых сторон!

С нетерпением жду новых челленджей💡 и готов делиться с вами инсайтами из мира других технологий (особенно интересно, что там в смарт ТВ📺).

Stay tuned, будет интересно! 🚀
  • 🔥 66
  • 🕊 2
Post #61 1.09K
🌏 Prefire в Китае!

Только узнал, что мой Prefire (помните, тот инструмент для SwiftUI-превью?) стал довольно популярным в Китае! Это неожиданно и чертовски приятно! 😅

Почему Prefire взлетел?
Статьи на CSDN (это как китайский Medium для 10 млн айтишников):
💁 Туториал по Prefire — хвалят за автоматизацию тестов и Playbook-демо.
💁 FAQ для новичков — разжевали, как фиксить проблемы, которые я мог бы разжевать и сам, но поленился.

Еще ребята сделали mirror репозиторий на GitCode (китайский GitHub от Huawei).

Зачем вообще вам prefire?
👉 Автоматические снапшоты — не надо писать тонны шаблонного кода.
👉 Интеграция с SPM/Xcode — работает из коробки, как AirPods с iPhone.
👉 Поддержка UI-тестов — ловит баги до того, как их увидит тимлид.
👉 Версия 3.2.0 — добавил новые девайсы для превью (даже iPad Pro M4, который еще не купил).

Пример кода:

// 1. Добавляем Prefire в проект через SPM.
// 2. Пишем Preview для нашей view (если еще не написали).
#Preview {
ContentView()
}
// 3. Запускаем — Prefire сам генерирует Snapshot тесты! 🪄
class PrefireSnapshotTests: XCTestCase {
func test_ContentView_Preview() {
let preview = { ContentView() }
assertSnapshots(for: PrefireSnapshot(preview()))
}
}


Зачем это китайцам?
Судя по статям, они обожают инструменты, которые:
- Экономят время.
- Не требуют танцев с бубном — Prefire не заставляет учить 100500 API, как Needle.

P.S. Ставим звёзды на GitHub? Без них Prefire — как iPhone без аирдропа.
P.P.S. Кстати, а вы уже перешли с ручных превью на Prefire? Или всё ещё копируете код, как в 2010? 😜

#prefire
  • 🔥 25
  • 🤯 4
  • 👍 2
Post #60 902
Я тут стал членом Программного комитета AppsConf 2025 - профессиональной конференции для разработчиков мобильных приложений. Рад, что ребята из Онтико, которые проводят HighLoad++ и TeamLeadConf решили возобновить конференцию по мобилке. Нашему сообществу не хватает места для общения в кулуарах, обмена опытом и инфы о практиках других компаний.

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

Сейчас мы в поисках интересных спикеров и хардовых докладов. Мы соберем IOS- и Android-разработчиков, менеджеров мобильных проектов, Mobile DevOps-специалистов, тимлидов и архитекторов мобильных приложений.

На этот год мы определили перечень наиболее актуальных для сообщества тем:

👉 Борьба с Легаси
👉
Мобильный UI/UX
👉
Тренды
👉 BDUI
👉 Developer Experience
👉 Тестирование
👉 Deep dive
👉 Софтскиллы и процессы


Особое внимание мы уделим практическим форматам: мастер-классам, воркшопам, круглым столам и т.д.

Если у вас есть интересная тема, но ее нет среди предложенных, все равно подавайте заявку, мы ждем крутые доклады🔥

А 30 января, в четверг, в 16:00, мы приглашаем вас на онлайн-встречу с Программным комитетом AppsConf 2025. Обсудим потенциально интересные темы конференции и ответим на вопросы.
Для участия необходимо зарегистрироваться. Встреча бесплатная, приходите задать вопросы и неформально пообщаться!
  • ❤ 6
  • 🔥 5
Post #59 1.02K
🔥 Мое выступление теперь в открытом доступе!

Если хотите углубиться в тему производительности мобильных приложений, мой доклад теперь доступен всем!

О чем речь?
👉 Что такое performance-метрики приложения, зачем они нужны, как их собирать и где хранить.
👉 Подробно разбираем метрики на примерах кода:
• LaunchTime
• HitchRate
• HangTime
• ScreenTotalTime
• BDRequestsCount
👉 Затрагиваем темные стороны: как обойти систему и почему не все готовы углубляться в код ради исправления производительности.
👉 В конце — о мотивации: как убедить себя и команду следить за метриками, чтобы сделать приложение успешным, а пользователей и бизнес счастливыми.
  • 👍 12
  • 🔥 9
  • 👏 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →