A bit deeper – Telegram
A bit deeper
204 subscribers
23 photos
2 videos
28 links
Админ: @ilyagulya
Английская версия: @abitdeeper_en
Download Telegram
Всем привет!
Это Илья Гуля 🙂 (@ilyagulya)
Уже несколько лет у меня появляются мысли о том что я хочу в каком-то виде заниматься блогерством или около него.
Также, достаточно часто у меня возникает потребность поделиться какими-то интересными инструментами, мемами, событиями из моей жизни.
В связи с этим я решил наконец начать делать попытки двигаться в эту сторону.
Таким образом, я возрождаю и переквалифицирую этот канал в мой личный блог обо всём.
Посмотрим, сколько продлится эта попытка 🙂
Добро пожаловать!
👍3
Подрубил в канале комментарии к постам
👍1
С этой недели начинает сбываться моя давняя мечта - работать не 5 дней в неделю, а поменьше.
Пока что сбывается она вынужденно (из-за проблем со здоровьем), но всё равно я доволен, очень надеюсь что это повысит продуктивность и качество жизни 🙂
Работать теперь буду 4 дня в неделю, с перерывом в среду 🙂

(на картинке изображён wednesday holiday по мнению Midjourney)
👍1
#android #kotlin #compiler
Уже больше года я использую в своих проектах библиотеку с иммутабельными коллекциями для 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

Заметка для себя в будущем, но пригодится и вам, если вдруг придётся подебажить компилятор котлина в реальном проекте, использующем Gradle.
Для того чтобы подключиться дебаггером к компилятору котлина вам нужно:

Подготовить проект котлина

1. Склонировать репозиторий котлина
2. Переключиться в гите на тег использующейся в вашем проекте версии котлина: v1.8.20 или другой.
3. На сегодняшний день обязательно нужно отрубить поддержку Java 1.6/1.7, добавив в local.properties cледующую строку:
kotlin.build.isObsoleteJdkOverrideEnabled=true
4. Открыть проект котлина в 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
🔥5
#intellij #internals
Исправлял сейчас баг в автоматическом форматтере котлина.
В процессе пришлось много изучать внутренности Intellij IDEA.
Собственно, мне показалось интересным то, как выглядят тесты на перемещение каретки.
Той самой, что показывает положение в тексте.
Первый скрин это состояние до.
Второй скрин это состояние которое ожидается после нажатия клавиши Enter.
Тег <caret>, собственно, говорит тестовому фреймворку где изначально стояла каретка, и где она ожидается после нажатия Enter.
А вот сам фикс, если кому интересно (второй коммит, первый делал человек который пытался починить до меня)
https://github.com/JetBrains/intellij-community/pull/2156
А вот и бета котлина с моей фичой 😁
https://github.com/JetBrains/kotlin/releases/tag/v2.0.0-Beta1
🔥10🤯1
Channel name was changed to «A bit deeper»
Небольшой апдейт!
В данный момент занимаюсь достаточно масштабным проектом для самообразования.
Пишу собственную реализацию виртуальной машины Dalvik на языке Rust. 🙂
По пути набирается достаточно много контента для блогпостов, так что в скором времени тут будет первая статья из цикла про Dalvik VM.
Статья будет у меня в блоге, а тут краткая выжимка и ссылка на статью.
Попутно делаю ребрендинг. Канал и блог теперь называются "A bit deeper" - таким образом пытаюсь подчеркнуть что я стараюсь писать контент как минимум чуть более глубокий чем большая часть условного "контента с медиума" или современного хабра.
👏431💩1
Сейчас пока болею на новогодних каникулах, решил заняться весёлой вещью - добавить поддержку WASM-JS таргета в семпл проекта на MVIKotlin/Decompose который я поддерживаю с того момента как его удалили из репозитория Compose Multiplatform
По пути оказалось что куча зависимостей пока что не поддерживает WASM-JS таргеты, так что я последовательно начал добавлять поддержку во все зависимости где нужно.
Первый PR уже готовятся мерджить и релизить новую бетку 🙂 https://github.com/badoo/Reaktive/pull/771
👍4🔥2🗿1
#public #events

Я давно заметил за собой любовь к тому, чтобы делиться знаниями с людьми.
С самого начала карьеры я всегда старался следить за миром разработки, последними новостями, изучать что-то за пределами своих рабочих обязанностей. А также пытался прививать людям эти знания и любовь к обучению. Достаточно часто я делал это вопреки их желаниям. Обратная связь от подобного подхода приводила к достаточно грустным последствиям - я не развивал свой потенциал и расстраивался в окружающей действительности.

Однако стремление никуда не исчезло!


За последний год я наблюдал, как формируются множество различных онлайн-сообществ и понял что контакты - самый ценный ресурс в карьере и в жизни.
Я развивал навык нетворкинга совершенно не в той мере, в которой способен.
В связи с этим, я принял решение двигаться в сторону большей публичности.

Развитие навыков публичных выступлений, нетворкинга и, потенциально, преподавания считаю своими New Year Resolutions 🙂
Организовать сообщество людей, желающих общаться, учиться и делиться своими знаниями с миром, выглядит наиболее эффективным способом развить перечисленные выше навыки.
Ровно этим я и собираюсь заняться в грядущие месяцы.
🔥72
Классную статью тут нашёл https://unkey.dev/blog/uuid-ux
Про то как сделать более приятные для разработки уникальные идентификаторы без потери энтропии
👍2🔥1
Слава JetBrains и фиче Local history!
Я случайно удалил папку с проектом который сегодня писал весь день.
Попытался восстановить через всякие тулзы для восстановления файлов - безуспешно.
В итоге попытал удачу:
1. Создал пустую папку проекта заново.
2. Открыл её в IDEA и открыл Local History.
3. Успешно нашёл изменение в котором удаляется весь проект и ревертнул его 🥳
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
UPD: рано радовался, половина файлов пустые 🙂
Видимо это знак - буду разрабатывать игру с нуля на стримах :D
😢9👍2
Недавно приехал мой микрофон из Питера, но оказалось что где-то потерялось крепление к штативу.
Я потратил две недели в попытках найти замену, и сегодня попытки увенчались успехом.
Так что в скором времени буду стримить как я разрабатываю свою игру на Flutter в прямом эфире 🙂
🔥12