Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck
Открыть в Telegram
Все самое полезное для мобильного разработчика в одном канале. По рекламе: @proglib_adv Учиться у нас: clc.to/QSTQcA Для обратной связи: @proglibrary_feeedback_bot РКН: https://gos
Больше9 205
Подписчики
-424 часа
-17 дней
-3230 день
Архив постов
📍 Курс — это не только темы и домашние задания
Во многом его ценность определяет опыт тех, кто его разрабатывает и ведёт.
Об этом как раз новый пост Proglib Academy 🔥
🥴 Рынок труда в IT не рухнул из-за AI — он мутировал в нечто странное
Забудь про апокалиптичные прогнозы «AI отберет работу». Реальность интереснее и коварнее: появились новые правила игры, новые способы обмана заказчиков и новая ценность для тех, кто умеет думать головой. Разбираю пять таких сдвигов.
👉 Читать статью
📌 Лучшие вакансии для мобильных разработчиков
🐸 Библиотека мобильного разработчика
#MadeInProglib
Repost from Proglib.academy | IT-курсы
🫡 Один и тот же запрос к AI можно выполнить двумя способами — и получить совершенно разный результат.
1️⃣ способ — просто попросить написать код. Модель может сгенерировать рабочее решение, но именно на этапе проверки часто всплывают пропущенные edge case’ы, ошибки обработки или проблемы с тестами.
2️⃣ способ — дать агенту цикл Think → Act → Observe. Он не останавливается после первой попытки: планирует действия, проверяет результат и, если находит ошибку, исправляет её и пробует снова.
Самое интересное, что разница здесь не столько в модели ❕ Claude, GPT или другая LLM могут быть одинаковыми. Разницу создаёт инженерная система вокруг них.
📅 Именно это разберём 23 июля в 19:00 (МСК) на бесплатном вебинаре с Алексеем Жиряковым (Executive Director в Сбере, GenAI Data Platform, ex-CTO Stream и KION).
На живом демо покажем, как один и тот же запрос работает без агентной системы и с ней 🔥
🔗 Регистрация
🏃♀️ Proglib Academy
🔥 Курс «Разработка ИИ-агентов» стартовал, но вы еще успеваете присоединиться!
Мы только начали, а первый практический воркшоп пройдет только 23 июля. До этого времени вы спокойно успеете изучить материалы и нагнать группу.
💼 Главная фишка: финальный проект в портфолио:
В финальном проекте вы сможете выбрать один из двух вариантов: реализовать свою идею или решить задачу от партнера курса — крупной российской финтех-компании. Вы будете работать с датасетом, построенным по реальным сценариям, получите бизнес-контекст и продовые ограничения. В результате соберете AI-агента, который станет сильным проектом для портфолио.🎁 Упомяните менеджеру специальное предложение «3 курса по цене 1»: Берете VIP-тариф — получаете курс «Разработка ИИ-агентов», хардкорный «AgentOps» и ещё один курс на выбор. Выгода 129.000 ₽! Двери потока вот-вот закроются окончательно. Успейте забрать стек курсов и начать работу над реальным проектом 🔗 Занять место и забрать 3 курса
🔝 Топ вакансий для мобильных разработчиков за неделю
Senior Flutter Developer — удалёнка
Middle iOS Developer — офис (Ташкент)
Android-разработчик / Kotlin Multiplatform — удалёнка/гибрид (Москва)
IOS-разработчик — до 250 000 ₽, удалёнка
➡️ Еще больше топовых вакансий — в нашем канале Mobile jobs
🐸 Библиотека мобильного разработчика
#свежак
🦢 Что такое View в SwiftUI
Что на самом деле происходит в SwiftUI при изменении состояния? Перерисовывает ли SwiftUI весь экран? Создаёт ли заново все элементы интерфейса? Или под капотом происходит что-то более тонкое?
В этой статье автор шаг за шагом разберет эти вопросы и объяснит, что на самом деле представляет собой
SwiftUI.View, как работает some View, почему важен ViewBuilder и каким образом SwiftUI обновляет интерфейс при изменении состояния.
👉 Читать статью
📌 Лучшие вакансии для мобильных разработчиков
🐸 Библиотека мобильного разработчика
#свежак #Swift🔥 Стартуем СЕГОДНЯ! Новый поток курса «Разработка ИИ-агентов» открыт
По этому поводу мы решили выложить закрытую запись одного из уроков из программы. Найти её в поиске YouTube нельзя — она доступна только по ссылке и всем, кто будет на курсе.
Внутри глубокий разбор LLM от Алексея Яндутова (Senior ML-инженер, развивал ответы «Алисы» и «Нейро» в Яндексе). Учимся получать точный результат без галлюцинаций.
Что внутри урока:
- Устройство LLM. - Рабочие шаблоны промптов (Persona, Chain-of-Thought и др.). - Разбор реального кейса Яндекса. Как автоматизировать разметку, обойти качество людей на 5% и срезать косты на 60%.После просмотра вы поймете, когда хватает промпт-инжиниринга, а когда нужен RAG или fine-tuning. 👉Смотреть закрытый урок на YouTube Понравился урок? Переходите на новый уровень! Оставляйте заявку на курс, чтобы научиться проектировать надежные автономные системы. Обучение началось, но вы еще успеваете присоединиться. 🔗 Занять место на курсе
⚙️ LoopScroll — бесконечно прокручиваемая постраничная навигация
LoopScroll — контрол для бесконечной прокрутки в iOS, построенный на основе
UICollectionView. Поддерживает горизонтальную и вертикальную прокрутку, автоматическую прокрутку и привычный API делегата/источника данных.
Особенности:
🔵 Бесконечная прокрутка — плавная перемотка элементов в обоих направлениях
🔵 Горизонтальная и вертикальная — переключение направления прокрутки с помощью одного свойства
🔵 Автоматическая прокрутка — настраиваемая автоматическая прокрутка на основе таймера
🔵 Привязка к странице — настраиваемая компоновка обеспечивает точную привязку к странице с учетом скорости нажатия
🔵 Источник данных и делегат — привычные протоколы в стиле UICollectionView
🔵 Совместимость с Objective-C — все публичные API доступны через @objc
🔵 Легковесный — нет внешних зависимостей, ~500 строк кода на Swift
💻 LoopScroll на GitHub
📌 Лучшие вакансии для мобильных разработчиков
🐸 Библиотека мобильного разработчика
#буст #iOS🚀 Уже завтра стартует новый поток курса «ИИ-агенты»!
Мы собрали мощнейший состав преподавателей. Учить вас проектировать архитектуру и собирать продакшн-агентов будут инженеры и исследователи из топовых IT-компаний.
Старт уже завтра!
Сомневаетесь, подойдет ли вам программа и подача? Начните с бесплатного демо-урока!
Всего за 2 часа вы заглянете под капот ИИ-агента, поймете, чем мышление модели отличается от ее ответа, и научите систему чинить собственный код. Это идеальный способ протестировать нашу платформу перед покупкой.
🔗 Пройти демо-урок и занять место на курсе
❓ Чем Any в Kotlin отличается от Object в Java
Any не является полным аналогом java.lang.Object.
В Object 11 методов в классе, в Any только 3 метода: equals(), hashCode() и toString(). При импорте типов Java в Kotlin все ссылки типа java.lang.Object преобразуются в Any. Поскольку Any не зависит от платформы, он объявляет только toString(), hashCode() и equals() в качестве своих членов, поэтому, чтобы сделать другие члены java.lang.Object доступными, Kotlin использует функции расширения.
Несмотря на то, что классы Object и Any имеют сходства (корневые классы иерархии классов), они также имеют и отличия, связанные с языковыми особенностями Kotlin и Java:
1️⃣ Класс Any в Kotlin является не только базовым классом для пользовательских классов, но также и супертипом для всех не-nullable типов данных, включая примитивные. В то время как в Java, класс Object является базовым классом только для пользовательских классов.
2️⃣ Класс Any в Kotlin также имеет nullable версию Any?, которая является супертипом для всех nullable типов данных в Kotlin. В то время как в Java, класс Object не имеет nullable версии.
📌 Лучшие вакансии для мобильных разработчиков
🐸 Библиотека мобильного разработчика
#буст #Kotlin🗓 Новости недели
Приготовили для вас дайджест по актуальному из мира iOS, Android и кроссплатформы.
🔵 Как сломать Swift Concurrency
🔵 10 советов, как получить максимум от Claude Code в iOS-разработке
🔵 Топ-10 вопросов по Kotlin в 2026 году
🔵 Миграция с Flutter Web на Jaspr
🔵 Лучшая архитектура KMP-приложений и когда её не использовать
📌 Лучшие вакансии для мобильных разработчиков
🐸 Библиотека мобильного разработчика
#свежак
Какой паттерн проектирования активно используется в SwiftUI?
🔥 Не называйте любого продвинутого чат-бота «ИИ-агентом»!
Дмитрий Юдин, руководитель AI/ML-направления в Сloud․ru, наглядно разбирает уровни абстракции ИИ-продуктов и убирает путаницу в понятиях.
Что внутри видео:
- Почему ассистент и агент принципиально разные сущности;
- Как ассистент может быть просто «обёрткой» над LLM, а может скрывать под капотом сложнейшую мультиагентную систему;
- Как понимать архитектуру глубже, чтобы проектировать сильные решения.
Начните создавать агентные системы с нашего бесплатного демо-урока. Всего за 2 часа разберем внутреннее устройство агента, научим его чинить свой собственный код и сохранять контекст после перезапуска.
🔗 Забрать бесплатный демо-урок
🤨 Как заставить AI-агента не ломать архитектуру, а нормально писать код?
Мы привыкли общаться с ИИ промптами, но для автономных систем это путь к бесконечным циклам и сливу бюджета. Чтобы убрать хаос, инженеры переходят на Spec-Driven Development (SDD).
Вот как этот подход меняет работу агента на практике:
🔹Контракт вместо текста. Сначала пишется строгая спецификация (JSON-схема/OpenAPI) и автотесты. Агент зажат в рамки интерфейсов, за которые физически не может выйти.
🔹Контроль на шагах. Внутри петли Think-Act-Observe агент сверяет действия со спецификацией.
🔹Саморефлексия. Если ИИ нарушил типы или «додумал» лишнее, тест падает. Агент получает ошибку в контекст и сам правит код, не выходя за рамки ТЗ.
Это лишь база того, как укротить ИИ-разработку. Если вы хотите глубоко внедрить эту методологию, научиться проектировать архитектурные контракты и собирать отказоустойчивые системы — оставляйте заявку на наш новый курс по Spec-Driven Development. Стартуем совсем скоро🙂
🎮 Image Playground Sheet в SwiftUI: как заменить ImageCreator
Когда Image Playground только появился, у разработчиков было два пути: показывать системный интерфейс или генерировать изображения программно через
ImageCreator. Второй путь закрывается — Apple объявила ImageCreator deprecated. В iOS 27+ он перестанет работать.
Рекомендуемая альтернатива — системный модификатор imagePlaygroundSheet для SwiftUI.
🔹 Что делает imagePlaygroundSheet
Это модификатор, который показывает системный интерфейс Image Playground из вашего приложения. Вы даёте начальную идею (текст, структурированные концепты, опционально исходное изображение), а пользователь внутри шеста создаёт, редактирует и выбирает готовую картинку.
Важно: ваше приложение не отправляет промт и не получает готовое изображение без участия пользователя. Вы запускаете поток, пользователь работает внутри шеста, приложение получает результат. Это соответствует стратегии Apple: генерация изображений — управляемый пользователем процесс.
🔹 Базовое использование
import SwiftUI
import ImagePlayground
struct ContentView: View {
@State private var isPresented = false
@State private var generatedImageURL: URL?
var body: some View {
VStack(spacing: 16) {
if let generatedImageURL {
AsyncImage(url: generatedImageURL) { image in
image.resizable().scaledToFit()
} placeholder: {
ProgressView()
}
}
Button("Create image") {
isPresented = true
}
}
.imagePlaygroundSheet(
isPresented: $isPresented,
concept: "A small robot reading a Swift book",
sourceImage: nil,
onCompletion: { url in
generatedImageURL = url
},
onCancellation: {
print("Cancelled")
}
)
}
}
Модификатор ведёт себя как стандартные API презентации SwiftUI: вы управляете через биндинг, SwiftUI показывает шест, когда он true.
🔹 URL временный, нужно сохранять
URL, возвращаемый в onCompletion, указывает на временный файл. Для быстрого превью это ок, но если изображение становится частью данных приложения (аватар, иллюстрация, стикер, обложка) — его нужно сохранить.
private func persistGeneratedImage(from temporaryURL: URL) throws -> URL {
let fileName = "\(UUID().uuidString).png"
let destinationURL = URL.documentsDirectory.appending(path: fileName)
try FileManager.default.copyItem(at: temporaryURL, to: destinationURL)
return destinationURL
}
.imagePlaygroundSheet(
isPresented: $isPresented,
concept: "A small robot reading a Swift book",
sourceImage: nil,
onCompletion: { temporaryURL in
do {
generatedImageURL = try persistGeneratedImage(from: temporaryURL)
} catch {
print("Failed to save:", error)
}
},
onCancellation: {
print("Cancelled")
}
)
Лучше выносить логику сохранения за пределы вью — отдельный объект, решающий, где сохранять, как называть и как встраивать в модель данных.
🔹 Проверка доступности
Image Playground доступен не везде. Зависит от версии ОС, устройства, Apple Intelligence и настроек пользователя. SwiftUI предоставляет окружение:
@Environment(\.supportsImagePlayground) private var supportsImagePlayground
var body: some View {
if supportsImagePlayground {
Button("Create image") { isPresented = true }
} else {
Text("Image Playground is not available")
}
}
🔹 Передача исходного изображения
Исходное изображение меняет сценарий: от «создай из текста» к «создай на основе этого».
.imagePlaygroundSheet(
isPresented: $isPresented,
concept: "Turn this into a soft illustrated avatar",
sourceImage: selectedImage,
onCompletion: { url in
generatedImageURL = url
}
)
Но помните: Image Playground — это интерактивный системный интерфейс. Исходное изображение даёт пользователю стартовую точку, а не строгий пайплайн трансформации.
🔹 Несколько концептов для большего контекста
Простая строка подходит для простых случаев, но Image Playground поддерживает структурированные концепты:
let concepts: [ImagePlaygroundConcept] = [
.text("Birthday postcard"),
.text("Warm evening light"),
.extracted(from: messageText, title: "Message")
]
.imagePlaygroundSheet(
isPresented: $isPresented,
concepts: concepts,
sourceImage: nil,
onCompletion: { url in
generatedImageURL = url
},
onCancellation: {
print("Cancelled")
}
)
Это полезно, когда идея для изображения собирается из нескольких частей приложения.
🔹 Итог
imagePlaygroundSheet — это не просто удобный модификатор. После deprecation ImageCreator он становится основным Apple-рекомендованным путём для приложений, которые хотят использовать Image Playground внутри своего интерфейса.
Вы даёте контекст — система показывает интерфейс создания — пользователь выбирает финальное изображение.
Если ваше приложение использовало ImageCreator, сейчас время пересмотреть эту фичу. Некоторые продукты могут перейти на imagePlaygroundSheet с небольшими изменениями UI. Другим, возможно, понадобится альтернативный сервис генерации изображений.
📌 Лучшие вакансии для мобильных разработчиков
🐸 Библиотека мобильного разработчика
#PixelPerfect #Swift🔥 ИИ-выходные: Собери своего AI-агента за 2 дня
Хватит просто читать про ИИ, пора собирать автономные системы руками! 1–2 августа пройдет хардкорный онлайн-интенсив для junior-middle разработчиков.
Формат: теория ➡️ сразу практика. Вы будете управлять AI-инструментами.
🛠️ Как всё пройдет:
День 1 (Суббота): разбираем анатомию агента, подключаем инструменты (shell, GitHub, Postgres) и дебажим трейсы. День 2 (Воскресенье): собираем собственного агента под вашу задачу, настраиваем Eval + Guardrails (чтобы бот не галлюцинировал) и проводим демо.Для кого: Вы пишете на Python, работаете с Git и терминалом. (С нуля не подойдет, темп очень быстрый!) Артефакт на выходе: Рабочий репозиторий с вашим агентом, который не стыдно показать команде. 👨💻 Спикер: Алексей Жиряков (Сбер, GenAI). Места ограничены! 👉 Изучить программу и занять место
⚙️ LeanType — конфиденциальная клавиатура для Android
LeanType — это форк HeliBoard, клавиатура с открытым исходным кодом, ориентированная на конфиденциальность и возможность индивидуальной настройки, основанная на AOSP/OpenBoard.
Клавиатура предлагает гибридный подход: приватное, безопасное автономное ядро для повседневной работы с текстом, а также мощные возможности искусственного интеллекта, доступные по вашему желанию.
💻 LeanType на GitHub
📌 Лучшие вакансии для мобильных разработчиков
🐸 Библиотека мобильного разработчика
#буст #Android
🔝 Топ вакансий для мобильных разработчиков за неделю
Android Developer (Middle, Kotlin) — от 260 000 до 380 000 ₽, гибрид (Москва)
IOS-разработчик — до 300 000 ₽, удалёнка
Android-разработчик — офис (Москва)
Flutter-разработчик — гибрид/офис (Москва)
Android Developer (Middle, Kotlin) — от 260 000 до 380 000 ₽, офис (Москва)
➡️ Еще больше топовых вакансий — в нашем канале Mobile jobs
🐸 Библиотека мобильного разработчика
#свежак
