Please open Telegram to view this post
VIEW IN TELEGRAM
Перевернутые модификаторы
Неудивительно, что Android и iOS разработчики часто не могут найти общий язык, ведь у них (у нас) все перевернуто с ног на голову 🇦🇺
Это касается и модификаторов в декларативных UI фреймворках. На картинке видно, что цепочка из одинаковых модификаторов для Compose и SwiftUI дают один и тот же результат, при этом располагаясь в обратном порядке.
➡️ В Compose первый модификатор size задает минимальные и максимальные констрейнты и мы не можем выйти за эти ограничения, не переопределяя их.
➡️ В SwiftUI таких ограничений нет и там всегда padding применяется во вне, что может быть даже удобнее, так как не приходится об этом задумываться.
🗓 Но к чему я это все? На ближайшей конференции Мобиус буду рассказывать доклад, где сравню ключевые отличия обоих фреймворков, и если тема интересна, то буду рад видеть всех на докладе 😉
#Compose #SwiftUI
@kotlin_adept
Неудивительно, что Android и iOS разработчики часто не могут найти общий язык, ведь у них (у нас) все перевернуто с ног на голову 🇦🇺
Это касается и модификаторов в декларативных UI фреймворках. На картинке видно, что цепочка из одинаковых модификаторов для Compose и SwiftUI дают один и тот же результат, при этом располагаясь в обратном порядке.
#Compose #SwiftUI
@kotlin_adept
Please open Telegram to view this post
VIEW IN TELEGRAM
В публичный доступ опубликовали воркшоп от Павла Стрельченко по созданию плагинов для любых IDE от JetBrains 👩💻
Очень рекомендую глянуть воркшоп, даже если вы не собираетесь разрабатывать плагины, ведь из воркшопа можно вынести много всего полезного, а именно:
💡 Почерпнуть идеи для плагинов и автоматизаций
🔮 Понять как мыслить при работе с незнакомым кодом
🐞 Увидеть как эффективно работать с дебаггером
✏️ Услышать полезные советы и многое другое
Приятного просмотра✅
#Plugins #Kotlin #IDE
@kotlin_adept
Очень рекомендую глянуть воркшоп, даже если вы не собираетесь разрабатывать плагины, ведь из воркшопа можно вынести много всего полезного, а именно:
Приятного просмотра
#Plugins #Kotlin #IDE
@kotlin_adept
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Пока готовился к докладу, нашел неплохой репозиторий с набором разных анимаций для Compose Multiplatform.
Там вы найдете множество разных примеров:
🟣 Анимации заставок разных приложений (Netflix, Twitter, GitHub, Slack и др.)
🟣 Кастомный pull-to-refresh
🟣 Анимация горения свечи
🟣 Упоротая сова из Duolingo
А если вы iOS разработчик, то вот вам еще более классный репозиторий с кучей красивых анимаций для SwiftUI💅
#Animation #Compose #KMP #SwiftUI
@kotlin_adept
Там вы найдете множество разных примеров:
А если вы iOS разработчик, то вот вам еще более классный репозиторий с кучей красивых анимаций для SwiftUI
#Animation #Compose #KMP #SwiftUI
@kotlin_adept
Please open Telegram to view this post
VIEW IN TELEGRAM
Коллега из Контура, Василий Рылов, поделился архитектурным примером KMP проекта 🔥
В репозитории вы найдете пример приложения построенного по следующим принципам:
🟣 Каждая фича представлена группой модулей: feature-component, feature-domain, feature-ui и feature-data
🟣 Комбинация FSM-based MVI и MVVM+ подхода с простой небиблиотечной ViewModel
🟣 Навигация абстрагирована от Decompose, Decompose компоненты выделены в собственные модули
🟣 Многомодульный DI, каждый модуль может использовать собственную реализацию DI
В примере использованы библиотеки:
🔵 Multiplatform Room
🔵 Multiplatform Settings
🔵 Decompose
🔵 Compose Multiplatform
🔵 Варианты с Kotlin-inject и Koin DI
#KMP #Decompose #Sample
@kotlin_adept
В репозитории вы найдете пример приложения построенного по следующим принципам:
В примере использованы библиотеки:
#KMP #Decompose #Sample
@kotlin_adept
Please open Telegram to view this post
VIEW IN TELEGRAM
Сегодня буду выступать на Mobius с докладом про отличия Compose и SwiftUI.
В докладе сравним следующие моменты:
🟣 Принцип работы под капотом
🟣 Стейт и жизненный цикл
🟣 Система модификаторов
🟣 Корутины в UI
🟣 Подход к анимациям
Если вы на площадке, то приходите во второй зал в 12:15 мск или подключайтесь онлайн, если у вас есть билет на Mobius.
До встречи 🤝
В докладе сравним следующие моменты:
Если вы на площадке, то приходите во второй зал в 12:15 мск или подключайтесь онлайн, если у вас есть билет на Mobius.
До встречи 🤝
Please open Telegram to view this post
VIEW IN TELEGRAM
Обзор Mobius 2024 Autumn
Давайте уже по традиции сделаем обзор докладов с прошедшего Mobius, напишу свой личный топ докладов, которые удалось посмотреть:
Последнее слово в Android-навигации
🔵 Отличная подача и повествование, очень красивая и проработанная презентация, интересный подход к навигации, чтобы свести ее к вызову двух методов open/close и уменьшить бойлерплейт.
🔸 Однако не факт, что такой подход подойдет именно вам, у него есть свои ограничения и очень не хватило реального примера, где все это можно опробовать.
Совместная работа Kotlin/Native GC и ARC в iOS
🔵 Хороший, а главное понятный доклад, чтобы узнать каким образом происходит интероп между двумя моделями памяти в Swift и Kotlin Native, в каких случаях в игру будет вступать ARC, а когда Kotlin Native GC
🔸 Доклад безусловно хорош для общего развития, но вряд ли вам эти знания пригодятся на практике.
Танцы вокруг дерева семантики
🔵 Интересный доклад про проблемы UI-тестирования в Compose и недостатки API в Kakao/Kaspresso, а также о том, как эти недостатки можно исправить.
🔸 Для людей незнакомых с UI-тестированием в Compose может быть сложен для восприятия.
Опасности в Android: уязвимости и защитные меры
🔵 Хороший обзор частых уязвимостей в Android и как от них защититься, что-то я уже знал, с чем-то сталкивался на практике, а что-то было в новинку.
🔸 Но большинство уязвимостей неактуальны на новых API и если нельзя открыть произвольный URL в приложении.
Как проводить собеседования интересно и продуктивно
🔵 Классный доклад о том, как превратить собеседование из экзамена в живое общение, а также возможность вспомнить о чем спрашивают на большинстве собеседований и сделать пометки, что еще стоит подучить.
🔸 В целом уже не новый подход, мы у себя в компании уже давно стараемся проводить собеседования в формате диалога без заготовленного списка вопросов, но заместо кучи этапов сжали все это в одно собеседование.
🫠 На этом все, если хотите, чтобы я написал выжимку каких-либо докладов в посте, пишите в комментарии интересующий доклад ⬇️
#Mobius
@kotlin_adept
Давайте уже по традиции сделаем обзор докладов с прошедшего Mobius, напишу свой личный топ докладов, которые удалось посмотреть:
Последнее слово в Android-навигации
Совместная работа Kotlin/Native GC и ARC в iOS
Танцы вокруг дерева семантики
Опасности в Android: уязвимости и защитные меры
Как проводить собеседования интересно и продуктивно
#Mobius
@kotlin_adept
Please open Telegram to view this post
VIEW IN TELEGRAM
SQLDelight vs Exposed
Для моего бека на Ktor нужно было выбрать ORM для реляционной БД и я решил посмотреть на решение от JetBrains под названием Exposed.
Библиотека довольно интересная, но сильно непривычная, так как с SQL вообще не нужно контактировать, поверх него написан свой dsl на Kotlin, который не такой уж интуитивный и без документации никакой более менее сложный запрос не напишешь. Однако там хотя бы можно из коробки создавать таблицы, в отличие от SQLDelight, но при этом в Exposed напрочь отсутствует поддержка миграций.
Поэтому я решил сделать небольшое сравнение в изображении к этому посту 👆
По итогу я все же выбралSQLDelight в связке с Flyway для миграций и HikariCP для соединения с БД, так как этот инструмент уже привычный и его более чем достаточно для моих целей.
А что выбрали бы вы?
#SQLDelight #Exposed #ORM #Kotlin
@kotlin_adept
Для моего бека на Ktor нужно было выбрать ORM для реляционной БД и я решил посмотреть на решение от JetBrains под названием Exposed.
Библиотека довольно интересная, но сильно непривычная, так как с SQL вообще не нужно контактировать, поверх него написан свой dsl на Kotlin, который не такой уж интуитивный и без документации никакой более менее сложный запрос не напишешь. Однако там хотя бы можно из коробки создавать таблицы, в отличие от SQLDelight, но при этом в Exposed напрочь отсутствует поддержка миграций.
Поэтому я решил сделать небольшое сравнение в изображении к этому посту 👆
По итогу я все же выбрал
А что выбрали бы вы?
#SQLDelight #Exposed #ORM #Kotlin
@kotlin_adept
Прийти на стрим могут все желающие, записи стрима не будет, так что не пропустите!
Please open Telegram to view this post
VIEW IN TELEGRAM
Рубрика идиоматичный Kotlin. Что вернет выражение listOf(false).any() ?
Anonymous Quiz
54%
true
46%
false
This media is not supported in your browser
VIEW IN TELEGRAM
Адаптивный UI проще, чем кажется
Раньше с Android View, если требовалось поддержать верстку для планшетов, довольно часто просто делали отдельную верстку с нуля, и несмотря на то, что можно было расположить несколько фрагментов на одном экране, это не избавляло от сложностей навигации🥲
Теперь же с приходом Compose и нового api делать адаптивную верстку стало значительно проще. И вот несколько рекомендаций как сделать современный адаптивный UI:
1️⃣ Не используйте флаги вроде isTablet и т.д., используйте window size classes для динамического определения размера окна: Compact, Medium, Expanded
2️⃣ Используйте готовые адаптивные компоненты вроде ListDetailPaneScaffold, SupportingPaneScaffold, NavigationSuiteScaffold
3️⃣ Рассмотрите возможность использования LazyGrid вместо LazyList
4️⃣ Меняйте расположение UI компонентов с помощью BoxWithConstraint и movableContentOf во избежание лишних рекомпозиций
5️⃣ Не блокируйте ориентацию экрана и не отключайте resizeableActivity
6️⃣ Меняйте размер и соотношение сторон у UI компонентов в зависимости от размеров окна
🌳 В Decompose также появилась поддержка адаптивной навигации и благодаря ChildPanels реализовать list-detail навигацию стало очень просто без лишнего бойлерплейта.
А есть ли адаптивная верстка в вашем приложении❓
🫡 — только screenOrientation portrait, только хардкор
😎 — есть адаптивная верстка под любые экраны
#Compose #AdaptiveUI
@kotlin_adept
Раньше с Android View, если требовалось поддержать верстку для планшетов, довольно часто просто делали отдельную верстку с нуля, и несмотря на то, что можно было расположить несколько фрагментов на одном экране, это не избавляло от сложностей навигации
Теперь же с приходом Compose и нового api делать адаптивную верстку стало значительно проще. И вот несколько рекомендаций как сделать современный адаптивный UI:
А есть ли адаптивная верстка в вашем приложении
🫡 — только screenOrientation portrait, только хардкор
😎 — есть адаптивная верстка под любые экраны
#Compose #AdaptiveUI
@kotlin_adept
Please open Telegram to view this post
VIEW IN TELEGRAM
🔔 Напомню, что сегодня в 19:00 мск пройдет стрим, где будут два интересных доклада. Подробнее здесь.
🤖🍏 Доклады будут полезны как Android, так и iOS разработчикам.
Так что приходите посмотреть доклады, пообщаться в чате с другими участниками, задать вопросы спикерам, ну и просто с пользой провести время 😉
🤖🍏 Доклады будут полезны как Android, так и iOS разработчикам.
Так что приходите посмотреть доклады, пообщаться в чате с другими участниками, задать вопросы спикерам, ну и просто с пользой провести время 😉