Поймал себя на том, что иногда мне нравится ездить на автомобиле, а иногда нет. Понятно, что чилить на автостраде это прикольно, а пробиваться через городские пробки — нет. Но я осознал, что иногда мне в городе вполне прикольно, а иногда нет. Я даже в пробках иногда стою спокойно.
Начал рефлексировать, и понял: мне приятно ездить, когда я никуда не тороплюсь. Когда можно опоздать на 5-10-15 минут, а то и на полчаса. В гости к друзьям обычно можно опоздать. В магазин можно опоздать, если ты не под закрытие едешь. А вот если едешь на какое-то мероприятие ко времени, то опаздывать нельзя, и обычно даже 10 минут неприятны.
Дорожная ситуация меняется не слишком предсказуемо. Время на поиск места парковки тоже не определено. Да и постоянное искушение где-то что-то нарушить, чтобы не опоздать. Либо наоборот — выезжаешь на машине сильно заранее, и на месте просто ждёшь полчаса.
В общем, машина хорошо решает задачу "Добраться куда-то в место, плохо доступное другими видами транспорта". Но не слишком хорошо решает задачу "Добраться куда-то к заданному моменту с точностью плюс-минус 5 минут". А, например, пешком + метро решает хорошо. Можно, конечно, пофантазировать на тему какого-то предсказания и правильного планирования, но на деле пара забитых перекрёстков вполне могут стоить вам 10 минут, что в контексте городской жизни довольно много.
P.S. Скоро у меня отпуск, и будут очень интересные посты про дроны и мототехнику. Хотя погода в Питере как обычно норовит подвести в самое неподходящее время. С таким климатом хоть на автомобиле езди!
#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