Всем привет!
Это Илья Гуля 🙂 (@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 subscription.
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
A bit deeper
Сейчас пока болею на новогодних каникулах, решил заняться весёлой вещью - добавить поддержку WASM-JS таргета в семпл проекта на MVIKotlin/Decompose который я поддерживаю с того момента как его удалили из репозитория Compose Multiplatform По пути оказалось…
Reaktive смерджили мой PR!
UPD: уже порелизили! https://github.com/badoo/Reaktive/releases/tag/2.1.0-beta01
Это была целая эпопея, но в итоге всё работает 🙂
https://github.com/badoo/Reaktive/pull/771
На подходе kotlinx.html
https://github.com/Kotlin/kotlinx.html/pull/251
UPD: уже порелизили! https://github.com/badoo/Reaktive/releases/tag/2.1.0-beta01
Это была целая эпопея, но в итоге всё работает 🙂
https://github.com/badoo/Reaktive/pull/771
На подходе kotlinx.html
https://github.com/Kotlin/kotlinx.html/pull/251
GitHub
Support wasmJs target by IlyaGulya · Pull Request #771 · badoo/Reaktive
Fixes #767
In this PR:
I've shared most of js sources with wasmJs by introducing the jsWasmJsCommon sourceSets.
Enabled gradle configuration cache
Upgraded Kotlin Coroutines to 1.8.0-RC2
In this PR:
I've shared most of js sources with wasmJs by introducing the jsWasmJsCommon sourceSets.
Enabled gradle configuration cache
Upgraded Kotlin Coroutines to 1.8.0-RC2
🔥7👍5❤3
Классную статью тут нашёл https://unkey.dev/blog/uuid-ux
Про то как сделать более приятные для разработки уникальные идентификаторы без потери энтропии
Про то как сделать более приятные для разработки уникальные идентификаторы без потери энтропии
Unkey
The UX of UUIDs | Unkey
Unique identifiers play a crucial role in all applications, from user authentication to resource management. While using a standard UUID will satisfy all your security concerns, there’s a lot we can improve for our users.
👍2🔥1
