Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
90 - Telegram Web
Telegram Web
Please open Telegram to view this post
VIEW IN TELEGRAM
Перевернутые модификаторы

Неудивительно, что Android и iOS разработчики часто не могут найти общий язык, ведь у них (у нас) все перевернуто с ног на голову 🇦🇺

Это касается и модификаторов в декларативных UI фреймворках. На картинке видно, что цепочка из одинаковых модификаторов для Compose и SwiftUI дают один и тот же результат, при этом располагаясь в обратном порядке.

➡️ В Compose первый модификатор size задает минимальные и максимальные констрейнты и мы не можем выйти за эти ограничения, не переопределяя их.

➡️ В SwiftUI таких ограничений нет и там всегда padding применяется во вне, что может быть даже удобнее, так как не приходится об этом задумываться.

🗓 Но к чему я это все? На ближайшей конференции Мобиус буду рассказывать доклад, где сравню ключевые отличия обоих фреймворков, и если тема интересна, то буду рад видеть всех на докладе 😉

#Compose #SwiftUI
@kotlin_adept
Please open Telegram to view this post
VIEW IN TELEGRAM
В публичный доступ опубликовали воркшоп от Павла Стрельченко по созданию плагинов для любых IDE от JetBrains 👩‍💻

Очень рекомендую глянуть воркшоп, даже если вы не собираетесь разрабатывать плагины, ведь из воркшопа можно вынести много всего полезного, а именно:

💡 Почерпнуть идеи для плагинов и автоматизаций
🔮 Понять как мыслить при работе с незнакомым кодом
🐞 Увидеть как эффективно работать с дебаггером
✏️ Услышать полезные советы и многое другое

Приятного просмотра

#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
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
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Стартует конференция Mobius и сегодня Community day, поэтому можно бесплатно посмотреть некоторые доклады.

Приходите послушать интересный доклад Kotlin in GitHub Actions. Расширяем горизонты KMP от Макса Качинкина.

Я там тоже буду присутствовать в качестве "эксперта", так что до встречи 🤝
Сегодня буду выступать на Mobius с докладом про отличия Compose и SwiftUI.

В докладе сравним следующие моменты:
🟣Принцип работы под капотом
🟣Стейт и жизненный цикл
🟣Система модификаторов
🟣Корутины в UI
🟣Подход к анимациям

Если вы на площадке, то приходите во второй зал в 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
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
Сегодня на ревью прислали нижний код. Это вообще законно?
🎥 Рад анонсировать первый онлайн-митап на этом канале, в программе будут два доклада:

🔸 Данил Колесников покажет концептуально новый подход к навигации, где есть всего две команды: open и close. И расскажет о том, как это работает на основе декларации иерархии экранов, алгоритмам поиска в деревьях, а также Decompose.

🔸 Алексей Панов расскажет про отличия двух декларативных UI-фреймворков: Compose и SwiftUI, разберет как они устроены под капотом и сравнит основные концепции.

📍 Стрим будет проходить в Толке, а также параллельно в этом telegram-канале. Лучше подключаться через Толк, так как можно будет задать вопросы спикерам в прямом эфире.

🗓 Начинаем 7 ноября в 19:00 мск.

Прийти на стрим могут все желающие, записи стрима не будет, так что не пропустите!
Please open Telegram to view this post
VIEW IN TELEGRAM
Live stream scheduled for
Рубрика идиоматичный 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
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔔 Напомню, что сегодня в 19:00 мск пройдет стрим, где будут два интересных доклада. Подробнее здесь.

🤖🍏 Доклады будут полезны как Android, так и iOS разработчикам.

Так что приходите посмотреть доклады, пообщаться в чате с другими участниками, задать вопросы спикерам, ну и просто с пользой провести время 😉
Live stream started
2025/07/05 07:00:40
Back to Top
HTML Embed Code: