Словил рекламу: юридическая фирма пиарится на выигранном деле против GeekBrains (вернули деньги за курс клиенту, который от этого курса отказался). Причем, что характерно, таргетинг у рекламы настроен по айти-школам. Я состою в паблике одной малоизвестной школы X, которая вообще вряд ли когда-либо (ввиду своей небольшой величины) получала от клиентов вызовы в суд. И тем не менее, текст рекламы был типа "Верните деньги за курс в школе X через суд".
Думаю, они запустили рекламу вообще по всем школам. Пиар на судах с айти-школами это интересно: громких публичных разбирательств с ними действительно очень много, как и с другими крупными компаниями. Но, видимо, в случае со школами законодательство какое-то более однозначное, либо школы скупятся на хороших юристов, и поэтому сливают.
Не думаю, впрочем, что именно школы — какое-то особенное зло. Не более, чем другие B2C бизнесы. Всегда есть клиенты, которые недовольны (как справедливо, так и нет). А бизнесы всегда максимально защищаются, и вообще, не имеют морали или человечности в нашем субъективном понимании. Вместо морали у них репутация, хотя её влияние на действительно крупную рыбу очень слабое. Так что бизнесы отбиваются. И против какого-нибудь Тинькова вряд ли хоть какой-то юридической фирме удастся что-то сделать, поэтому Тиньков спокойно забирает у людей валюту, а вот школы попадают под раздачу.
Тем не менее, каждый раз, когда обычный человек выигрывает суд у компании, в мире радуется котёнок.
#web#life
🚀 Вышел стабильный 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