Мой ноутбук обновился до Windows 11, и позавчера на нём стали происходить странности: некоторые программы отказывались выполнять некоторые свои функции. После тщательного исследования симптоматика прояснилась, но не стала более понятной: программы от Microsoft не могли получить доступ в сеть. Именно Microsoft и именно в сетевой части.
Outlook, Visual Studio, .NET — всё это вело себя так, будто интернет отсутствует. У программ от других производителей подобное не проявлялось, и у операционной системы в целом тоже.
Долгие часы гугления, переписывания реестра, изменения сетевых настроек, переустановки софта и драйверов ни к чему не привели. Я забил и откатился обратно на Windows 10 — всё заработало. А днём позже я прочитал в Твиттере у одного человека описание в точности такой же проблемы, и он докопался до правды — русский софт для электронных подписей КриптоПРО что-то менял в TCP-стеке, на что именно программы от MS реагировали отказом, но только в силу особенностей Windows 11.
Так вот. У меня лицензионный Windows и все лицензионные программы от Microsoft. Но нет никакого шанса, что вся эта честная лицензионность и идущая в комплекте поддержка хоть что-то смогла бы сделать за разумные сроки с моей проблемой. Реально, ведь там везде интеграционный ад.
С одной стороны, это чудовищно распространенный кейс: можно за 5 минут на любом телефоне и любом компьютере (под управлением любой ОС) найти какую-нибудь фигню, которая проявляет проблемы интеграции одного с другим. Этих проблем каждый человек встречал в своей жизни десятки, даже если всё всегда легально покупал (а порой — особенно если легально покупал). С другой стороны — производитель мог действительно за все циклы проверок ни разу не наткнуться на этот случай. И даже не представлять, что какая-то проблема может существовать.
Пользователи обречены на вечные страдания.
#dev
🚀 Вышел стабильный 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