tl;dr legal – опенсорсные лицензии простым языком
Если вы имеете дело с опенсорсными лицензиями – либо принимаете решения о затаскивании зависимостей в проект, либо распространяете свою библиотеку, сохраните себе этот сайт. Tl;dr Legal – каталог всех опенсорсных лицензий с разбором их требований простым языком.
Если вы имеете дело с опенсорсными лицензиями – либо принимаете решения о затаскивании зависимостей в проект, либо распространяете свою библиотеку, сохраните себе этот сайт. Tl;dr Legal – каталог всех опенсорсных лицензий с разбором их требований простым языком.
Простота API задает его элегантность
На примере интерфейса
На примере интерфейса
Provider
, который активно используется в Dagger, автор показывает, как очень простое по своей сути архитектурное решение позволяет вынести управление жизненным циклом всех сущностей в детали имплементации.Simple APIs are elegant APIs
Simple APIs are elegant APIs :: Ryan Harter
I recently gave a presentation about how Dagger works under the hood, and I was once again struck by the elegance of the `javax.inject.Provider` interface. The interface is so simple it almost seems useless, but it's also incredibly flexible, and forms the…
Lottielab – среда для создания Lottie анимаций
Вышла Beta версия приложения-редактора Lottie анимаций. Дизайн можно импортировать из Figma, есть куча готовых настраиваемых шаблонов анимаций
Вышла Beta версия приложения-редактора Lottie анимаций. Дизайн можно импортировать из Figma, есть куча готовых настраиваемых шаблонов анимаций
Lottielab
Lottielab | Create and Edit Lottie Animations
Create and ship animations to your products faster. Bring your websites and apps to life with the simplest editor for Lottie animations.
Android-разработчики, Ozon приглашает на месяц Mobile Offer
Что по стеку: Kotlin Coroutines, Dagger2, Jetpack Compose, Architecture Components (View Model, Room, etc.), Clean Architecture, UDF, Single Activity, Jetpack Navigation, Unit, Snapshot, UI-тесты.
Что по проектам: основное приложение для покупателей и B2B для продавцов. В ближайших планах разработка ещё двух приложений с нуля, о них — на интервью😉
Выбор команды за тобой!
Подать заявку и уточнить подробности можно на этом лендинге.
Что по стеку: Kotlin Coroutines, Dagger2, Jetpack Compose, Architecture Components (View Model, Room, etc.), Clean Architecture, UDF, Single Activity, Jetpack Navigation, Unit, Snapshot, UI-тесты.
Что по проектам: основное приложение для покупателей и B2B для продавцов. В ближайших планах разработка ещё двух приложений с нуля, о них — на интервью
Выбор команды за тобой!
Подать заявку и уточнить подробности можно на этом лендинге.
Please open Telegram to view this post
VIEW IN TELEGRAM
Вышел Compose Multiplatform 1.5.0
Посмотрите, какой шикарный релиз!
👉Новые API, доступные в common коде: Dialogs, Popups, WindowInsets.
👉Скроллинг, который работает так же, как в iOS.
👉Поддержка DynamicType в iOS.
👉Для управления ресурсами больше не требуется CocoaPods.
👉Стабилизирован тестовый фреймворк для десктопа.
Уже пробовали Compose Multiplatform? Расскажите в комментах, как именно!
Посмотрите, какой шикарный релиз!
👉Новые API, доступные в common коде: Dialogs, Popups, WindowInsets.
👉Скроллинг, который работает так же, как в iOS.
👉Поддержка DynamicType в iOS.
👉Для управления ресурсами больше не требуется CocoaPods.
👉Стабилизирован тестовый фреймворк для десктопа.
Уже пробовали Compose Multiplatform? Расскажите в комментах, как именно!
The JetBrains Blog
Compose Multiplatform 1.5.0 Release | The Kotlin Blog
As of today, Compose Multiplatform 1.5.0 is available for you to use. Check out the highlights from this release.
Konsist – линтер для архитектуры
Konsist – новый линтер с доступом к PSI, который позволяет писать довольно сложные архитектурные чеки, например:
👉Наличие определенных суффиксов или префиксов у классов, реализующих интерфейс.
👉Расположение классов в определенном пакете в зависимости от аннотации.
👉Ограничение доступа классам из определенного пакета к другим пакетам.
👉У всех конструкторов параметры отсортированы по алфавиту.
Konsist – новый линтер с доступом к PSI, который позволяет писать довольно сложные архитектурные чеки, например:
👉Наличие определенных суффиксов или префиксов у классов, реализующих интерфейс.
👉Расположение классов в определенном пакете в зависимости от аннотации.
👉Ограничение доступа классам из определенного пакета к другим пакетам.
👉У всех конструкторов параметры отсортированы по алфавиту.
Medium
Introducing Konsist: A Cutting-Edge Kotlin Linter
Linters are vital tools in software development, helping to enforce code standards and best practices across the code base. By analysing…
Сколько денег приносят пользователи iOS и Android
Обновленная аналитика по тому, сколько всего пользователей покупает что-то в App Store и Google Play, и сколько денег они приносят.
👉В мире 650 миллионов активных пользователей App Store и 2.5 миллиарда активны пользователей Google Play.
👉Активный пользователь App Store тратит в месяц 10.4$. Google Play – 1.4$.
👉Получается, пользователи вашего приложения на iOS в среднем в 7.4 раз ценнее, чем на Android.
Обновленная аналитика по тому, сколько всего пользователей покупает что-то в App Store и Google Play, и сколько денег они приносят.
👉В мире 650 миллионов активных пользователей App Store и 2.5 миллиарда активны пользователей Google Play.
👉Активный пользователь App Store тратит в месяц 10.4$. Google Play – 1.4$.
👉Получается, пользователи вашего приложения на iOS в среднем в 7.4 раз ценнее, чем на Android.
Asymco
The Value of a Customer
As I remember it, at least 10 years ago, I began to hear anecdotes from developers who built apps for both iOS and Android about their economics. The story is that they tended to have twice as many…
Нужно ли делать онбординг в приложение коротким
Мысль о том, что чем быстрее и эффективнее проходит онбординг нового пользователя в приложение, тем лучше для всех, кажется абсолютно очевидной.
Но это не всегда так. Как рассказывается в статье, в некоторых случаях длинный и сложный онбординг из 50 экранов, занимающий 10 минут времени, может активировать пользователей существенно лучше.
Мысль о том, что чем быстрее и эффективнее проходит онбординг нового пользователя в приложение, тем лучше для всех, кажется абсолютно очевидной.
Но это не всегда так. Как рассказывается в статье, в некоторых случаях длинный и сложный онбординг из 50 экранов, занимающий 10 минут времени, может активировать пользователей существенно лучше.
Revenuecat
Why your onboarding experience might be too short
There's a trend for health & fitness apps to use a long onboarding experience. Can your app benefit from the same?
Fresh Code 2023 – грантовая программа для разработчиков мини-приложений
VK Mini Apps открывает регистрацию на традиционную грантовую программу, которая продлится два месяца, а уже в декабре создатели лучших 25 сервисов смогут получить гранты по 200 000 рублей!
👉 создайте оригинальное мини-приложение в тематиках программы;
👉 участвуйте в питчингах с экспертами;
👉 опубликуйте его ВКонтакте;
👉 подайте заявку на грант;
👉 дождитесь итогов.
Подробности и форма для участия – здесь
VK Mini Apps открывает регистрацию на традиционную грантовую программу, которая продлится два месяца, а уже в декабре создатели лучших 25 сервисов смогут получить гранты по 200 000 рублей!
👉 создайте оригинальное мини-приложение в тематиках программы;
👉 участвуйте в питчингах с экспертами;
👉 опубликуйте его ВКонтакте;
👉 подайте заявку на грант;
👉 дождитесь итогов.
Подробности и форма для участия – здесь
Как работают текстовые кодировки
Записали топовый выпуск Подлодки про разные неочевидные аспекты устройства текстовых кодировок и работы с ними. Больше всего, конечно, про Unicode. Если хотите узнать, почему в любом приложении, работающем с текстом, есть баги – обязательно слушайте!
По мотивам подкаста Никита Прокопов написал еще и шикарную статью, в которой подбил основные тезисы.
Записали топовый выпуск Подлодки про разные неочевидные аспекты устройства текстовых кодировок и работы с ними. Больше всего, конечно, про Unicode. Если хотите узнать, почему в любом приложении, работающем с текстом, есть баги – обязательно слушайте!
По мотивам подкаста Никита Прокопов написал еще и шикарную статью, в которой подбил основные тезисы.
podlodka.io
Podlodka #339 – Кодировки текста
There is no such thing as a plain text. Мы позвали в гости Никиту Прокопова, автора Fira Code, и разработчика сразу нескольких UI фреймворков, чтобы поговорить о том, как компьютеры работают с текстом. Тема большая, поэтому первый выпуск мы решили посвятить…
Интерактивный гайд по CRDT
Лучший пост недели. Очень просто и подробно разбираются принципы работы CRDT, сразу в виде кода и интерактивного плейграунда. Статья про JavaScript, но все сниппеты кода очень простые, и легко переносятся на Kotlin.
Лучший пост недели. Очень просто и подробно разбираются принципы работы CRDT, сразу в виде кода и интерактивного плейграунда. Статья про JavaScript, но все сниппеты кода очень простые, и легко переносятся на Kotlin.
Jakelazaroff
An Interactive Intro to CRDTs | jakelazaroff.com
CRDTs don't have to be all academic papers and math jargon. Learn what CRDTs are and how they work through interactive visualizations and code samples.
Релиз Emcee 20
Emcee – раннер для параллельного тестирования, который разрабатывает команда AvitoTech. С его помощью можно очень сильно ускорить прогон тестов – например, в самом Авитотех 600 UI тестов прогоняются 50 минут вместо 41 часа. Emcee можно использовать как в облаке, так и на своих машинах.
Так вот, на днях у ребят вышел большой релиз 20. В нем реализовали новый способ запуска тестов через CLI и запись видео прогона тестов. А в клаудную версию добавили поддержку Appium и интеграцию с GitHub Actions.
Короче говоря, если у вашего проекта много тестов, и вы хотите ускорить время их прогона – зайдите на сайт ребят и сами посмотрите все детали.
Реклама ООО "Авито Тех", ИНН 9710089440 erid: LdtCKHR4V
Emcee – раннер для параллельного тестирования, который разрабатывает команда AvitoTech. С его помощью можно очень сильно ускорить прогон тестов – например, в самом Авитотех 600 UI тестов прогоняются 50 минут вместо 41 часа. Emcee можно использовать как в облаке, так и на своих машинах.
Так вот, на днях у ребят вышел большой релиз 20. В нем реализовали новый способ запуска тестов через CLI и запись видео прогона тестов. А в клаудную версию добавили поддержку Appium и интеграцию с GitHub Actions.
Короче говоря, если у вашего проекта много тестов, и вы хотите ускорить время их прогона – зайдите на сайт ребят и сами посмотрите все детали.
Реклама ООО "Авито Тех", ИНН 9710089440 erid: LdtCKHR4V
Coil с поддержкой Compose Multiplatform
Вышла Alpha версия Coil 3.0.0 с поддержкой Compose Multiplatform! Wasm таргет будет работать, когда выйдет Ktor с его поддержкой.
Вышла Alpha версия Coil 3.0.0 с поддержкой Compose Multiplatform! Wasm таргет будет работать, когда выйдет Ktor с его поддержкой.
GitHub
coil/CHANGELOG.md at main · coil-kt/coil
Image loading for Android and Compose Multiplatform. - coil-kt/coil
Обновленный роадмап Kotlin
Команда Kotlin поделилась своими планами на ближайший год. Из самого интересного:
👉Прямой экспорт Kotlin в Swift
👉Поддержка Wasm Component model, что даст интероп с Wasm библиотеками, написанными на любом языке
👉Одинаковая схема инлайнинга для JVM и мультиплатформы
👉Поддержка SwiftPM
👉Поддержка Gradle project isolation
👉Релиз beta версии kotlinx-datetime
Я разобрал обновление роадмапа чуть подробнее у себя в Твиттере, так что можете подписываться!
Команда Kotlin поделилась своими планами на ближайший год. Из самого интересного:
👉Прямой экспорт Kotlin в Swift
👉Поддержка Wasm Component model, что даст интероп с Wasm библиотеками, написанными на любом языке
👉Одинаковая схема инлайнинга для JVM и мультиплатформы
👉Поддержка SwiftPM
👉Поддержка Gradle project isolation
👉Релиз beta версии kotlinx-datetime
Я разобрал обновление роадмапа чуть подробнее у себя в Твиттере, так что можете подписываться!
Kotlin Help
Kotlin roadmap | Kotlin
Integrating Google Sign-In into Kotlin Multiplatform
Многие начинающие разработчики начинают писать приложение с кастомной авторизации (и часто на этом заканчиваются). Но вместо этого лучше взять какой-нибудь популярный способ, использовать готовый SDK и пойти дальше делать фичи.
Автор статьи берет для этого Compose + Kotlin Multiplatform, нативные библиотеки Google Sign-In для Android и iOS, собирает всё вместе в простой UI и приправляет сниппетами кода.
(За пост в канал спасибо @Phansier)
Многие начинающие разработчики начинают писать приложение с кастомной авторизации (и часто на этом заканчиваются). Но вместо этого лучше взять какой-нибудь популярный способ, использовать готовый SDK и пойти дальше делать фичи.
Автор статьи берет для этого Compose + Kotlin Multiplatform, нативные библиотеки Google Sign-In для Android и iOS, собирает всё вместе в простой UI и приправляет сниппетами кода.
(За пост в канал спасибо @Phansier)
Medium
Integrating Google Sign-In into Kotlin Multiplatform
In this blog post I will share with you how to implement Google Sign-In in Kotlin Multiplatform. As we go step by step, we will start…
Android, Bluetooth and BLE the modern way: a complete guide
Каждый разработчик рано или поздно сталкивается с тем, что нужно сделать интеграцию через Bluetooth c каким-нибудь девайсом. Погружение в этот ад несовместимости и неотзывчивого API оставляет неизгладимое впечатление на всю жизнь. В статье разбираются основные отличия классического Bluetooth и BLE:
👉 BLE был создан как альтернатива, помогающая экономить заряд. (Привет носимые девайсы!)
👉 BLE и Bluetooth не совместимые стандарты
👉 В Android для работы с Bluetooth нужно держать 6 разрешений (для поддержки версий от Android 4.4)
👉 Данные хранятся в characteristics, откуда удобно можно тащить значения сенсоров девайса
👉 BLE медленный, не нагружайте его слишком частыми запросами
👉 Если во время тестирования что то сломалось - попробуйте выключить и включить Bluetooth программно.
(За пост в канал спасибо @Lamprof)
Каждый разработчик рано или поздно сталкивается с тем, что нужно сделать интеграцию через Bluetooth c каким-нибудь девайсом. Погружение в этот ад несовместимости и неотзывчивого API оставляет неизгладимое впечатление на всю жизнь. В статье разбираются основные отличия классического Bluetooth и BLE:
👉 BLE был создан как альтернатива, помогающая экономить заряд. (Привет носимые девайсы!)
👉 BLE и Bluetooth не совместимые стандарты
👉 В Android для работы с Bluetooth нужно держать 6 разрешений (для поддержки версий от Android 4.4)
👉 Данные хранятся в characteristics, откуда удобно можно тащить значения сенсоров девайса
👉 BLE медленный, не нагружайте его слишком частыми запросами
👉 Если во время тестирования что то сломалось - попробуйте выключить и включить Bluetooth программно.
(За пост в канал спасибо @Lamprof)
Medium
Android, Bluetooth and BLE the modern way: a complete guide
Bluetooth is an immensely fun technology to work with. Once you learn how to search for and communicate with devices, you will be surprised…
Mastering Lazy Lists in Jetpack Compose with Data Classes and MVI
Один из самых частых кейсов в разработке приложения - список с данными. Прибавьте к нему тягу к Compose, unidirectional data flow (UDF), архитектурам (aka MVI), и получите задачу, которую решает сегодняшняя статья.
Идеи Lazy Lists отличаются от RecyclerView и автор приводит связи между ними. И, хотя пример не использует библиотек для пагинации, он подойдет для понимания принципа построения простых списков на Compose с UDF-архитектурой.
(За пост в канал спасибо @Phansier)
Один из самых частых кейсов в разработке приложения - список с данными. Прибавьте к нему тягу к Compose, unidirectional data flow (UDF), архитектурам (aka MVI), и получите задачу, которую решает сегодняшняя статья.
Идеи Lazy Lists отличаются от RecyclerView и автор приводит связи между ними. И, хотя пример не использует библиотек для пагинации, он подойдет для понимания принципа построения простых списков на Compose с UDF-архитектурой.
(За пост в канал спасибо @Phansier)
Medium
Mastering Lazy Lists in Jetpack Compose with Data Classes and MVI
This post explores how to structure and utilize data classes to build clean and efficient Lazy List composables within an MVI pattern.
Обновление Google Cast
Гугл каст существует с 2013 года, а мы получаем очередное мажорное обновление. Разработчикам онлайн-кинотеатров приготовиться!
👉 Output Switcher Больше контролов для управления потоком музыки или звука!
👉 Cast to devices nearby Теперь между гугловыми девайсами проще переключаться
👉 Cast from short-form video apps Поддержка трансляции коротких видео
👉 Persistent Cast icon Обновили SDK, теперь пользователи будут меньше теряться в приложениях, где есть поддержка хромкаст
👉 Shaka Player Новый плеер для гугл каст приемников
👉 Все больше поддерживаемых устройств
(За пост в канал спасибо @Lamprof)
Гугл каст существует с 2013 года, а мы получаем очередное мажорное обновление. Разработчикам онлайн-кинотеатров приготовиться!
👉 Output Switcher Больше контролов для управления потоком музыки или звука!
👉 Cast to devices nearby Теперь между гугловыми девайсами проще переключаться
👉 Cast from short-form video apps Поддержка трансляции коротких видео
👉 Persistent Cast icon Обновили SDK, теперь пользователи будут меньше теряться в приложениях, где есть поддержка хромкаст
👉 Shaka Player Новый плеер для гугл каст приемников
👉 Все больше поддерживаемых устройств
(За пост в канал спасибо @Lamprof)
Android Developers Blog
What's new with Google Cast?
We've launched new features to make it more seamless to cast on Android devices like TV's, speakers, smart displays, and even the latest Pixel Tablet
Разбираем обновление Jetpack Compose 1.6
Compose обновился до версии 1.6, а за ним и Compose Multiplatform выпустил бета-релиз
💪 Увеличена производительность. Проблемы с производительностью списков постепенно решаются. Бенчмарки показывают 20% роста производительности при пролистывании и 12% ускорение времени запуска компонентов
💪 Улучшена работа с рекомпозицией. Преобразование remember во время компиляции в пользу производительности. Теперь ваши брейкпоинты в remember могут быть проигнорированы, если компилятор решит что remember тут не нужен
💪 Strong skipping mode. Экспериментальный режим, который обещает более предсказуемую работу с рекомпозицией для разработчиков
🖐 Поддержка нелинейного увеличения шрифта, а также удобная работа с отступами у текста
🖐 Поддержка Drag and drop. Полезно, когда ваше приложение запускают в сплит-скрине с другим
Пробежался по изменениям в альфа версиях сопутствующих библиотек:
👉 Теперь тесты для Compose не зависят от JUnit и могут быть запущены сразу для всех платформ!
👉 В версии 1.7 появится поддержка кликабельных ссылок внутри текста
👉 В следующей версии камеры добавят поддержку оверлея, что должно быть в разы быстрее и эффективнее, чем использование сторонней библиотеки
Compose обновился до версии 1.6, а за ним и Compose Multiplatform выпустил бета-релиз
💪 Увеличена производительность. Проблемы с производительностью списков постепенно решаются. Бенчмарки показывают 20% роста производительности при пролистывании и 12% ускорение времени запуска компонентов
💪 Улучшена работа с рекомпозицией. Преобразование remember во время компиляции в пользу производительности. Теперь ваши брейкпоинты в remember могут быть проигнорированы, если компилятор решит что remember тут не нужен
💪 Strong skipping mode. Экспериментальный режим, который обещает более предсказуемую работу с рекомпозицией для разработчиков
🖐 Поддержка нелинейного увеличения шрифта, а также удобная работа с отступами у текста
🖐 Поддержка Drag and drop. Полезно, когда ваше приложение запускают в сплит-скрине с другим
Пробежался по изменениям в альфа версиях сопутствующих библиотек:
👉 Теперь тесты для Compose не зависят от JUnit и могут быть запущены сразу для всех платформ!
👉 В версии 1.7 появится поддержка кликабельных ссылок внутри текста
👉 В следующей версии камеры добавят поддержку оверлея, что должно быть в разы быстрее и эффективнее, чем использование сторонней библиотеки
Android Developers Blog
What’s new in the Jetpack Compose January ’24 release
we’re releasing version 1.6 of Jetpack Compose, Android's modern, native UI toolkit, focusing on performance and efficiency improvements.
Динамическая иконка приложения в Android
Редизайн следует по пятам, и не знаете, какую иконку выбрать? Готовитесь изменить дизайн приложения к особому событию? А может быть, вы хотите подбодрить пользователя за то, что он приобрел вашу подписку?
👉 Добавляем activity-alias к основному activity с новой иконкой, столько сколько хотим вариантов иконок
👉 Используем PackageManager и переключаем setComponentEnabledSetting для необходимого activity-alias по его android:name
👉 Необходимо вернуть иконку пользователю? Обращаемся по основному activity, где находится стандартная иконка
👉 Можно независимо переключать иконки для пользователя благодаря BroadcastReceiver в любой момент времени
Редизайн следует по пятам, и не знаете, какую иконку выбрать? Готовитесь изменить дизайн приложения к особому событию? А может быть, вы хотите подбодрить пользователя за то, что он приобрел вашу подписку?
👉 Добавляем activity-alias к основному activity с новой иконкой, столько сколько хотим вариантов иконок
👉 Используем PackageManager и переключаем setComponentEnabledSetting для необходимого activity-alias по его android:name
👉 Необходимо вернуть иконку пользователю? Обращаемся по основному activity, где находится стандартная иконка
👉 Можно независимо переключать иконки для пользователя благодаря BroadcastReceiver в любой момент времени