Алгоритмический трейдинг на Kotlin
Если вы еще не решили, каким пет-проектом заняться в начале года, отличный кандидат – вкатиться в алгоритмический трейдинг. Если вы никогда о нем не слышали, вот вам выпуск Подлодки по теме.
А для реализации можете взять библиотеку Roboquant, которая предоставляет кучу готовых абстракций, и умеет интегрироваться как с обычным кодом, так и с Jupyter ноутбуками.
Если вы еще не решили, каким пет-проектом заняться в начале года, отличный кандидат – вкатиться в алгоритмический трейдинг. Если вы никогда о нем не слышали, вот вам выпуск Подлодки по теме.
А для реализации можете взять библиотеку Roboquant, которая предоставляет кучу готовых абстракций, и умеет интегрироваться как с обычным кодом, так и с Jupyter ноутбуками.
Бенчмарк переезда AGP с JDK 11 на JDK 17
Android Gradle Plugin 8.0.0 будет требовать использования JDK 17. Автор статьи решил посмотреть, как изменение версии Java повлияет на перфоманс, и замерил несколько сценариев работы с приложением Now in Android.
Android Gradle Plugin 8.0.0 будет требовать использования JDK 17. Автор статьи решил посмотреть, как изменение версии Java повлияет на перфоманс, и замерил несколько сценариев работы с приложением Now in Android.
KEEP про data objects
- Data objects – новая фича Kotlin, которая совмещает data classes и objects. Например, вы сможете объявлять синглтоны, у которых из коробки будет реализована функция toString.
- Превью data objects появится в Kotlin 1.8.20, а стабильная фича выйдет в 1.9.0.
- В KEEP хорошо разобраны спорные вопросы, приведены сравнения с другими языками и подробно описан дизайн фичи.
- Data objects – новая фича Kotlin, которая совмещает data classes и objects. Например, вы сможете объявлять синглтоны, у которых из коробки будет реализована функция toString.
- Превью data objects появится в Kotlin 1.8.20, а стабильная фича выйдет в 1.9.0.
- В KEEP хорошо разобраны спорные вопросы, приведены сравнения с другими языками и подробно описан дизайн фичи.
Сравнение перфоманса разных бэкендов Kotlin
Таблица с оценкой перфоманса разных способов компиляции Kotlin-кода и размера получающихся артефактов. Важно помнить, что любые бенчмарки показывают только часть картины, и к ним нужно относиться изначально довольно скептично. Как минимум, оценка производительности на числодробилке будет значительно отличаться от работы с Android проектами.
Таблица с оценкой перфоманса разных способов компиляции Kotlin-кода и размера получающихся артефактов. Важно помнить, что любые бенчмарки показывают только часть картины, и к ним нужно относиться изначально довольно скептично. Как минимум, оценка производительности на числодробилке будет значительно отличаться от работы с Android проектами.
This media is not supported in your browser
VIEW IN TELEGRAM
Тултипы в Compose с помощью библиотеки Balloon
- Balloon – библиотека для создания анимированных интерфейсных подсказок, которые очень хорошо кастомизируются. Библиотека полностью совместима с Compose.
- В статье приводится пример ее использования для создания простого тултипа.
- Balloon – библиотека для создания анимированных интерфейсных подсказок, которые очень хорошо кастомизируются. Библиотека полностью совместима с Compose.
- В статье приводится пример ее использования для создания простого тултипа.
Работа с фокусом в Compose
- Compose дает несколько API для управления фокусом текстовых полей: FocusManager, FocusRequester и различные модификаторы.
- В статье разбирается, как с помощью этих API можно получить текущий фокус, переместить его на другое поле, определив их порядок, и очистить его.
- Compose дает несколько API для управления фокусом текстовых полей: FocusManager, FocusRequester и различные модификаторы.
- В статье разбирается, как с помощью этих API можно получить текущий фокус, переместить его на другое поле, определив их порядок, и очистить его.
Генеративное искусство на Compose Desktop
18 января пройдет вебинар, на котором Антон Архипов из команды Kotlin покажет, как можно использовать Compose Desktop для отрисовки сложных геометрических фигур и генеративного арта. Вполне себе идея для вашего пет-проекта!
18 января пройдет вебинар, на котором Антон Архипов из команды Kotlin покажет, как можно использовать Compose Desktop для отрисовки сложных геометрических фигур и генеративного арта. Вполне себе идея для вашего пет-проекта!
Как написать свой сериализатор для kotlinx.serialization
Ядро kotlinx.serialization поддерживает не так много форматов – JSON, Protobuf и несколько других. Поддержкой сериализации других форматов в основном занимается коммьюнити. Автор библиотеки KToml рассказывает о деталях устройства и работы kotlinx.serialization и накидывает кучу советов по тому, как писать свои собственные сериализаторы.
Слайды доклада
Ядро kotlinx.serialization поддерживает не так много форматов – JSON, Protobuf и несколько других. Поддержкой сериализации других форматов в основном занимается коммьюнити. Автор библиотеки KToml рассказывает о деталях устройства и работы kotlinx.serialization и накидывает кучу советов по тому, как писать свои собственные сериализаторы.
Слайды доклада
Сколько можно заработать на книге про Android
Автор блога Effective Android, статьями из которого я регулярно делюсь, написал книгу про внутреннее устройство Jetpack Compose. С этого момента прошло уже полтора года, и он поделился своим опытом авторства.
Писать книгу про внутреннее устройство фреймворка довольно тяжело, потому что оно может меняться очень часто, и книгу вместе с ним придется обновлять. Для Compose, который только-только зарелизился, это особенно актуально.
Продажи принесли ему $32k за все время, но это до вычета налогов. Кроме этого, он еще смог привлечь спонсоров, которые принесли дополнительные $6.5k.
Автор блога Effective Android, статьями из которого я регулярно делюсь, написал книгу про внутреннее устройство Jetpack Compose. С этого момента прошло уже полтора года, и он поделился своим опытом авторства.
Писать книгу про внутреннее устройство фреймворка довольно тяжело, потому что оно может меняться очень часто, и книгу вместе с ним придется обновлять. Для Compose, который только-только зарелизился, это особенно актуально.
Продажи принесли ему $32k за все время, но это до вычета налогов. Кроме этого, он еще смог привлечь спонсоров, которые принесли дополнительные $6.5k.
Effective Android
Writing a technical book ✍️ 📖
My complete experience, learnings and earnings included 💸
Планы по улучшению поддержки Kotlin в IDE
Один из основных фокусов команды Kotlin на ближайшие полгода – переписывание IDE поддержки языка на новый К2 компилятор. Этот проект в первую очередь направлен на то, чтобы улучшить стабильность анализа кода и скорость навигации, автокомплишна и подсветки кода и в IDEA, и в Android Studio.
Первая публичная версия нового плагина для IDEA выйдет в июле 2023. Важный момент – первый релиз будет Lightweight версией, которая включает в себя только самые базовые IDE фичи:
🛠️Полноценная подсветка кода и Find Usages
🛠️Базовые автокомплишн и дебаггер
🛠️Основные рефакторинги и code insight фичи (go to declaration, parameter info и т.д.)
🛠️Самые частоиспользуемые инспекции
🛠️Поддержка мультиплатформы и gradle.kts
Старый и новый плагин какле-то время будут жить вместе, так что вы сможете выбирать, что вам важнее – полный список текущих IDE фичей или быстрый перфоманс.
Один из основных фокусов команды Kotlin на ближайшие полгода – переписывание IDE поддержки языка на новый К2 компилятор. Этот проект в первую очередь направлен на то, чтобы улучшить стабильность анализа кода и скорость навигации, автокомплишна и подсветки кода и в IDEA, и в Android Studio.
Первая публичная версия нового плагина для IDEA выйдет в июле 2023. Важный момент – первый релиз будет Lightweight версией, которая включает в себя только самые базовые IDE фичи:
🛠️Полноценная подсветка кода и Find Usages
🛠️Базовые автокомплишн и дебаггер
🛠️Основные рефакторинги и code insight фичи (go to declaration, parameter info и т.д.)
🛠️Самые частоиспользуемые инспекции
🛠️Поддержка мультиплатформы и gradle.kts
Старый и новый плагин какле-то время будут жить вместе, так что вы сможете выбирать, что вам важнее – полный список текущих IDE фичей или быстрый перфоманс.
YouTrack
First public release of the K2-based IntelliJ plugin : KTIJ-23988
Summary [The creation of the new Kotlin K2 compiler](https://youtrack.jetbrains.com/issue/KT-52604/Release-K2-Beta) is also aimed at improving the IDE experience. Performance and quality are the main focuses of the new product. By Q4'23, we are going to release…
Плагин с миникартой для IntelliJ
Во многих редакторах кода есть топовая фича – миникарта открытого сейчас файла. Она упрощает навигацию для тех, кому проще это делать визуально, а не по сигнатурам. В платформу IntelliJ фичу пока не втаскивают, поэтому вместо этого можете попробовать плагин CodeGlance.
Во многих редакторах кода есть топовая фича – миникарта открытого сейчас файла. Она упрощает навигацию для тех, кому проще это делать визуально, а не по сигнатурам. В платформу IntelliJ фичу пока не втаскивают, поэтому вместо этого можете попробовать плагин CodeGlance.
Вводное видео в CameraX
CameraX – новая Jetpack библиотека, которая берет на себя все взаимодействие с камерой и обработку эдж-кейсов, связанных с поведением разных девайсов.
Во вводном пятиминутном видео рассказывается про основные концепции библиотеки и сценарии, в которых она вам может пригодиться.
CameraX – новая Jetpack библиотека, которая берет на себя все взаимодействие с камерой и обработку эдж-кейсов, связанных с поведением разных девайсов.
Во вводном пятиминутном видео рассказывается про основные концепции библиотеки и сценарии, в которых она вам может пригодиться.
Проект iosched заархивирован
Ушла эпоха – iosched, приложение с расписанием Google I/O, которое работало как пример использования архитектурных рекомендаций Google, официально задепрекейчено и заархивировано. Вместо него будет обновляться Now in Android.
Ушла эпоха – iosched, приложение с расписанием Google I/O, которое работало как пример использования архитектурных рекомендаций Google, официально задепрекейчено и заархивировано. Вместо него будет обновляться Now in Android.
Релиз Android Studio Electric Eel
Вышла новая стабильная Android Studio поверх IntelliJ Platform 2022.1.1. Самые заметные изменения:
🎨Дизайн
- Compose Preview обновляются автоматически
- Возможность задать определенный девайс для Compose Preview
- Подсвечивание рекомпозиций в Layout Inspector
- Линтинг для XML лэйаутов
- Единая Problems Panel с репортингом о всех проблемах из разных тулов
🧱Сборка
- Улучшена производительность Gradle Sync, аж на 60%
- Build Analyzer показывает, как скачивание зависимостей влияет на билд
👀Тулинг
- Полностью обновленный Logcat
- Новое App Quality Insights окно, которое подтягивает всю информацию из Crashlytics
- Возможность создавать эмуляторы десктопа
- Мирроринг физического девайса прямо в Android Studio, в то же окно, где показывается эмулятор
Вышла новая стабильная Android Studio поверх IntelliJ Platform 2022.1.1. Самые заметные изменения:
🎨Дизайн
- Compose Preview обновляются автоматически
- Возможность задать определенный девайс для Compose Preview
- Подсвечивание рекомпозиций в Layout Inspector
- Линтинг для XML лэйаутов
- Единая Problems Panel с репортингом о всех проблемах из разных тулов
🧱Сборка
- Улучшена производительность Gradle Sync, аж на 60%
- Build Analyzer показывает, как скачивание зависимостей влияет на билд
👀Тулинг
- Полностью обновленный Logcat
- Новое App Quality Insights окно, которое подтягивает всю информацию из Crashlytics
- Возможность создавать эмуляторы десктопа
- Мирроринг физического девайса прямо в Android Studio, в то же окно, где показывается эмулятор
Как новая Android Studio ускорила импорт для Square
Одна из фичей, которые появились в Android Studio Electric Eel – parallel project import. Она особенно полезна для больших кодовых баз, состоящих из большого количества Gradle subprojects. Для Square ее использование ускорило импорт проекта на 60% – с 9 до 3.5 минут.
Одна из фичей, которые появились в Android Studio Electric Eel – parallel project import. Она особенно полезна для больших кодовых баз, состоящих из большого количества Gradle subprojects. Для Square ее использование ускорило импорт проекта на 60% – с 9 до 3.5 минут.
Coroutines и Project Loom
Инструкция по тому, как написать свой Dispatcher, который будет работать с Project Loom тредами, и с помощью которого можно писать неблокирующий код, и сравнение его производительности с
Инструкция по тому, как написать свой Dispatcher, который будет работать с Project Loom тредами, и с помощью которого можно писать неблокирующий код, и сравнение его производительности с
Dispatchers.IO
.Как сделать анимацию с помощью MotionLayout (туториал по ссылке)
MotionLayout – это контейнер, который позволяет просто создавать сложные анимации, для чего требуется лишь описать сцену.
Android-разработчик Павел Беловол рассказывает в своей статье на ХабрХабр, про свой опыт работы с MotionLayout на примере продакшн-задачи в онлайн-кинотеатре KION. Из статьи вы узнаете, где нужно использовать MotionLayout, а где лучше обойтись без него и писать код анимации самостоятельно.
Читать здесь.
MotionLayout – это контейнер, который позволяет просто создавать сложные анимации, для чего требуется лишь описать сцену.
Android-разработчик Павел Беловол рассказывает в своей статье на ХабрХабр, про свой опыт работы с MotionLayout на примере продакшн-задачи в онлайн-кинотеатре KION. Из статьи вы узнаете, где нужно использовать MotionLayout, а где лучше обойтись без него и писать код анимации самостоятельно.
Читать здесь.
Хабр
Как сделать анимацию с помощью MotionLayout
Привет, Хабр! Меня зовут Павел Беловол, я Android-разработчик на проекте онлайн-кинотеатра KION в МТС Digital . Это новая часть сериала о внедрении фичи Autoplay в KION, в которой я расскажу про свой...
Почему yaml – плохой формат
Скорее всего, до вас долетали обрывки споров про то, насколько хорошая идея использовать yaml для различных конфигов.
Все сводится к тому, что спецификация Yaml на порядок сложнее, чем JSON. Например, спека предусматривает 63 разных способа объявления multiline строк. Кроме того, она еще и значительно меняется от версии к версии.
Вот несколько примеров непредсказуемого поведения YAML конфигов:
*️⃣`- 22:22` в зависимости от версии парсера может быть прочитана как строка, а может – как число 1342.
*️⃣Некоторые символы считываются как строки, а некоторые оказываются зарезервированы под что-то еще. Например,
*️⃣Если где-то в конфиге встретится строчка
*️⃣Не стоит использовать
Скорее всего, до вас долетали обрывки споров про то, насколько хорошая идея использовать yaml для различных конфигов.
Все сводится к тому, что спецификация Yaml на порядок сложнее, чем JSON. Например, спека предусматривает 63 разных способа объявления multiline строк. Кроме того, она еще и значительно меняется от версии к версии.
Вот несколько примеров непредсказуемого поведения YAML конфигов:
*️⃣`- 22:22` в зависимости от версии парсера может быть прочитана как строка, а может – как число 1342.
*️⃣Некоторые символы считываются как строки, а некоторые оказываются зарезервированы под что-то еще. Например,
- *.png
– невалидный сниппет, так как * зарезервирована. А - !.git
будет считан, как пустая строка.*️⃣Если где-то в конфиге встретится строчка
- no,
она будет интерпретирована как false, а не как строка. У этого поведения есть даже свое имя – Norway problem, так как региональный код Норвегии, который часто можно встретить в таких конфигах, тоже no. Ах да, так ведет себя только самая новая версия yaml, что добавляет веселья.*️⃣Не стоит использовать
~,
так как это алиас для null.Ruudvanasseldonk
The yaml document from hell
As a data format, yaml is extremely complicated and it has many footguns. In this post I explain some of those pitfalls by means of an example, and I suggest a few simpler and safer yaml alternatives.
Уроки из реализации swipe to dismiss на Compose
Swipe to dismiss – довольно стандартная фича, реализация которой не должна занимать много времени. Тем не менее, автор статьи потратил три дня на дебаг нескольких неочевидных моментов, которыми и делится в статье.
Swipe to dismiss – довольно стандартная фича, реализация которой не должна занимать много времени. Тем не менее, автор статьи потратил три дня на дебаг нескольких неочевидных моментов, которыми и делится в статье.
Compose BOM для альфа версий компонентов
Недавно Google начал публиковать Gradle BOM для всех Compose зависимостей. Его использование освобождает вас от необходимости менеджерить все версии вручную.
Если вы хотите использовать в проекте не стабильные версии зависимостей, а альфа, первым получая все экспериментальные фичи, то можете переключиться на неофициальный автообновляемый BOM по ссылке.
Недавно Google начал публиковать Gradle BOM для всех Compose зависимостей. Его использование освобождает вас от необходимости менеджерить все версии вручную.
Если вы хотите использовать в проекте не стабильные версии зависимостей, а альфа, первым получая все экспериментальные фичи, то можете переключиться на неофициальный автообновляемый BOM по ссылке.
GitHub
GitHub - chrisbanes/compose-bom: Compose BOM (bill of materials) - alpha edition
Compose BOM (bill of materials) - alpha edition. Contribute to chrisbanes/compose-bom development by creating an account on GitHub.