All streams
Search
Write a publication
Pull to refresh
4
0
Send message
AFAIK, декораторы все еще экспериментальная фича, или я что то пропустил?
После конфускации с обезличиванием имен будет счастье…
Кстати, что будет с типизированными массивами и вложенными классами?
Как зациклить воспроизведение? Чем менять скорость ритма? Можно как-то увидеть позицию воспроизведения?
В далекой молодости мы с другом сделали не совсем удачный эксперимент — надиктовали в микрофон все буквы алфавита и попытались из «кусочков» составить слова. Даже после «шлифовки напильником» получалась полная ерунда. Слогами соединять получилось лучше, но тоже не фонтан (интонация и плавность произнесения были ужасны). Возможно стоило более тонко интерполировать звуки соединяя их между собой, но на вскидку задача синтеза голоса оказалась не такая уж простая. В общем, в результате бросили мы эту затею…
А сонорные звуки вроде «М» или «Н» это какого вида шумы? Импульсные или свистяще-шипящие?
Ну и как к гласной фонеме подклеить согласную, что бы получить хотя бы слог?
Все идет к тому что скоро вся поверхность телефона будет экраном…
можно бинарным поиском искать. Но random (guid) c проверкой дублей еще быстрее.
А почему интерполяция только линейная? Ведь еще можно было бы как то учесть производные высших порядков. хотя бы кривыми Безье
Наверно придираюсь к словам, но… Статья называется «Принцип наименьшего действия», а рассматриваемые случаи скорее относятся к «принципам бездействия движущихся тел в инерциальных системах отсчета». Угол падения равен углу отражения работает для «сферических коней в вакууме», бросьте кубик в стену — угол отражения будет зависеть от ориентации кубика в момент касания стены, от шероховатости стены, от коэффициента скольжения и т.д.
Зачем я это прочитал?..
Грубо говоря, веб без JS не кому не нужен. Если кому-то не нравиться, пусть просто не пользуется вебом. JS в браузере работает в режиме sandbox, установить ПО в таком режиме не получится. Не понял что такое «несвободное ПО» если сайт в открытом доступе — заходи кто хочет.
На мой взгляд, говоря о реалистичности видео на разных частотах, не нужно скатываться в дискретный способ мышления и говорить только об fps. Дискретные эффекты покадровой съемки (особенно с малой выдержкой) дают причудливые стробоскопические эффекты на вращающихся колесах, лопастях, спицах и т.д. А недавно в инете ходило видео с камеры наблюдения где какая-то птичка летала не поднимая крыльев. Я бы сказал что нужно рассуждать в интегральных терминах. Рецепторы в глазу человека имеют определенную инертность (как на зажигание так и гашение сигнала), поэтому быстро двигающийся объект (например летающий на темном фоне белый кружок) будет восприниматься размазанным пятном. Длинна этого пятна будет зависеть от таких параметров как скорость движения, условия освещенности и т.д. Так вот, на видео длинна этого пятна не должна зависеть от fps. Образно говоря, на высоких fps может потребоваться длина выдержки больше чем 1/fps. Иначе начнутся стробоскопические эффекты, которые придется трактовать как «художественный замысел режисера». Но это не тоже самое что реализм…
Мне нужно в структуре файла иметь описание всех используемых структур c полями (имена и типы) в строковом виде. Хорошо бы по аннотациям вытягивать доп инфу (например, toltip info).
Есть ожидания, а есть реальность. Я просто оставлю это здесь js vs webasm
Не зажимают, а расширяют. Правда производительность WebAsm пока под вопросом. Плюс пока еще частое обращение к JS API…
Да, но мне нужно в структуре файла иметь имя и тип в строковом виде, поскольку там сначала описание структуры а потом данные. Иначе редактор не сможет понять что куда можно добавить (sub-objects, array itmes). Плюс в файлах не нужны версии, при десериализации лишние поля игнорируются, а недостающие остаются default initialized.
Переменная obj это пример инстанциирования. Ну и target js, т.е. RTTI урезан.
Ай, поторопился, извините. Не та функция. Давайте попробуем еще раз с пояснениями. Класс для сериализации:
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 должна инстанциироваться не так явно, а через тип. Надеюсь так чуть понятнее.

Information

Rating
Does not participate
Registered
Activity