Всем привет!
Это Илья Гуля 🙂 (@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
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
Про то как сделать более приятные для разработки уникальные идентификаторы без потери энтропии
Про то как сделать более приятные для разработки уникальные идентификаторы без потери энтропии
👍2🔥1
Слава JetBrains и фиче Local history!
Я случайно удалил папку с проектом который сегодня писал весь день.
Попытался восстановить через всякие тулзы для восстановления файлов - безуспешно.
В итоге попытал удачу:
1. Создал пустую папку проекта заново.
2. Открыл её в IDEA и открыл Local History.
3. Успешно нашёл изменение в котором удаляется весь проект и ревертнул его🥳
Я случайно удалил папку с проектом который сегодня писал весь день.
Попытался восстановить через всякие тулзы для восстановления файлов - безуспешно.
В итоге попытал удачу:
1. Создал пустую папку проекта заново.
2. Открыл её в IDEA и открыл Local History.
3. Успешно нашёл изменение в котором удаляется весь проект и ревертнул его
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
UPD: рано радовался, половина файлов пустые 🙂
Видимо это знак - буду разрабатывать игру с нуля на стримах :D
Видимо это знак - буду разрабатывать игру с нуля на стримах :D
😢9👍2
