Сайты "Комитета" VC, DTF, TJ ввели функцию создания блогов. Я уже много лет пишу о том, что в рунете остро не хватает ресурса для текстового контента, каким когда-то был ЖЖ. Многие авторы размываются между соцсетями, но там, как правило, либо аудитория не годится для длинных качественных текстов (ВК, Дзен), либо инструменты самой сети очень слабо подходят под ведение (Instagram) и развитие (Telegram) текстового блога.
Есть Хабр, однако вести там произвольный авторский блог нельзя. Всё строго тематически и даже в некотором смысле научно. Это хорошо, но это не совсем то, о чём я говорю.
Некоторые считают, что в качестве такого ресурса мог бы выступать Пикабу. Но Пикабу очень сильно отодвигает внимание от автора в пользу тематики и популярности отдельных постов. Мало кому интересен "хороший автор Вася, который пишет на Пикабу". Люди туда приходят за "вот эта лента постов разных авторов, не важно, каких".
И здесь Комитет сделал хороший ход. Ладно, DTF это развлекательный ресурс, подозреваю, что его аудитория в среднем молодая, и готова только к контенту на определённые темы. Что касается TJ, то изначально это был как бы сайт с новостями интернета, а потом просто сайт с новостями без чёткого направления, что привело сейчас не только к блокировке (которую, видимо, Комитет рассчитывает снять), но и критическому росту объёма политизированности и количества очагов русофобии в комментариях.
А вот на VC у меня есть надежды. Я уже писал вам давно о своём весьма положительном опыте публикации там. И в целом аудитория, судя по обсуждениям, довольно взрослая и адекватная. Даже вспыхнувшую политоту потихоньку тушат именно со стороны комьюнити. Изначально это ресурс для бизнесменов, про бизнес и стартапы, поэтому можно предположить, что доля разумных людей довольно высока.
Но сам я блог там не создал, хотя рука тянулась. Не хватит моего внимания уже на три места, даже если контент более менее копировать. Хотя, возможно, я по итогам ведения страницы ВК и канала тут стабилизируюсь на каких-то двух-трёх базовых темах и создам.
#web
🏝🤖 На сайте Android Developers обновили материалы по Kotlin Multiplatform:
👉 Обновили главную страницу
👉 Появился базовый курс по KMP (бесплатный)
👉 Обновленные руководство по использованию Jetpack библиотека с поддержкой KMP
#android#kmp
📹Android Developers Backstage 215. KMP. Have your code and eat it too
Software Engineers Dustin Lam и Yigit Boyar присоединяются к ведущему Tor Norbye, чтобы обсудить Kotlin Multiplatform (KMP).
0:00 - Введение
0:29 - Что такое KMP: не новый продукт, а Kotlin с новыми возможностями
3:20 - Зачем нужен KMP: преимущества и цели
6:17 - KMP vs. другие кроссплатформенные фреймворки
6:41 - Общая бизнес-логика — основной сценарий использования
9:18 - Практическое внедрение: превращение Android-приложения в KMP
13:15 - Работа с платформо-специфичными зависимостями
28:56 - Поддержка библиотек в Kotlin Multiplatform
35:56 - Developer Experience: инструменты и интеграция
40:16 - Совместимость с iOS: как добиться взаимодействия
42:51 - KMP в действии: как Google использует эту технологию
47:17 - Долгосрочное видение и потенциал KMP
51:30 - Консистентность поведения vs. нативная производительность
55:32 - Попробуйте KMP и присоединяйтесь к разработке!
#android#kmp
Reanimator - простоя библиотека для Jetpack ViewModel (с поддержкой KMP) для работы с состоянием. Подробный разбор в статье (EN,11м) или альтернативной ссылке
@Serializable
data class MyUiState(
// Persistent
val data: List<String> = emptyList(),
val selectedItem: String? = null,
// Transient
val isLoading: Boolean = false,
val error: String? = null
)
class MyViewModel(private val savedStateHandle: SavedStateHandle) : ViewModel() {
// Define which properties are transient
private val transientProps = listOf("isLoading", "error")
// Declare your state flow - Reanimator handles the rest!
private val _uiState by savedStateHandle.getMutableStateFlow(
defaultValue = MyUiState(), // Initial/default state
coroutineScope = viewModelScope, // Scope for saving changes
transientProperties = transientProps // What NOT to save
// key = "custom_state_key" // Optional: custom key
)
val uiState: StateFlow<MyUiState> = _uiState.asStateFlow()
// ... rest of your ViewModel logic ...
fun updateData(newData: List<String>) {
// Just update the state - Reanimator saves persistent parts automatically
_uiState.update { it.copy(data = newData, isLoading = false) }
}
}
#android#kmp
🚀Вышел Jetpack Window Manager 1.4 - библиотека для работы с разными форматами устройства и несколькими окнами с поддержкой KMP
Что нового в свежей версии:
👉 Улучшения Activity Embedding
👉 Улучшения API WindowMetrics
👉 Улучшили API для тестирования
#jetpack#kmp
📹Compose/iOS готов к продакшену? Прямой эфир с ответами на вопросы
Когда: четверг, 8 мая, 18:30 (GMT+3)
Буквально вчера вышел Compose iOS Stable и конечно же открывает возможности Android разработчиками по написанию мобильных приложений под обе платформы. Но всё ли так сладко, как заявляет JetBrains? Будем разбираться в этом с экспертом кто уже познал прелести продакшена!
👨💻 Эксперт - Никита, фуллстек Kotlin разработчик, автор проектов FlowMVI и respawn.pro. При анонсе Compose iOS Stable, его приложение было в официальном анонсе 🔥
👨💻 И еще одни эксперт - Чикишев Тимур, Senior Android разработчик в KTS. Начал пробовать Compose iOS еще до официального релиза. Успел адаптировать Android приложение с Compose на iOS, буквально на этой неделе сделали релиз
Задавайте свои вопросы в комментариях к посту, чтобы они были заданы на эфире
#android#compose#kmp
Вышел Coil 3.1.0 - популярный загрузчик картинок с поддержкой KMP
👉Улучшили производительность AsyncImage: скорость работы стала лучше на 25-40%, а потребление памяти - на 35-48%
👉 FakeImage теперь deprecated
👉 Появился ColorImage - полезен для возвращения фейковых значений в тестах и для Compose превью
👉 coil-compose-core больше не зависит от Dispatchers.Main.immedate, что позволило исправить баги в работе Paparazzi и Roborazzi
🛠 Множество других исправлений и улучшений API
#kmp#android#compose
🤯 Те кто использовал Jetpack Paging 3 знают насколько он может справиться только с базовыми сценариямми. Шаг влево или вправо - уже боль!
Сегодня хочу познакомить вас с альтернативой — библиотекой 🐱Paginator. Это KMP-решение для пагинации, которое решает те самые проблемы, где Paging 3 начинает "буксовать".
Paginator построен на отличной модели от Jetpack Paging 3: страница — это адресуемая ячейка в кэше, кэш — обычная структура данных, а навигация — обычные методы.
1️⃣✅ Адресуемые страницы
Прямые методы goNextPage(), goPreviousPage() и jump(Bookmark). Deeplink на сообщение из пуша решается одной строкой.
2️⃣✅ Мутации по запросу
MutablePaginator предоставляет CRUD-операции: replace { it.id == 42 }, removeWhere { it.deleted }. Один лайк меняет один элемент без инвалидации всей страницы.
3️⃣✅ Сохраняемое состояние
Кэш — обычная структура данных, которую можно сериализовать через kotlinx.serialization. Методы serializeToJson() и restoreFromJson() решают проблему Process Death без плясок с бубном.
4️⃣✅ Библиотека, а не фреймворк
Написан на чистом Kotlin без платформенных зависимостей и живёт в commonMain. Логика пагинации становится частью общего доменного слоя KMP, не копируется между платформами и не имеет двух реализаций.
5️⃣✅ Курсорная пагинация "из коробки"
Отдельный класс CursorPaginator с единой моделью состояний, транзакций и сериализации.
Paginator — это не обёртка над Paging 3. Это другая модель, переосмысливающая ключевые типы. Обёртка просто не смогла бы дать ни мутации элемента, ни сериализации кэша.
🔗Оригинальная статья на Хабре
🐱Репозиторий Paginator
#Android#AndroidDev#KMP
🤯Команда Anvil решила прекратить развитие проекта в пользу другого решения
Anvil - Kotlin плагина для расширения возможностей Dagger 2 и упрощения работы с ним решили прекратить развивать. Коллега автором решения сделал Metro и компания будет переходить на него и участвовать в его развитии.
Metro - это compile-time DI фреймворк с поддержкой KMP, который вдохновлялся Dagger, Anvil, Kotlin-Inject.
#di#kmp