В далекой молодости мы с другом сделали не совсем удачный эксперимент — надиктовали в микрофон все буквы алфавита и попытались из «кусочков» составить слова. Даже после «шлифовки напильником» получалась полная ерунда. Слогами соединять получилось лучше, но тоже не фонтан (интонация и плавность произнесения были ужасны). Возможно стоило более тонко интерполировать звуки соединяя их между собой, но на вскидку задача синтеза голоса оказалась не такая уж простая. В общем, в результате бросили мы эту затею…
Наверно придираюсь к словам, но… Статья называется «Принцип наименьшего действия», а рассматриваемые случаи скорее относятся к «принципам бездействия движущихся тел в инерциальных системах отсчета». Угол падения равен углу отражения работает для «сферических коней в вакууме», бросьте кубик в стену — угол отражения будет зависеть от ориентации кубика в момент касания стены, от шероховатости стены, от коэффициента скольжения и т.д.
Зачем я это прочитал?..
Грубо говоря, веб без JS не кому не нужен. Если кому-то не нравиться, пусть просто не пользуется вебом. JS в браузере работает в режиме sandbox, установить ПО в таком режиме не получится. Не понял что такое «несвободное ПО» если сайт в открытом доступе — заходи кто хочет.
На мой взгляд, говоря о реалистичности видео на разных частотах, не нужно скатываться в дискретный способ мышления и говорить только об fps. Дискретные эффекты покадровой съемки (особенно с малой выдержкой) дают причудливые стробоскопические эффекты на вращающихся колесах, лопастях, спицах и т.д. А недавно в инете ходило видео с камеры наблюдения где какая-то птичка летала не поднимая крыльев. Я бы сказал что нужно рассуждать в интегральных терминах. Рецепторы в глазу человека имеют определенную инертность (как на зажигание так и гашение сигнала), поэтому быстро двигающийся объект (например летающий на темном фоне белый кружок) будет восприниматься размазанным пятном. Длинна этого пятна будет зависеть от таких параметров как скорость движения, условия освещенности и т.д. Так вот, на видео длинна этого пятна не должна зависеть от fps. Образно говоря, на высоких fps может потребоваться длина выдержки больше чем 1/fps. Иначе начнутся стробоскопические эффекты, которые придется трактовать как «художественный замысел режисера». Но это не тоже самое что реализм…
Мне нужно в структуре файла иметь описание всех используемых структур c полями (имена и типы) в строковом виде. Хорошо бы по аннотациям вытягивать доп инфу (например, toltip info).
Да, но мне нужно в структуре файла иметь имя и тип в строковом виде, поскольку там сначала описание структуры а потом данные. Иначе редактор не сможет понять что куда можно добавить (sub-objects, array itmes). Плюс в файлах не нужны версии, при десериализации лишние поля игнорируются, а недостающие остаются default initialized.
Ай, поторопился, извините. Не та функция. Давайте попробуем еще раз с пояснениями. Класс для сериализации:
interface Slzr {
fun get_Slzr_Decl() : Array<Any?>
}
class MyClass : Slzr {
companion object static {
val slzr : Array<Any?> = arrayOf<Any?>(::MyClass, MyClass::class.simpleName, 7, arrayOf<Any>(MyClass::br, MyClass::fr))
}
var br = 777;
var fr = "rrrr";
override fun get_Slzr_Decl() : Array<Any?> = slzr;
}
Сериалайзер обнюхивает этот класс примерно так:
var t : MyClass = MyClass()
var sd = t.get_Slzr_Decl();
@Suppress("UNCHECKED_CAST")
var obj = (sd[0] as KFunction0<Any>)();
var a : Array<*>? = sd[3] as? Array<*>;
if(null!=a) {
for(i in a.indices) {
if(a[i] is KMutableProperty1<*,*>) {
@Suppress("UNCHECKED_CAST")
var pi = a[i] as? KMutableProperty1<Any, *>;
if(null!=pi)
println("member: " + pi.name + " = " + pi.get(t as Any));
}
}
}
Здесь просто печатается имя и значение полей заданных для сериализации, но в реальной жизни парсер генерирует вспомогательные данные (HashMap с именами) для ускорения процессов save/load из промежуточного представления сериализуемых данных, кеширауя их в статическое поле slzr. Ну и вспомогательная переменная t должна инстанциироваться не так явно, а через тип. Надеюсь так чуть понятнее.
Кстати, что будет с типизированными массивами и вложенными классами?
Грубо говоря, веб без JS не кому не нужен. Если кому-то не нравиться, пусть просто не пользуется вебом. JS в браузере работает в режиме sandbox, установить ПО в таком режиме не получится. Не понял что такое «несвободное ПО» если сайт в открытом доступе — заходи кто хочет.
Сериалайзер обнюхивает этот класс примерно так:
Здесь просто печатается имя и значение полей заданных для сериализации, но в реальной жизни парсер генерирует вспомогательные данные (HashMap с именами) для ускорения процессов save/load из промежуточного представления сериализуемых данных, кеширауя их в статическое поле slzr. Ну и вспомогательная переменная t должна инстанциироваться не так явно, а через тип. Надеюсь так чуть понятнее.