tgoop.com »
United States »
Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck » Telegram Web
Как превратить 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
32%
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
😁7
Вы прошли технический скрининг, решили все алгоритмические задачки, показали крутое портфолио — а оффера нет. Возможно, дело в том, что вы спросили. Один неудачный вопрос может перечеркнуть все ваши 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
🤝15👍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
🔥 Когда понимаешь SOLID — жизнь становится проще
В октябре действует скидка 40% на все курсы от Proglib Academy, включая интенсив «Архитектуры и шаблоны проектирования»
📘 На интенсиве ты:
— разберёшься, как проектировать приложения, которые не ломаются при каждом изменении;
— освоишь SOLID-принципы, IoC, адаптеры и фабрики;
— научишься строить масштабируемые архитектуры;
— создашь собственную игру «Звёздные войны».
👨💻 Примеры кода на C#, Java, Python, PHP, C++ и JavaScript. Главное — понимать принципы, а не язык.
Преподаватель — Евгений Тюменцев, директор компании HWdTech, разрабатывал многопоточные кроссплатформенные приложения для IBM Watson.
📆 Формат: онлайн, 1 месяц.
📚 9 лекций + 2 бонусных занятия + практика.
Интенсив подойдёт джунам, которые хотят апнуться до мидла, и мидлам, мечтающим о роли архитектора.
👉 Переходи к курсам со скидкой 40%
В октябре действует скидка 40% на все курсы от Proglib Academy, включая интенсив «Архитектуры и шаблоны проектирования»
📘 На интенсиве ты:
— разберёшься, как проектировать приложения, которые не ломаются при каждом изменении;
— освоишь SOLID-принципы, IoC, адаптеры и фабрики;
— научишься строить масштабируемые архитектуры;
— создашь собственную игру «Звёздные войны».
👨💻 Примеры кода на C#, Java, Python, PHP, C++ и JavaScript. Главное — понимать принципы, а не язык.
Преподаватель — Евгений Тюменцев, директор компании HWdTech, разрабатывал многопоточные кроссплатформенные приложения для IBM Watson.
📆 Формат: онлайн, 1 месяц.
📚 9 лекций + 2 бонусных занятия + практика.
Интенсив подойдёт джунам, которые хотят апнуться до мидла, и мидлам, мечтающим о роли архитектора.
👉 Переходи к курсам со скидкой 40%
🧩 Почему Feature-модули не решают проблему масштабирования
Многие команды переходят к модульной архитектуре, надеясь, что разбив проект на feature-модули, они автоматически получат масштабируемость. На практике — чаще наоборот.
⚙️ В чём ошибка
Feature-модули решают структурную, а не архитектурную проблему.
Да, они:
• уменьшают время сборки,
• изолируют зависимости,
• упрощают навигацию по проекту.
Но если в каждом модуле копируется один и тот же UI-state, бизнес-логика и сетевой слой — ты не масштабируешь архитектуру, ты масштабируешь хаос.
🧠 Что действительно масштабируется
Масштабируется только архитектурная консистентность:
• единые контракты между слоями,
• повторно используемые базовые интерфейсы (например, для state-management или DI),
• стандартизированный подход к навигации и фичам.
Feature-модуль должен быть потребителем архитектурных решений, а не их источником.
✅ Практическая мысль
Прежде чем делить монолит на 20 модулей, ответь себе:
Без этого модульность превращается в распыление ответственности, а не в масштабирование.
А как у вас реализована модульность в проекте?💬
🐸 Библиотека мобильного разработчика
#АрхитектурныйКод #SeniorView
Многие команды переходят к модульной архитектуре, надеясь, что разбив проект на feature-модули, они автоматически получат масштабируемость. На практике — чаще наоборот.
Feature-модули решают структурную, а не архитектурную проблему.
Да, они:
• уменьшают время сборки,
• изолируют зависимости,
• упрощают навигацию по проекту.
Но если в каждом модуле копируется один и тот же UI-state, бизнес-логика и сетевой слой — ты не масштабируешь архитектуру, ты масштабируешь хаос.
Масштабируется только архитектурная консистентность:
• единые контракты между слоями,
• повторно используемые базовые интерфейсы (например, для state-management или DI),
• стандартизированный подход к навигации и фичам.
Feature-модуль должен быть потребителем архитектурных решений, а не их источником.
Прежде чем делить монолит на 20 модулей, ответь себе:
Есть ли у нас устойчивая архитектурная основа, которую эти модули смогут разделять?
Без этого модульность превращается в распыление ответственности, а не в масштабирование.
А как у вас реализована модульность в проекте?
#АрхитектурныйКод #SeniorView
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5
adb shell input keyevent – управление устройством с помощью системных событийОтправляйте системные события на Android-устройство через ADB – имитируйте нажатия аппаратных кнопок, жесты и другие действия без физического доступа к устройству.
# Базовые кнопки
adb shell input keyevent 3 # HOME
adb shell input keyevent 4 # BACK
adb shell input keyevent 26 # POWER (вкл/выкл)
adb shell input keyevent 24 # VOLUME_UP
adb shell input keyevent 25 # VOLUME_DOWN
# Медиа и специальные
adb shell input keyevent 85 # PLAY/PAUSE
adb shell input keyevent 86 # STOP
adb shell input keyevent 87 # NEXT
adb shell input keyevent 88 # PREVIOUS
adb shell input keyevent 164 # MUTE
1. Автоматизация тестов:
# Сценарий: открыть приложение, сделать действия, вернуться домой
adb shell am start -n com.yourapp/.MainActivity
sleep 2
adb shell input keyevent 4 # BACK
adb shell input keyevent 3 # HOME
2. Тестирование обработки прерываний:
# Во время работы приложения
adb shell input keyevent 26 # POWER (блокировка)
sleep 2
adb shell input keyevent 26 # POWER (разблокировка)
3. Управление медиа в фоне:
adb shell input keyevent 85 # PLAY/PAUSE музыки
Скриншот через комбинацию:
adb shell input keyevent 120 # SYSRQ (скриншот)
Перезагрузка устройства:
adb shell input keyevent 116 # POWER + перезагрузка через меню
Какие keyevent вы используете чаще всего?
Библиотека мобильного разработчика
#буст #MiddlePath #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
