Подробно о том как работает Jetpack Compose внутри от одного из его разработчиков.
https://www.youtube.com/watch?v=6BRlI5zfCCk
https://www.youtube.com/watch?v=6BRlI5zfCCk
YouTube
KotlinConf 2019: The Compose Runtime, Demystified by Leland Richardson
Recording brought to you by American Express. https://americanexpress.io/kotlin-jobs
Jetpack Compose is an ambitious multi-team effort to reimagine Android's UI Toolkit more than 10 years after the Android Platform launched with the original UI Toolkit.
…
Jetpack Compose is an ambitious multi-team effort to reimagine Android's UI Toolkit more than 10 years after the Android Platform launched with the original UI Toolkit.
…
Канал про декларативный UI в Android
https://news.1rj.ru/str/android_declarative
https://news.1rj.ru/str/android_declarative
Telegram
Android Declarative
Чат русскоязычного Android-сообщества, посвящённый декларативным UI-фреймворкам, таким как Jetpack Compose и другим.
📌 Для жалоб на спам - используйте команду /report
🚫 За оффтоп - бан и отправка в @android_ru
🧪 @xofftop - бета-чат для оффтопа
📌 Для жалоб на спам - используйте команду /report
🚫 За оффтоп - бан и отправка в @android_ru
🧪 @xofftop - бета-чат для оффтопа
Всем привет!
Это Илья Гуля 🙂 (@ilyagulya)
Уже несколько лет у меня появляются мысли о том что я хочу в каком-то виде заниматься блогерством или около него.
Также, достаточно часто у меня возникает потребность поделиться какими-то интересными инструментами, мемами, событиями из моей жизни.
В связи с этим я решил наконец начать делать попытки двигаться в эту сторону.
Таким образом, я возрождаю и переквалифицирую этот канал в мой личный блог обо всём.
Посмотрим, сколько продлится эта попытка 🙂
Добро пожаловать!
Это Илья Гуля 🙂 (@ilyagulya)
Уже несколько лет у меня появляются мысли о том что я хочу в каком-то виде заниматься блогерством или около него.
Также, достаточно часто у меня возникает потребность поделиться какими-то интересными инструментами, мемами, событиями из моей жизни.
В связи с этим я решил наконец начать делать попытки двигаться в эту сторону.
Таким образом, я возрождаю и переквалифицирую этот канал в мой личный блог обо всём.
Посмотрим, сколько продлится эта попытка 🙂
Добро пожаловать!
👍3
С этой недели начинает сбываться моя давняя мечта - работать не 5 дней в неделю, а поменьше.
Пока что сбывается она вынужденно (из-за проблем со здоровьем), но всё равно я доволен, очень надеюсь что это повысит продуктивность и качество жизни 🙂
Работать теперь буду 4 дня в неделю, с перерывом в среду 🙂
(на картинке изображён
Пока что сбывается она вынужденно (из-за проблем со здоровьем), но всё равно я доволен, очень надеюсь что это повысит продуктивность и качество жизни 🙂
Работать теперь буду 4 дня в неделю, с перерывом в среду 🙂
(на картинке изображён
wednesday holiday по мнению Midjourney)👍1
#android #kotlin #compiler
Уже больше года я использую в своих проектах библиотеку с иммутабельными коллекциями для Kotlin.
Всё радует, всем рекомендую, иммутабельность - залог отсутствия боли при дебаге 🙂
Однако была проблема - у меня в проекте много где ещё используется сериализация доменных сущностей в
Соответственно, их нужно делать
И этот факт добавляет большую проблему -
Я с этим мирился до начала сентября, когда решил взять дело в свои руки и запилил эту поддержку самостоятельно.
Весь процесс был не сильно сложным, но жутко интересным, рекомендую покопаться в компиляторе котлина на досуге 🙂
По сути всё что нужно было сделать - добавить генерацию вызова
Ну и по пути порефакторил ещё слегка.
А сегодня наконец-то случился мердж моего пулл реквеста! (https://github.com/JetBrains/kotlin/pull/5184#issuecomment-1743915972)
Так что я теперь официально могу называть себя контрибутором в компилятор котлина 😁)
Вероятно в Kotlin 2.0 Beta 1 мой контрибушен будет доступен всем пользователям.
Уже больше года я использую в своих проектах библиотеку с иммутабельными коллекциями для Kotlin.
Всё радует, всем рекомендую, иммутабельность - залог отсутствия боли при дебаге 🙂
Однако была проблема - у меня в проекте много где ещё используется сериализация доменных сущностей в
Bundle.Соответственно, их нужно делать
Parcelable.И этот факт добавляет большую проблему -
kotlinx-parcelize плагин (который даёт нам возможность аннотацией @Parcelize сгенерить реализацию Parcelable для класса) не поддерживает эти иммутабельные коллекции.Я с этим мирился до начала сентября, когда решил взять дело в свои руки и запилил эту поддержку самостоятельно.
Весь процесс был не сильно сложным, но жутко интересным, рекомендую покопаться в компиляторе котлина на досуге 🙂
По сути всё что нужно было сделать - добавить генерацию вызова
,toPersistent(List|Set|Map) тогда когда нужно.Ну и по пути порефакторил ещё слегка.
А сегодня наконец-то случился мердж моего пулл реквеста! (https://github.com/JetBrains/kotlin/pull/5184#issuecomment-1743915972)
Так что я теперь официально могу называть себя контрибутором в компилятор котлина 😁)
Вероятно в Kotlin 2.0 Beta 1 мой контрибушен будет доступен всем пользователям.
❤5
А ещё для поста выше пришлось таки купить подписку в телеге, оказывается тут есть ограничение на количество символов в постах с медиаконтентом.
Так что премиумные подписчики теперь могут БУСТИТЬ этот канал.
Велкам, если есть желание 🙂
Так что премиумные подписчики теперь могут БУСТИТЬ этот канал.
Велкам, если есть желание 🙂
#kotlin #compiler
Заметка для себя в будущем, но пригодится и вам, если вдруг придётся подебажить компилятор котлина в реальном проекте, использующем
Для того чтобы подключиться дебаггером к компилятору котлина вам нужно:
Подготовить проект котлина
1. Склонировать репозиторий котлина
2. Переключиться в гите на тег использующейся в вашем проекте версии котлина:
3. На сегодняшний день обязательно нужно отрубить поддержку Java 1.6/1.7, добавив в
Подготовить ваш проект к дебагу
1. Сделать всё как описано в гайде Gradle по дебагу билд логики
2. Добавить в
3. Остановить все демоны
Теперь любой билд запущенный в вашем проекте можно будет продебажить из IDE в которой у вас открыт проект компилятора.
При следующем запуске любой
Заметка для себя в будущем, но пригодится и вам, если вдруг придётся подебажить компилятор котлина в реальном проекте, использующем
Gradle.Для того чтобы подключиться дебаггером к компилятору котлина вам нужно:
Подготовить проект котлина
1. Склонировать репозиторий котлина
2. Переключиться в гите на тег использующейся в вашем проекте версии котлина:
v1.8.20 или другой.3. На сегодняшний день обязательно нужно отрубить поддержку Java 1.6/1.7, добавив в
local.properties cледующую строку:kotlin.build.isObsoleteJdkOverrideEnabled=true4. Открыть проект котлина в IDE (IDEA / Android Studio).
Подготовить ваш проект к дебагу
1. Сделать всё как описано в гайде Gradle по дебагу билд логики
2. Добавить в
local.properties конфигурацию для компилятора котлина, которая говорит ему запускаться внутри процесса Gradle: kotlin.compiler.execution.strategy=in-processТаким образом, вы, подключившись дебаггером к Gradle, сможете дебажить ещё и компилятор котлина.
3. Остановить все демоны
Gradle прежде чем дебаг заработает:./gradlew --stopВ целом это всё, вы великолепны!
Теперь любой билд запущенный в вашем проекте можно будет продебажить из IDE в которой у вас открыт проект компилятора.
При следующем запуске любой
Gradle таски в вашем проекте Gradle будет ожидать дебаггер, прежде чем начать любую работу.⚡2🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
На просторах твиттера нашёл офигенную штуку - безопасные треугольники при разработке popup менюшек.
Если применить такой алгоритм, то юзеру будет намного более комфортно взаимодействивать с подменю.
Без лишних слов, всё достаточно очевидно по видео.
Вот статья про подход
Кстати, В IDE от JetBrains такое поддерживается с февраля 2022
Если применить такой алгоритм, то юзеру будет намного более комфортно взаимодействивать с подменю.
Без лишних слов, всё достаточно очевидно по видео.
Вот статья про подход
Кстати, В IDE от JetBrains такое поддерживается с февраля 2022
🔥5
#intellij #internals
Исправлял сейчас баг в автоматическом форматтере котлина.
В процессе пришлось много изучать внутренности Intellij IDEA.
Собственно, мне показалось интересным то, как выглядят тесты на перемещение каретки.
Той самой, что показывает положение в тексте.
Первый скрин это состояние до.
Второй скрин это состояние которое ожидается после нажатия клавиши Enter.
Тег
А вот сам фикс, если кому интересно (второй коммит, первый делал человек который пытался починить до меня)
https://github.com/JetBrains/intellij-community/pull/2156
Исправлял сейчас баг в автоматическом форматтере котлина.
В процессе пришлось много изучать внутренности Intellij IDEA.
Собственно, мне показалось интересным то, как выглядят тесты на перемещение каретки.
Той самой, что показывает положение в тексте.
Первый скрин это состояние до.
Второй скрин это состояние которое ожидается после нажатия клавиши Enter.
Тег
<caret>, собственно, говорит тестовому фреймворку где изначально стояла каретка, и где она ожидается после нажатия Enter.А вот сам фикс, если кому интересно (второй коммит, первый делал человек который пытался починить до меня)
https://github.com/JetBrains/intellij-community/pull/2156
А вот и бета котлина с моей фичой 😁
https://github.com/JetBrains/kotlin/releases/tag/v2.0.0-Beta1
https://github.com/JetBrains/kotlin/releases/tag/v2.0.0-Beta1
🔥10🤯1
Небольшой апдейт!
В данный момент занимаюсь достаточно масштабным проектом для самообразования.
Пишу собственную реализацию виртуальной машины Dalvik на языке Rust. 🙂
По пути набирается достаточно много контента для блогпостов, так что в скором времени тут будет первая статья из цикла про Dalvik VM.
Статья будет у меня в блоге, а тут краткая выжимка и ссылка на статью.
Попутно делаю ребрендинг. Канал и блог теперь называются "A bit deeper" - таким образом пытаюсь подчеркнуть что я стараюсь писать контент как минимум чуть более глубокий чем большая часть условного "контента с медиума" или современного хабра.
В данный момент занимаюсь достаточно масштабным проектом для самообразования.
Пишу собственную реализацию виртуальной машины Dalvik на языке Rust. 🙂
По пути набирается достаточно много контента для блогпостов, так что в скором времени тут будет первая статья из цикла про Dalvik VM.
Статья будет у меня в блоге, а тут краткая выжимка и ссылка на статью.
Попутно делаю ребрендинг. Канал и блог теперь называются "A bit deeper" - таким образом пытаюсь подчеркнуть что я стараюсь писать контент как минимум чуть более глубокий чем большая часть условного "контента с медиума" или современного хабра.
👏4❤3⚡1💩1
Не могу не поделиться с вами этим шедевром 🙂
https://youtu.be/9qljpi5jiMQ
https://youtu.be/9qljpi5jiMQ
YouTube
GitHub Actions Feels Bad
To try everything Brilliant has to offer—free—for a full 30 days, visit https://brilliant.org/fasterthanlime/. The first 200 of you will get 20% off Brilliant’s annual premium subnoscription.
This video was sponsored by Brilliant.
Follow me on Mastodon: …
This video was sponsored by Brilliant.
Follow me on Mastodon: …
Сейчас пока болею на новогодних каникулах, решил заняться весёлой вещью - добавить поддержку WASM-JS таргета в семпл проекта на MVIKotlin/Decompose который я поддерживаю с того момента как его удалили из репозитория Compose Multiplatform
По пути оказалось что куча зависимостей пока что не поддерживает WASM-JS таргеты, так что я последовательно начал добавлять поддержку во все зависимости где нужно.
Первый PR уже готовятся мерджить и релизить новую бетку 🙂 https://github.com/badoo/Reaktive/pull/771
По пути оказалось что куча зависимостей пока что не поддерживает WASM-JS таргеты, так что я последовательно начал добавлять поддержку во все зависимости где нужно.
Первый PR уже готовятся мерджить и релизить новую бетку 🙂 https://github.com/badoo/Reaktive/pull/771
👍4🔥2🗿1
#public #events
Я давно заметил за собой любовь к тому, чтобы делиться знаниями с людьми.
С самого начала карьеры я всегда старался следить за миром разработки, последними новостями, изучать что-то за пределами своих рабочих обязанностей. А также пытался прививать людям эти знания и любовь к обучению. Достаточно часто я делал это вопреки их желаниям. Обратная связь от подобного подхода приводила к достаточно грустным последствиям - я не развивал свой потенциал и расстраивался в окружающей действительности.
Однако стремление никуда не исчезло!
За последний год я наблюдал, как формируются множество различных онлайн-сообществ и понял что контакты - самый ценный ресурс в карьере и в жизни.
Я развивал навык нетворкинга совершенно не в той мере, в которой способен.
В связи с этим, я принял решение двигаться в сторону большей публичности.
Развитие навыков публичных выступлений, нетворкинга и, потенциально, преподавания считаю своими New Year Resolutions 🙂
Организовать сообщество людей, желающих общаться, учиться и делиться своими знаниями с миром, выглядит наиболее эффективным способом развить перечисленные выше навыки.
Ровно этим я и собираюсь заняться в грядущие месяцы.
Я давно заметил за собой любовь к тому, чтобы делиться знаниями с людьми.
С самого начала карьеры я всегда старался следить за миром разработки, последними новостями, изучать что-то за пределами своих рабочих обязанностей. А также пытался прививать людям эти знания и любовь к обучению. Достаточно часто я делал это вопреки их желаниям. Обратная связь от подобного подхода приводила к достаточно грустным последствиям - я не развивал свой потенциал и расстраивался в окружающей действительности.
Однако стремление никуда не исчезло!
За последний год я наблюдал, как формируются множество различных онлайн-сообществ и понял что контакты - самый ценный ресурс в карьере и в жизни.
Я развивал навык нетворкинга совершенно не в той мере, в которой способен.
В связи с этим, я принял решение двигаться в сторону большей публичности.
Развитие навыков публичных выступлений, нетворкинга и, потенциально, преподавания считаю своими New Year Resolutions 🙂
Организовать сообщество людей, желающих общаться, учиться и делиться своими знаниями с миром, выглядит наиболее эффективным способом развить перечисленные выше навыки.
Ровно этим я и собираюсь заняться в грядущие месяцы.
🔥7❤2
