Telegram изъял 70% адресов каналов, которые не проявляли активность год или более (то есть отобрал у них короткое имя, как например моё @clockstackwheels). Дуров заявил, что, дескать, эти адреса принадлежали иранским киберсквоттерам. Хотя, зная его любовь к выдаче желаемого за действительное, могу предположить, что 70% каналов просто были заброшены. И у меня даже есть идеи, почему, но, думаю, вы и сами догадываетесь.
Тем не менее, независимо от истинных причин, чистить неактивные адреса я считаю правильным. Каналы созданы для того, чтобы быть живым фидом какой-то информации. Не обязательно блогом, это может быть даже технический канал с логом вашего CI/CD по работе.
Издание Telegram Info запустило петицию с требованием вернуть эти адреса. Вот что они пишут: Зачастую каналы используются авторами как личные визитные карточки, каталоги, энциклопедии и публичные архивы..
Я тоже так могу: Зачастую микроскопы используются владельцами как подставки для книг, линзы для поджига костра и инструмент забивания гвоздей!.
Думаю, то же самое (экспроприацию адресов) сделали бы с ботами, если бы на платформу ботов не положили огромный болт ещё несколько лет назад.
#web
🚀 Вышел стабильный JavaScript движок от Google для Android
Новая стабильная библиотека Jetpack JavaScript Engine позволит разработчикам выполнять JS код в изолированной и ограниченной среде.
class MainActivity : ComponentActivity() {
// Теперь nullable, без lateinit
private var jsSandbox: JavaScriptSandbox? = null
private var jsIsolate: JavaScriptIsolate? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (!JavaScriptSandbox.isSupported()) {
Log.e("JS", "JavaScriptSandbox не поддерживается")
return
}
lifecycleScope.launch {
// Создаём и сохраняем в nullable-поле
jsSandbox = JavaScriptSandbox
.createConnectedInstanceAsync(applicationContext)
.await()
jsIsolate = jsSandbox?.createIsolate()
// При выполнении гарантируем, что jsIsolate != null
val result: String = jsIsolate
?.evaluateJavaScriptAsync(JS_SCRIPT_SCRING)
?.await()
?: "Ошибка: isolate не инициализирован"
Log.d("JS", "Результат выполнения: $result")
}
}
override fun onDestroy() {
super.onDestroy()
// Закрываем только если не null
jsIsolate?.close()
jsSandbox?.close()
}
}
#jetpack#js