
- Главная
- Каталог
- Интернет технологии
- Библиотека мобильного разработчика
Библиотека мобильного разработчика
Полезные материалы по всему, что может быть интересно мобильному разработчику.
Статистика канала
23 января в 19:00 обсудим архитектуры работы LLM с локальными данными на открытом уроке к курсу «Разработка ИИ агентов». Узнаем, как научить ассистента отвечать по документам пользователя без лишних затрат ресурсов.
Занятие ведёт Игорь Стурейко, тимлид в «Газпроме» и AI-архитектор на
Kubernetes. В своём видеосообщении Игорь рассказывает о проектировании автономных агентов и практическом опыте в ML, накопленном за 20 лет.На вебинаре разберём:
— использование
RAG для контекстного поиска в приложениях;— интеграцию векторных баз данных (
FAISS, Chroma);— фреймворки для связи интерфейса с логикой ИИ-агентов.
📅 Когда: 23.01 в 19:00 МСК
Узнать подробности
SwiftDataTables позволяет отображать наборы данных в виде красиво отформатированных таблиц для iOS. Главная цель для конечного пользователя — как можно быстрее получить полезную информацию из таблицы с помощью таких функций, как упорядочивание, поиск и листание. Для разработчика — обеспечить простую реализацию с расширяемыми опциями.
Основные возможности включают:
#буст #iOS
С ростом кодовой базы iOS-приложения перед командой встаёт ключевой вопрос: внедрять ли модульную архитектуру? Это мощный инструмент для управления сложностью, но не серебряная пуля для всех проектов.
🔹 Что такое модульность?
Это подход, при котором код разделяется на чёткие, независимые блоки с явными границами. Каждый модуль скрывает свою реализацию за публичным интерфейсом, позволяя частям системы развиваться автономно.
🔹 Когда она оправдана, а когда — нет?
🔹 Три столпа модульной кодовой базы
1. Базовый слой (Foundation): фундамент приложения. Содержит общие модели данных, сетевой стек и техническую инфраструктуру. Должен быть максимально универсальным и не зависеть от модулей выше.
2. Сервисные модули (Services): общие возможности, используемые несколькими фичами (например, кэширование, аналитика). Они зависят только от Foundation.
3. Функциональные модули (Features): пользовательские сценарии с началом и концом (например, "оформление заказа", "лента новостей"). Они зависят от Foundation и Services, но не должны зависеть друг от друга.
🔹 Типичные ошибки
Многие команды внедряют модульность, следуя тренду, но не проектируют связи. Результат:
🔹 Ключевые принципы успеха
🔹 Итог
Модульность — это осознанная практика, а не механический рефакторинг. Её успех зависит не столько от инструментов (Tuist, Swift Package Manager), сколько от архитектурного мышления и командной дисциплины. Правильно реализованная, она превращает код в долгосрочный актив, а не в обузу.
Согласны, что проектировать связи важнее, чем просто резать код на модули? Делитесь опытом в комментариях
#АрхитектурныйКод #MiddlePath #iOS
KMP Developer — от 185 000 до 310 000 ₽, удалёнка
Middle+ / Senior iOS Developer — удалёнка
KMP - Kotlin Multiplatform (Android / iOS) разработчик — от 2 000 $, удалёнка
Flutter-разработчик — удалёнка
iOS разработчик — офис (Москва)
#свежак
Многим разработчикам нужно показывать в своих приложениях отформатированный текст: документацию, статьи, комментарии с разметкой. SwiftUI не имеет встроенной поддержки Markdown, но есть элегантное и мощное решение.
В статье рассматривается использование класса
NSAttributedString из UIKit для преобразования Markdown в отформатированный текст и его отображения в SwiftUI через UIViewRepresentable.🔹 Как это работает: ключевые компоненты
1. Преобразование Markdown в NSAttributedString
Основная "магия" происходит с помощью класса
NSAttributedString. Для обработки Markdown можно использовать встроенный парсер iOS (начиная с iOS 15) или сторонние библиотеки, такие как Down или SwiftyMarkdown. Пример с NSAttributedString:import UIKit
let markdownString = "**Hello**, *SwiftUI*!"
let options: [NSAttributedString.DocumentReadingOptionKey: Any] = [
.documentType: NSAttributedString.DocumentType.html
]
// Преобразуем Markdown через HTML (один из подходов)
if let data = markdownString.data(using: .utf8),
let attributedString = try? NSAttributedString(data: data,
options: options,
documentAttributes: nil) {
// Используем полученный attributedString
}
2. Отображение в SwiftUI через UIViewRepresentable
Чтобы показать
NSAttributedString в SwiftUI, создаём обёртку UIViewRepresentable для UITextView или UILabel:import SwiftUI
struct MarkdownView: UIViewRepresentable {
let attributedString: NSAttributedString
func makeUIView(context: Context) -> UITextView {
let textView = UITextView()
textView.isEditable = false
textView.attributedText = attributedString
textView.backgroundColor = .clear
return textView
}
func updateUIView(_ uiView: UITextView, context: Context) {
uiView.attributedText = attributedString
}
}
3. Использование в SwiftUI-интерфейсе
Теперь можно использовать
MarkdownView как обычный SwiftUI элемент:struct ContentView: View {
let markdownText = "## Заголовок\nЭто **жирный** текст."
var body: some View {
MarkdownView(attributedString: parseMarkdown(markdownText))
.padding()
}
}
🔹 Альтернативные подходы
Text с ограниченной поддержкой Markdown (iOS 15+): В SwiftUI 3 появилась базовая поддержка Markdown внутри Text. Работает для простых случаев:Text("**Жирный** и *курсив*")
🔹 Важные нюансы
NSAttributedString может потребовать оптимизации.🔹 Итог
Отображение Markdown в SwiftUI — задача, которая решается с помощью связки
NSAttributedString и UIViewRepresentable. Для более простых случаев можно использовать встроенную в SwiftUI 3 поддержку Markdown, а для максимальной гибкости и функциональности — сторонние библиотеки. Это открывает двери для создания приложений с богатым текстовым контентом прямо внутри ваших SwiftUI-интерфейсов.#PixelPerfect #MiddlePath #Swift
Build failed: price_incrementЧтобы не переплачивать завтра, оформите подписку на профессиональный рост сегодня. После 20 января стоимость всех программ в Proglib.academy пойдёт вверх.
Собрать свой идеальный грейд
Объект-выражение — это выражение, которое "на ходу" создает анонимный объект.
Для объекта-выражения не указывается имя!
Если же объекту всё-таки требуется имя, то его можно сохранить в переменной:
val tom = object {
val name = "Tom"
var age = 37
fun sayHello() {
println("Hi, my name is $name")
}
}
println("Name: ${tom.name} Age: ${tom.age}")
tom.sayHello()
Анонимные объекты не являются синглтонами!
Каждый раз при выполнении объекта-выражения создаётся новый объект.
Анонимный объект является заменой анонимным внутренним классам в Java.
#буст #JuniorKit #Kotlin
Приготовили для вас дайджест по актуальному из мира iOS, Android.
В этой статье автор делится опытом настройки SwiftLint сразу для нескольких репозиториев — так, чтобы кодстайл оставался единым и не расползался со временем.
В статье автор поговорит о поддержке протокола ICMP в контексте разработки приложений под Android.
Автор поделиться своими наработками по тому, как можно удобно совмещать библиотеку Navigation3 и Koin в Compose Multiplatform проекте и какие подводные камни есть на текущий момент.
#свежак
Отзывы канала
всего 2 отзыва
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
Библиотека мобильного разработчика — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 9.5K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 9.3, количество отзывов – 2, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 20559.42 ₽, а за 9 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий