the developer diary

14
Public channel
Open in app
the developer diary
236
#library #kotlin #coroutines #channels #flow Вот и адепты Rx потихоньку переходят на сторону channels, а именно flow. Разработчик известный своими libraries для Rx, создал library для flow. Она включает в себя как простые расширения в виде каких либо трансформаций, а также полноценные решения, которые скорее всего взяты из того же Rx, а именно PublishSubject и другие. Необходимо посмотреть реализ ...
the developer diary
231
#article #android #compose #ui Статья о Jetpack Compose, кратко и понятно описывает что из себя представляет Compose на простых примерах. Также включает в себя ссылки на более подробный разбор. https://habr.com/ru/post/461101/
the developer diary
239
#tools #idea Интересная возможность в IDEA, которая позволяет инжектить определенный язык, например как в примере с RegExp, который прямо в IDEA позволяет проверить готовое регулярное выражение. https://twitter.com/intellijidea/status/1152224332799778821?s=09
the developer diary
223
#kotlin #coroutines #learn Неплохой мини курс по coroutines, который позволяет сразу опробовать примеры на практике. За основу взяты обычные походы в сеть через Retrofit. Больше всего интересен раздел channels. https://twitter.com/kotlin/status/1148145540627959808?s=09
the developer diary
236
#article #kotlin #library #serialization Статья о сериализации sealed classes, интересная возможность, которую добавили в Kotlin.serialization это @Polymorphic. Необходимо посмотреть поближе. https://ahsensaeed.com/sealed-classes-kotlinx-serialization-deserialization/
the developer diary
253
#multiplatform #db #library Статья от John O'Reilly про persisting данных при разработке под Android и под IOS. Рассматривает работу с SQLDelight. Стоит посмотреть поближе. https://johnoreilly.dev/posts/sqldelight-multiplatform/
the developer diary
280
#kotlin #retrofit #coroutines #library Наконец-то. Retrofit теперь поддерживает suspend функции, можно не писать свои extensions над Call, либо использовать адаптер с Deferred. Здесь же и миграция с Deferred адаптера. https://twitter.com/JakeWharton/status/1136339670302973952?s=09
the developer diary
270
#article #kotlin #native #multiplatform Интересная статья по Kotlin Native/Multiplatform, точнее это сборник опыта работы с Kotlin Multiplatform за 10 месяцев. В итоге все это еще сыро, но любопытно. Все еще много нюансов при разработке под IOS, например нет возможности использовать в interface suspend functions, что логично конечно, так как этого нет в objC. http://bit.ly/medium21Native
the developer diary
282
#kotlin #code #advice #static Часто вижу ошибку, когда используют companion object вместо object. Не следует делать так: `class DateUtils { companion object { fun minutesInMs(minutes: Int): Int { return minutes * 60 * 1000 } fun hoursInMs(hours: Int): Int { return hours * minutesInMs(60) } } }` По той причине, что создается 2 класс ...
the developer diary
299
#kotlin #coroutines #flow #code Разработчик из Square открыл в общий доступ несколько интересных operators для Flow, не смотря на то, что Flow еще находится в стадии Preview. Реализовано на Kotlin MPP. https://github.com/zach-klippenstein/flow-operators
the developer diary
311
#kotlin #coroutines #channels #flow Хорошая статья от Романа Елизарова про дизайн Flows из coroutines. В общем случае 2 простых интерфейса, которые содержат всего по одному методу, то есть SAM интерфейсы. Выглядит просто и наглядно. https://medium.com/@elizarov/simple-design-of-kotlin-flow-4725e7398c4c
the developer diary
310
#android #performance #memory Интересная статья о том как Яндекс оптимизировали свой Launcher по памяти для Android Go. Переход на IntDef и оптимизированные коллекции(SparseArray и т.д) дает не такой большой выхлоп, как ленивая инициализация невидимых View и библиотек, а также уход от мульти процессов. https://habr.com/ru/company/yandex/blog/448966/
the developer diary
306
#kotlin #db #coroutines #library Flows были опубликованы совсем недавно, но компания Square уже успели написать extensions для них в библиотеке SQLDelight. Как-нибудь стоит попробовать ее. https://twitter.com/JakeWharton/status/1119263632871907328?s=19
the developer diary
305
#kotlin #di В KEEP появилось интересное предложение + реализация, о compile time dependency resolution. Необходимо посмотреть поближе. https://github.com/Kotlin/KEEP/blob/46e6a347432d868635e9c6161ca332581315b185/proposals/compile-time-dependency-resolution.md
the developer diary
313
#article #advice #kotlin Неплохая статья о различии interfaces и abstract classes именно в Kotlin. Если кратко, то именно в Kotlin есть возможность использовать properties вместо consts. В статье override происходит все также в property, но никто не запрещает делать как arguments для constructor. Как пример: `interface Address { val type: AddressType } data class ShortAddress( override ...
the developer diary
319
#article #kotlin #coroutines #flow Отличная статья от Roman Elizarov, про flows (cold streams) в coroutines, которые появились в новой альфа версии. Он их сравнивает с sequences и это довольно интересное сравнение. Суть в том, что как и sequence flow начнет работу только после terminal operation. https://link.medium.com/qrUPDTBPJV
the developer diary
318
#article Хороший перевод статьи, которая прямо вываливает всю правду на тебя. А ведь и правда 4 Гб против ~6 Гб. Смотря на последние тулзы и софт, думаешь и ради этого говна нанимают олимпиадников? "Не нужно быть гением, чтобы писать быстрые программы. Здесь нет какой-то магии. Единственное, что требуется, — это не строить софт на базе огромной кучи дерьма, которую поставляют современные инстру ...
the developer diary
326
#article #android #version Представили новую бету Android Q, Beta 2. В ней появились так называемые bubbles, новая функциональность для notification. Улучшили sharesheet. Добавили Foldables emulator. https://android-developers.googleblog.com/2019/04/android-q-beta-2-update.html?m=1
the developer diary
341
#tools #idea Вышла новая версия IntelliJ IDEA 2019.1. Очень много интересных фич завезли, например: - для Java 12 добавили поддержку switch expression (наконец-то в Java это сделали) - теперь можно дебажить приложение, которое запущено в Docker container! - добавили shelf, для недавно удаленных файлов, что бы восстановить их - теперь можно удобно делать cherry-pick в самой IDEA, через log - при к ...
the developer diary
341
#kotlin #coroutines Выпустили новую альфа версию Coroutines, 1.2.0-alpha. Приличное количество исправлений и улучшений, например: - Улучшили работу с Dispatcher.Main - Опубликовали CompletableJob - Выпустили в stable новые scopes и dispatchers - Добавили проверку на cancel при входе в withContext - и многое другое https://github.com/Kotlin/kotlinx.coroutines/releases/tag/1.2.0-alpha
the developer diary
346
#kotlin #java #collections Если в проекте есть Java и Kotlin, а в местах где Java code необходимо работать с коллекциями, можно вместо streams использовать Collections extensions из kotlin-stdlib. Например, так: https://twitter.com/relizarov/status/1109073169728655360?s=09
the developer diary
357
#koin #kotlin #di Вышла новая версия Koin, пока бета, в ней ускорили работу ещё в несколько раз. Это отличные результаты. https://twitter.com/arnogiu/status/1107308749465796610?s=19
the developer diary
365
#doc #android #version В новой версии Q, есть много интересных новшеств. Например: - Появилась settings panel, которая позволяет получить быстрый доступ к настройкам, не переводя пользователя на сам экран настроек - Увеличили покрытие nullability annotations в SDK, это говорит о том, что Google продолжает делать Kotlin friendly SDK - Добавили возможность запуска embedded DEX code из APK - Улучши ...
the developer diary
369
#article #kotlin #collections Объяснение, что такое sequence в Kotlin на пальцах, а точнее на мелках. Хорошо отображено, в чем именно заключается их полезность. https://typealias.com/guides/kotlin-sequences-illustrated-guide/
the developer diary
368
#article #kotlin #null Отличная статья о том, что не нужно избегать null, так как в некоторых случаях это приводит к overhead. Есть хороший пример применения Elvis оператора: `user :? return` Ещё один который делает shadow для переменной: `val user = user :? return` Также в этой статье ниже есть ссылка на статью от Романа Елизарова, тоже про null. https://handstandsam.com/2019/02/24/when-yo ...
the developer diary
347
#article #kotlin #inline Тот случай, когда необходимо смотреть Java bytecode, что бы не потерять в performance. Статья про то, что compiler в некоторых моментах делает autoboxing с 'inline classes'. https://typealias.com/guides/inline-classes-and-autoboxing/
the developer diary
358
#kotlin #java #stream #coroutines Провел тестирование скорости работы parallel coroutines и parallel stream, брал list из 1000 Long, задержку ставил в 10 ms. Все это на MacBook (17, full). Результаты следующие: - parallel coroutines в среднем за 85 ms. - parallel stream в среднем за 1450 ms. https://gist.github.com/Namazed/ad7d226e4e02027cf438042415e0d906
the developer diary
334
#android #library #design Взяли и переписали ViewPager, view pager 2.0. Спустя столько лет они все таки добавили поддержку RTL. https://developer.android.com/jetpack/androidx/releases/viewpager2#1.0.0-alpha01
the developer diary
320
#library #kotlin #coroutines Компания Epam опубликовала библиотеку для coroutines, которая содержит в себе полезные extensions, такие как: zip, concat, map и так далее. https://github.com/epam/CoroutinesExtensions
the developer diary
330
#kotlin #coroutines Краткое описание самых важных элементов корутин.
the developer diary
324
#advice #kotlin #coroutines Если необходимо сделать suspend lambda, достаточно просто прописать suspend перед ней. Пример: class Test(val action: suspend (TestValue) -> Unit) Теперь когда будет вызываться invoke этой lambda, необходимо также проставить методу, в котором вызывается, suspend, либо обернуть в корутину (launch, async).
the developer diary
339
#article #kotlin #inline Вышла новая версия Kotlin 1.3.20. В ней завезли поддержку inline function для Inline classes, добавили поддержку Gradle parallel и многое другое. https://blog.jetbrains.com/kotlin/2019/01/kotlin-1-3-20-released
the developer diary
339
#news #kotlin #google По утверждению твита одного из работников Google, Kotlin с 22 января официальный язык для разработки приложений внутри Google. https://twitter.com/jmslau/status/1087827632752738304
the developer diary
335
#article #android #di #dagger В Android Pie (API 28) появилась возможность делать inject зависимостей в constructor компонентам android, таким как Activity, Service и т.д. В общем всем тем, которые описываем в AndroidManifest. Все это благодаря AppComponentFactory. К сожалению, это пока доступно только с API 28. Ниже статья в которой есть подробный пример как это сделать + ссылка на доку в которо ...
the developer diary
323
#article #kotlin #db #library #inline Jake опубликовал статью в своем блоге, о том, как inline classes могут помочь при создании Ids для DB таблиц. Также недавно SQLDelight, кроссплатформенная библиотека от square, достигла версии 1.0. https://jakewharton.com/inline-classes-make-great-database-ids/ https://twitter.com/kotlin/status/1083402424923144194?s=19
the developer diary
317
#news Хорошие новости, теперь GitHub даёт возможность создавать private репозитории бесплатно и без ограничений по количеству. https://blog.github.com/2019-01-07-new-year-new-github/
the developer diary
310
#di #kotlin #library Основная идея DI framework Koin, состоит из трёх пунктов.
the developer diary
325
#android #db #performance Интересная статья о увеличении производительности SQLite. Автор советует использовать вместо insert, execSQL (несмотря на то, что в доке Android это делать не советуют), что бы избежать проседания в производительности из за абстракций. Также есть предложение делать запись более крупными пачками (до 999). Все предложенные идеи подкрепляются замерами. https://medium.com/@ ...
the developer diary
294
#android #library Новый релиз androidX принес интересные изменения: 1. Немного поправили API notification, теперь методы работы с channels доступны в Compat версии. 2. Сделали deprecated LocalBroadcastManager 3. Все больше добавляют поддержку Kotlin фич, добавили coroutine scope для ViewModel, а также поддержку Kotlin delegate. 4. Появилось интересное API SavedState, которое как я понимаю должно ...
the developer diary
297
#article #kotlin #d8 #r8 Отличная статья от Jake Wharton, описывающая, как R8 преобразует companion object в Java bytecode. Благодаря R8, теперь не будет создаваться оверхед в виде Companion inner classes. https://jakewharton.com/r8-optimization-staticization/
the developer diary
303
#advice #android #graphic #pain В общем есть проблема при отрисовки длинных горизонтальных Bitmap на Canvas (~ 5к pixels). Они просто не отображаются. Такая проблема не на всех девайсах (получилось ее воспроизвести на LG Nexus 5, API 23). Если делаем точно такой же Bitmap только в этот раз длинный вертикальный, то проблема исчезает. К сожалению, глубже заглянуть не получилось, так как дальше в к ...
the developer diary
290
#android #library В новой альфе androidX есть два интересных момента касающиеся VectorDrawable. Первый это то что теперь в AppCompatTextView не нужно делать дополнительный layer, для поддержки vector в CompoundDrawable. Второе это появилась поддержка ColorStateLists для VectorDrawable. https://developer.android.com/jetpack/androidx/androidx-rn#2018-dec-03
the developer diary
287
#article #android #design #performance А вот и статья с замерами производительности ConstraintLayout vs Default layouts, на простых кейсах. Как и ожидалось FrameLayout и LinearLayout быстрее constraint, в одном из кейсов RelativeLayout также быстрее Constraint. Замеры происходили на первой версии ConstraintLayout, интересно насколько эти замеры подходят для второй версии. https://android.jlels ...
the developer diary
270
#kotlin #di #library Вышла альфа второй версии Koin. Он стал быстрее, причем приличный прирост, но все таки до dagger2 далеко на простых кейсах. В который раз уже поменялся DSL старта. Необходимо посмотреть сколько он несёт методов с собой в этой версии. https://github.com/InsertKoinIO/koin/issues/298
the developer diary
278
#article #android #design В ConstraintLayout v2 появились States. Интересная фича, которая позволяет описать смену state view в xml и быстро переключаться программно. Необходимо посмотреть поближе. https://riggaroo.co.za/constraintlayout-constraintlayoutstates/