Исправил LZ77 что бы тот не всегда кодировал референс, когда длина его слишком мала и дешевле закодировать литералы.
Размер уменьшился, стало прям сильно лучше, но все еще проигрывает чистому rANS-у фильтрованной картинки.
В том числе rANS-ирование токенов из LZ77.
Только на очень специфических картинка (как с драконом) можно получить лучший результат с LZ77 или LZ78.
А вот возьмем спрайтшит. А там... та же картина, да как так то?
Размер уменьшился, стало прям сильно лучше, но все еще проигрывает чистому rANS-у фильтрованной картинки.
В том числе rANS-ирование токенов из LZ77.
Только на очень специфических картинка (как с драконом) можно получить лучший результат с LZ77 или LZ78.
А вот возьмем спрайтшит. А там... та же картина, да как так то?
Вывод - сделать N режимов, дать пользователю выбирать и кнопку "найти самый оптимальный".
Где пользователь, это тот кто напишет
А кнопка - функция
Где пользователь, это тот кто напишет
jkl = "1.0" у себя в Cargo.tomlА кнопка - функция
🔥4
Я вчера снова полдня кодил аркану, вместо того что б бездумно гаматься.
Чего я не мог делать с весны.
Ура!
Чего я не мог делать с весны.
Ура!
🔥7👍3
Нужно было распечатать, подписать, отсканировать и отправить документ. Обычное дело в нашу удалёнчесскую эпоху.
Но у меня закончилась бумага. А отправить надо вот прямо сейчас.
Нашел у дочки листок с рисунком только на одной стороне. Ну а дальше вы догадываетесь. И если очень сильно присмотреться, то на скане документа можно различить очертания детского рисунка на обороте.
Но у меня закончилась бумага. А отправить надо вот прямо сейчас.
Нашел у дочки листок с рисунком только на одной стороне. Ну а дальше вы догадываетесь. И если очень сильно присмотреться, то на скане документа можно различить очертания детского рисунка на обороте.
😁14😱1
Сегодня на ДнД игроки очень дивились, что я трекаю урон и инициативу в vscode.
Два игрока с первого взгляда узнали vscode.
Так я узнал, что у меня два разработчика играют.
А еще - что разработчики автотестов и фронтендов даже не знают, что такое hlsl.
Два игрока с первого взгляда узнали vscode.
Так я узнал, что у меня два разработчика играют.
А еще - что разработчики автотестов и фронтендов даже не знают, что такое hlsl.
😁10
А теперь викторина.
Кто первым напишет в комментах правильный ответ - заслужит право называться почетным растономиконщиком.
Да-да, задачка про unsafe, а вы как думали?
Итак, само задание:
Реализуйте функцию
Добавьте минимальные баунды и напишите функцию.
Кто первым напишет в комментах правильный ответ - заслужит право называться почетным растономиконщиком.
Да-да, задачка про unsafe, а вы как думали?
Итак, само задание:
Реализуйте функцию
fn cast_me<T, U>(value: T) -> Result<U, T>, которая возвращает Ok, если оба параметра, T и U - один и тот же тип. А иначе Err.Добавьте минимальные баунды и напишите функцию.
Кто понял шутку выше - закройте все ленты на 10 минут и посмотрите в окно.
Или напишите 100 строк кода на расте :)
Или напишите 100 строк кода на расте :)
🤔2
Forwarded from Nikolay Osaulenko
Наверное можно через
union так как его поля находятся в одной области памяти. Ну и так как Copy не хотелось бы навешивать, то остаётся только с ManuallyDrop. Как-то такfn cast_me<T: 'static, U: 'static>(value: T) -> Result<U, T> {
if value.type_id() != TypeId::of::<U>() {
return Err(value);
}
union Wrapper<T, U> {
t: ManuallyDrop<T>,
u: ManuallyDrop<U>,
}
unsafe {
let wrapper: Wrapper<T, U> = Wrapper {
t: ManuallyDrop::new(value),
};
Ok(ManuallyDrop::into_inner(wrapper.u))
}
}🙏3😭3