👾 Миграция больших приложений на KMP: проблемы, подводные камни, решения
KMP как технология выглядит заманчиво. Некоторые части проектов, например, аналитика должны иметь одинаковую логику на Android и iOS, чтобы данные были консистентными. И на первый взгляд, идея переписать подобные части на KMP кажется привлекательной.
Чем крупнее приложение, тем больше в нем подобных частей, которые хочется объединить. Но при этом большие приложения привносят свою специфику и свои ограничения.
Павел рассказал о том, с какими проблемами команда столкнулась при миграции своего SDK аналитики в Т-Банке на KMP. Рассмотрел различные подходы, перспективы и тупики, и решения.
👀 Смотреть видео
🐸 Библиотека мобильного разработчика
#свежак
KMP как технология выглядит заманчиво. Некоторые части проектов, например, аналитика должны иметь одинаковую логику на Android и iOS, чтобы данные были консистентными. И на первый взгляд, идея переписать подобные части на KMP кажется привлекательной.
Чем крупнее приложение, тем больше в нем подобных частей, которые хочется объединить. Но при этом большие приложения привносят свою специфику и свои ограничения.
Павел рассказал о том, с какими проблемами команда столкнулась при миграции своего SDK аналитики в Т-Банке на KMP. Рассмотрел различные подходы, перспективы и тупики, и решения.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
JetCo — это готовая к использованию библиотека Compose с готовыми компонентами пользовательского интерфейса как для Android, так и для KMP. Разработанная специально для энтузиастов Jetpack Compose, библиотека JetCo сделает вашу жизнь проще, ваши приложения — красивее, а ваших пользователей — счастливее.
#буст #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Какая основная проблема производительности в этом коде?
Anonymous Quiz
7%
Неправильное использование flowOn()
25%
Race condition в кэше при параллельных запросах
16%
Лишние emissions в StateFlow
25%
Поток не кэшируется, создается заново при каждом вызове
27%
Посмотреть ответ
👍4
🎲 Мы не только учим, но и играем!
На экспресс-курсе «Математика для Data Science» — викторина с призом TG-Premium 🎁
Проверь знания, прокачай математику и забери приз.
‼️ Оплатишь до 19 октября — получишь базовый курс в подарок.
👉 Записаться на курс
На экспресс-курсе «Математика для Data Science» — викторина с призом TG-Premium 🎁
Проверь знания, прокачай математику и забери приз.
‼️ Оплатишь до 19 октября — получишь базовый курс в подарок.
👉 Записаться на курс
Как превратить UI Kit из дизайнерского артефакта в живую систему, где обновление стиля в Figma автоматически обновляет код на Android.
В статье — путь от ручного копирования палитр до генерации типобезопасных токенов через KotlinPoet, Gradle-плагины и Figma JSON.
Автор расскажет, как бизнес получает скорость и консистентность, как темная тема перестаёт быть болью, и почему iOS может безболезненно присоединиться к этой архитектуре.
#свежак #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
AppCode — мощная IDE от JetBrains для iOS-разработки, и если ты хочешь писать код быстрее и чище — эти хоткеи must have.
Shift + F6Переименовывает переменные, классы, методы — и IDE сама обновит все упоминания.
Ctrl + Alt + V (Cmd + Option + V на Mac)Выделяешь выражение → IDE создаёт переменную автоматически.
Ctrl + Alt + M (Cmd + Option + M)Отлично помогает разгрести длинные функции и вынести повторяющийся код.
Ctrl + Alt + N (Cmd + Option + N)Обратно «встраивает» метод или переменную прямо в место вызова.
Alt + Delete (Cmd + Delete)Проверит, где элемент используется, и безопасно удалит его без сюрпризов.
#буст #MiddlePath #Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Недавно мы анонсировали старт нового курса «Математика для Data Science».
В ближайшие дни выйдет серия постов о том, что ждёт вас на курсе, а пока познакомим вас с его экспертами.
Спикеры курса:
👤 Ксения Кондаурова
Преподаватель и автор курсов для бакалавриата Центрального Университета (Т-Банк), спикер и методист для Edutoria (Сбербанк). Ксения расскажет, как линейная алгебра применяется для построения предсказательных моделей, и научит проверять гипотезы для бизнеса с помощью статистики.
👤 Диана Миронидис
Преподаватель НИУ ВШЭ, автор и методист Яндекс Практикума. Самый экстравагантный преподаватель из всех, с кем вы учились, — убедитесь, что математика может быть нескучной. Диана погрузит в математический анализ, научит исследовать функции и находить параметры, при которых ошибка модели минимальна.
👤 Маргарита Бурова
Академический руководитель образовательных программ по аналитике и анализу данных, Wildberries & Russ. Проведёт квиз с розыгрышем годовой подписки TG Premium. Маргарита — эксперт в дата-сайенс, ИИ и математических методах анализа данных, фанат развития ИТ-образования.
Вместе с экспертами за 8 недель вы не просто получите знания, а познакомитесь с математикой заново.
🎁 Только при оплате до 19 октября курс «Базовая математика» в подарок!
👉 Записаться на курс
В ближайшие дни выйдет серия постов о том, что ждёт вас на курсе, а пока познакомим вас с его экспертами.
Спикеры курса:
👤 Ксения Кондаурова
Преподаватель и автор курсов для бакалавриата Центрального Университета (Т-Банк), спикер и методист для Edutoria (Сбербанк). Ксения расскажет, как линейная алгебра применяется для построения предсказательных моделей, и научит проверять гипотезы для бизнеса с помощью статистики.
👤 Диана Миронидис
Преподаватель НИУ ВШЭ, автор и методист Яндекс Практикума. Самый экстравагантный преподаватель из всех, с кем вы учились, — убедитесь, что математика может быть нескучной. Диана погрузит в математический анализ, научит исследовать функции и находить параметры, при которых ошибка модели минимальна.
👤 Маргарита Бурова
Академический руководитель образовательных программ по аналитике и анализу данных, Wildberries & Russ. Проведёт квиз с розыгрышем годовой подписки TG Premium. Маргарита — эксперт в дата-сайенс, ИИ и математических методах анализа данных, фанат развития ИТ-образования.
Вместе с экспертами за 8 недель вы не просто получите знания, а познакомитесь с математикой заново.
🎁 Только при оплате до 19 октября курс «Базовая математика» в подарок!
👉 Записаться на курс
❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8
🔹 Salesforce Mobile SDK (Android) v12.2 — релиз новой версии SDK: вход по QR-коду, улучшения обновления сеансов и современная поддержка Android.
🔹 Salesforce Mobile SDK (iOS) v12.2 — аналогичный апдейт для iOS: добавлена поддержка visionOS, доработки аутентификации и поведение обновления сеансов.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Какое первое стороннее приложение появилось в App Store в 2008 году?
Anonymous Quiz
31%
Angry Birds
19%
Evernote
9%
Trism
40%
Doodle Jump
🤔2❤1
♾️ 17 формул, которые изменили мир
Математика в действии — как уравнения, придуманные века назад, сегодня управляют интернетом, медициной, космосом и вашими финансами.
📎 Читать статью
А если после статьи захотите разобраться, как эта математика работает в Data Science — вот экспресс-курс, который всё расставит по полочкам:
«Математика для Data Science»
🎓 За 2 месяца поймёте, как работают алгоритмы ML под капотом.
🗓️ Старт — 6 ноября
👉 Записаться на курс
Математика в действии — как уравнения, придуманные века назад, сегодня управляют интернетом, медициной, космосом и вашими финансами.
📎 Читать статью
А если после статьи захотите разобраться, как эта математика работает в Data Science — вот экспресс-курс, который всё расставит по полочкам:
«Математика для Data Science»
— практика и живые уроки
— разбор кода и проверка домашних
— поддержка в Telegram-чате
🎓 За 2 месяца поймёте, как работают алгоритмы ML под капотом.
🗓️ Старт — 6 ноября
👉 Записаться на курс
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8
Вы прошли технический скрининг, решили все алгоритмические задачки, показали крутое портфолио — а оффера нет. Возможно, дело в том, что вы спросили. Один неудачный вопрос может перечеркнуть все ваши hard skills, особенно когда soft skills стали важнее кода. Разбираем фразы-убийцы карьеры.
#MadeInProglib
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Дженерики позволяют писать гибкий и многократно используемый код, который может работать с любым типом данных.
Представьте, что вы пишете трехмерную векторную структуру, но хотите иметь возможность создавать векторы, используя целые, плавающие и двойные числа. Вы определенно не хотите писать один и тот же код для каждого типа данных отдельно.
Именно здесь вы можете использовать дженерики.
Например, вы можете создать общий тип для параметров (для представления любого типа), используя букву, например
T, следующим образом:struct Vec3D<T> {
let x, y, z: T
init(x: T, y: T, z: T) {
self.x = x
self.y = y
self.z = z
}
}
let intVector = Vec3D(x: 1, y: 2, z: 5)
let floatVector = Vec3D(x: 1.0, y: 2.0, z: 5.0)#буст #JuniorKit #Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
⏰ Сегодня последний день!
🎁 Только при оплате до 19 октября — курс «Базовая математика» в подарок!
Успей попасть на экспресс-курс «Математика для Data Science» — 10 живых вебинаров, практика на Python, поддержка менторов и преподаватели из ВШЭ, Яндекс Практикума и Wildberries.
За 2 месяца разберёшься с тем, на чём держится Data Science:
🎓 Построишь математический фундамент и поймёшь, как работают алгоритмы ML под капотом.
👉 Записаться на курс
Старт — 6 ноября, не упусти бонус!🎁
🎁 Только при оплате до 19 октября — курс «Базовая математика» в подарок!
Успей попасть на экспресс-курс «Математика для Data Science» — 10 живых вебинаров, практика на Python, поддержка менторов и преподаватели из ВШЭ, Яндекс Практикума и Wildberries.
За 2 месяца разберёшься с тем, на чём держится Data Science:
• векторы, матрицы и регрессия;
• градиенты, оптимизация, вероятности и статистика;
• реальные задачи анализа данных;
🎓 Построишь математический фундамент и поймёшь, как работают алгоритмы ML под капотом.
👉 Записаться на курс
Старт — 6 ноября, не упусти бонус!🎁
Приготовили для вас дайджест по актуальному из мира iOS, Android.
Автор поделиться опытом тестировании мобильных приложений в Xcode — среде, которую многие используют только для разработки. По внутренним данным их компании, примерно 65% критических багов в iOS-приложениях можно выловить ещё на этапе разработки, если грамотно использовать встроенные инструменты Xcode.
Похоже, что в iOS 26 Apple начала ещё больше склоняться к визуальному дизайну и декоративным эффектам UI; но насколько плохо это скажется на юзабилити? На первый взгляд, система выглядит удобной и современной, но как только начинаешь ею пользоваться, мерцающие поверхности и анимированные элементы управления становятся помехой.
В Android 13 Google представил новую «фишку»: predictive‑навигация. Это API позволяет пользователю «посмотреть» на какой экран он вернется, не выполняя непосредственно возврат. Подобный функционал довольно давно есть в iOS и, например, в Telegram на Android. Теперь же данный функционал должен работать в Android «из коробки», а с Android 16 будет включен по умолчанию.
Проект подтвердил сотрудничество с крупным производителем Android-смартфонов для внедрения своей безопасной операционной системы на будущие флагманские устройства.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Лямбда-выражения определяются заключением их в фигурные скобки в виде
{ параметры -> тело }.Анонимные функции определяются через ключевое слово
fun как обычные функции, хотя не имеют имени.return без меткиreturn без метки приводит к возврату из обрамляющей (внешней) функции, а не из самого лямбда-выражения (т.е. полностью завершает работу этой функции и код, указанный после оператора return никогда не выполнится). Это называется нелокальным возвратом (non-local return), и может иметь неожиданное поведение и привести к ошибкам. В лямбда-выражениях рекомендуется использовать метки для явного указания точки возврата.return.Таким образом, поведение оператора
return без метки различается только в том, как завершается выполнение функции, в которой вызывается выражение. В лямбда-выражении, вызывающая функция завершается полностью, а в анонимной функции только сама анонимная функция.return с меткойОператор
return с меткой позволяет указать точное место, из которого нужно вернуться при вызове return.return@label в лямбда-выражении, то возврат будет осуществляться из конкретной лямбды, к которой применена метка. Вместо нелокального возврата, который происходит при использовании return без метки, return с меткой завершит только ту лямбду, которая соответствует указанной метке, и выполнение кода продолжится после этой лямбды во внешней функции. Метка позволяет читать и понимать код проще, так как явно указывает, откуда происходит возврат.return без метки уже осуществляет возврат из самой анонимной функции. Однако, при использовании метки return@label вы также можете контролировать возврат из анонимной функции в сложных сценариях (например, при работе с несколькими вложенными функциями).В обоих случаях использование оператора
return с меткой показывает точку возврата и делает код более явным и контролируемым.Библиотека мобильного разработчика
#буст #JuniorKit #Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰4
Новый язык дизайна Apple представил эффект светящейся анимированной обводки, которая изящно и динамично подсвечивает формы и компоненты. Давайте рассмотрим, как воссоздать этот эффект в SwiftUI с помощью многоразовых расширений.
🔹 Расширения для View
extension View {
@MainActor
func intelligenceBackground<S: InsettableShape>(in shape: S) -> some View {
background(shape.intelligenceStroke())
}
@MainActor
func intelligenceOverlay<S: InsettableShape>(in shape: S) -> some View {
overlay(shape.intelligenceStroke())
}
}🔹 Базовая реализация для фигур
extension InsettableShape {
@MainActor
func intelligenceStroke(
lineWidths: [CGFloat] = [6, 9, 11, 15],
blurs: [CGFloat] = [0, 4, 12, 15],
updateInterval: TimeInterval = 0.4
) -> some View {
IntelligenceStrokeView(
shape: self,
lineWidths: lineWidths,
blurs: blurs,
updateInterval: updateInterval
)
.allowsHitTesting(false)
}
}🔹 Рендеринг слоёв свечения
private struct IntelligenceStrokeView<S: InsettableShape>: View {
let shape: S
let lineWidths: [CGFloat]
let blurs: [CGFloat]
let updateInterval: TimeInterval
@Environment(\.accessibilityReduceMotion) private var reduceMotion
@State private var stops: [Gradient.Stop] = .intelligenceStyle
var body: some View {
let layerCount = min(lineWidths.count, blurs.count)
let gradient = AngularGradient(stops: stops, center: .center)
ZStack {
ForEach(0..<layerCount, id: \.self) { i in
shape
.strokeBorder(gradient, lineWidth: lineWidths[i])
.blur(radius: blurs[i])
.animation(
reduceMotion ? nil : .easeInOut(duration: 0.5 + Double(i) * 0.2),
value: stops
)
}
}
.task {
while !Task.isCancelled {
stops = .intelligenceStyle
try? await Task.sleep(for: .seconds(updateInterval))
}
}
}
}🔹 Цветовая палитра
private extension Array where Element == Gradient.Stop {
static var intelligenceStyle: [Gradient.Stop] {
let colors = [
Color(red: 188/255, green: 130/255, blue: 243/255),
Color(red: 245/255, green: 185/255, blue: 234/255),
Color(red: 141/255, green: 159/255, blue: 255/255),
Color(red: 255/255, green: 103/255, blue: 120/255),
Color(red: 255/255, green: 186/255, blue: 113/255)
]
return colors
.map { Gradient.Stop(color: $0, location: Double.random(in: 0...1)) }
.sorted { $0.location < $1.location }
}
}🔹 Использование
// Фон
Text("Текст")
.padding(22)
.intelligenceBackground(in: .capsule)
// Наложение
Text("Текст")
.padding(22)
.intelligenceOverlay(in: .rect(cornerRadius: 22))
🔹 Заключение
Эта реализация показывает, как объединить несколько обводок, размытий и анимированных градиентов для достижения эффекта свечения, аналогичного интерфейсу Apple Intelligence. Результат работает с любым объектом
InsettableShape. Его можно использовать для современной и выразительной подсветки кнопок, карточек или текстовых контейнеров.#PixelPerfect #MiddlePath #SwiftUI
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
🆚 Верстать руками или через дизайн-систему
Раньше каждый экран — маленькое произведение искусства (и боли): ручные отступы, кастомные компоненты, всё под себя. Теперь — дизайн-система, токены, готовые UI-киты и чёткий гайд от дизайнера.
Одни говорят: «Система ускоряет и спасает от хаоса».
Другие отвечают: «Креатив умер, теперь мы просто собираем конструктор».
А ты кто?💬
❤️ — Использую дизайн-систему, не хочу страдать
👍 — Верстаю руками, потому что могу
🤝 — Компромисс — система, но с кастомом
🐸 Библиотека мобильного разработчика
#междусобойчик
Раньше каждый экран — маленькое произведение искусства (и боли): ручные отступы, кастомные компоненты, всё под себя. Теперь — дизайн-система, токены, готовые UI-киты и чёткий гайд от дизайнера.
Одни говорят: «Система ускоряет и спасает от хаоса».
Другие отвечают: «Креатив умер, теперь мы просто собираем конструктор».
А ты кто?
❤️ — Использую дизайн-систему, не хочу страдать
👍 — Верстаю руками, потому что могу
🤝 — Компромисс — система, но с кастомом
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝16👍4❤2
Senior iOS Developer — от 400 000 до 600 000 ₽, гибрид (Москва, Санкт-Петербург)
Senior Flutter разработчик — от 260 000 ₽, удалёнка
iOS-разработчик — от 220 000 до 350 000 ₽, удалёнка
Android Developer — от 200 000 до 300 000 ₽, удалёнка
KMP developer — от 450 000 ₽, удалёнка
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1