Попробовал, наконец, классную математическую настольную игру "Машина Тьюринга".
На самом деле не столько игра, сколько головоломка, которую вы можете решать в одиночку, совместно или соревнуясь. Она совершенно гениально сделана, и я не до конца понимаю, как именно, но она работает и приносит много удовольствия.
Каждая задача в игре — трехзначное число с цифрами 1..5, зашифрованное в наборе карточек. Карточки двух видов: выражение и его валидатор. Выражение, например, может быть таким: "Вторая цифра меньше трех". Вы выдвигаете гипотезу, каким именно будет число-ответ. А дальше происходит магия — каждое такое число собирается из трёх перфокарт с отверстиями, вы прикладываете к сборке валидатор, и в единственном оставшемся отверстии видете бинарный результат: истина или ложь. Таким образом, получаете информацию о том, справедливо ли выражение для загаданного числа.
Ход за ходом вы должны выбирать самые эффективные гипотезы и выражения, которые отсекут больше всего неверных вариантов. В какой-то момент информации для однозначного ответа становится достаточно. Чем меньше ходов вы потратили, тем лучше.
Если вы нерд и любите фокусы с цифрами, то это прям мастхэв. Играется очень приятно, и вызывает неподдельный кайф каждый раз, когда вы собираете из кусочков ответ, хотя за мгновение до этого может казаться, что до решения ещё очень далеко.
Если же вы не фанат подобного, то подарите коробку знакомому математику, он будет рад!
#games
‼️Google нашла решения проблем багов для конкретных устройств😂
Известно, что отдельные устройства под Android имеют собственные баги. Производители их не правят по разным причинам: закончилась поддержка, не хотят тратиться или предложили на форуме обход. Может просто идет долго доставка фикса до вашего устройства (всякое может быть)
Команда Android Jetpack сделала библиотеку core-backported-fixes, чтобы помочь разработчикам проверить состояния бага для текущего устройства 😂
Пример кода проверки issue KI_398591036 (проблема с цветом в фото на Pixel устройствах)
val fixManager = BackportedFixManager()
if (fixManager.isFixed(KnownIssues.KI_398591036)) {
Offer_experience_that_needs_fix()
} else {
Offer_experience_that_avoids_the_bug()
}
Все issue для проверки описаны в классе KnownIssues
#android#jetpack
‼️Важно изменение Android Jetpack - minSdk повысили с Api Level 21 (Android 5.0) до 23 (Android 6.0). Пока только в следующих версиях библиотек, но это всего 1-2 месяца.
Если ваше приложение поддерживает Android 5.0 и выше, то использовать новые версии библиотек уже не получится. Что можно сделать:
👉 Остаться на старых версиях
👉 Повысить minSdk до 23 или выше
👉 Поддерживать всё самостоятельно
Источник - Ian Lake из команды Android Jetpack
#android#jetpack
🚀Вышел Jetpack Browser 1.9.0 - библиотека для интеграции Custom Tab в приложения
👉 Появилась возможность добавить элементы контекстного меню в Custom Tabs — теперь вы можете собственные пункты меню внутри вкладки
👉 Появилось экспериментальное Auth Tab API. Цель - OAuth авторизация через Web браузер
👉 Улучшения TrustedWebActivityIntent
Есть и другие менее заметные обновления
#android#jetpack
🚀Вышел первый релиз Jetpack Core-i18n
Вышел первый стабильный релиз Jetpack Core-i18n - библиотека для упрощения интернационализации приложения. Первый релиз фокусируется на форматирование даты и времени, а также бэкпорт android.icu.text.MessageFormat
dependencies {
implementation("androidx.core:core-i18n:$core_version")
}
#android#jetpack
🚀Jetpack Core i18n 1.0 - библиотека для качественной интернационализации приложения
Google представила новую библиотеку c фокусом на 2 основных областях:
👉 Форматирование даты и времени, следуя лучшим практикам, опираясь на настройки пользователя и предоставляя доступ на новых и старых версиях Android
👉 Backport android.icu.text.MessageFormat - API для подготовки строк для показа пользователю с опциональными аргументами
👉 Библиотека будет портировать новые i18n API на старые версии Android
#android#jetpack
🚀Core-Viewtree 1.0.0 — стабильный релиз!🎉
AndroidX представил первую стабильную версию библиотеки core-viewtree, которая вводит новое понятие — disjoint parent для View, дополнительно к уже существующему View.parent
🔍 Что это значит?
Теперь View может иметь родителя, который есть у View, но не задан через View.parent. Это полезно в случаях, когда элемент находится вне стандартной иерархии, например: ViewOverlay, попапы, диалоги.
Такой подход позволяет гибко управлять связями между View, особенно в анимациях и сложных UI-компонентах.
Пример использования
class CustomOverlayView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null
) : View(context, attrs) {
fun attachToOverlay(overlayView: View) {
// Устанавливаем overlayView как разобщённого родителя
ViewTreeDisjointParent.set(this, overlayView)
}
}
Где используется
AndroidX автоматически задаёт disjoint parent для ViewOverlay, начиная с Transition 1.6.0-alpha01. Также разработчики могут самостоятельно назначать такие связи.
Будете использовать в своих проектах? Делитесь мыслями в комментариях! 👇
#android#jetpack
📹НОВОЕ ВИДЕО 🎉Полный разбор Jetpack ViewModel для Android и Kotlin Multiplatform (44 мин)
ViewModel - один из самых популярных компонентов Android Jetpack в современной Android разработки. Уже сейчас там есть поддержку Kotlin Multiplatform.
Но знаете ли вы возможности ViewModel? Обо всём этом в новом видео на канале
Видео доступно на 📹YouTube📹VK Video📺RuTube
#AndroidBroadcast#jetpack
🚀Вышел Jetpack Window Manager 1.4 - библиотека для работы с разными форматами устройства и несколькими окнами с поддержкой KMP
Что нового в свежей версии:
👉 Улучшения Activity Embedding
👉 Улучшения API WindowMetrics
👉 Улучшили API для тестирования
#jetpack#kmp