Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
109 - Telegram Web
Telegram Web
Визуальное программирование!

Пока что немного ограниченно - нельзя задать значения в аргументы.
А еще нельзя добавить граф к сущности в редакторе, потому что нету инспектора сущностей.
Можно только в коде.

Ноды создаются из самых обычных функций.
Плагин просто перечисляет их.
🔥4
🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Макрос для экспорта всего и вся из плагина стал слишком большим и неудобным.

Что ж, долой его, теперь все экспортируется из плагина прямо на месте.

#[arcana::system]
#[arcana::filter]
#[arcana::job]
#[arcana::init]

и прочие атрибуты добавленные к айтемам экспортируют их из плагина.
А заодно добавляют туда расположение в коде, так что теперь можно из редактора прыгнуть на код системы или ренерджобы по кнопке
🔥7👍1
Пришло время, как мне показалось, стабилизировать edict
Потратив несколько бессоных часов я обновил документацию, сделал краткий список фич и поправил баги сборки в разных конфигурациях.

И вот представляю вам, релиз кандидат номер 2

https://crates.io/crates/edict/1.0.0-rc2
🔥9🎉2
Вы когда-нибудь уходили в отпуск, что бы работать над пет-проектом?

Я снова так сделал, но на этот раз пет это стол для настолок.

Я не делал мебель со школы. Пожелайте мне удачи
🔥22👍2😁1💯1
Когда надоело говорить "боровить", говори "реквизировать"
😁13👍2
Традиционное освещение VS рейтрейсинг
😁7
Если кому-то очень скучно. Посмотрите документацию тут.
Незамыленным глазом, понятно вообще че-там написано или туфта какая-то.
https://docs.rs/edict/1.0.0-rc4/edict/index.html
4👀1
Моя новая любимая ошибка в Rust
🥰11👍5😁5🤔3
Forwarded from Roman
Media is too big
VIEW IN TELEGRAM
ДК сильные, но мой монк сильнее
👍1🔥1
Я сегодня много думал.
Думал о битсетах и Блум-фильтрах.
Захотелось мне создать Блум-фильтр-лайк структуру, по которой можно было бы итерироваться.
То есть вот буквально 3 операции. Добавить индекс, проверить наличие и проитерироваться.
С возможностью получить ложно положительные результаты в двух последних.

И вот идея.
Наверное многие из нас знакомы с иерархическими битсетами. Где мы ставим биты на нижнем уровне для отдельных индексов, а выше для все больших диапозонов, и так 3-4 и более уровней.
При итерации мы пропускаем огромные диапазоны если бит не выставлен. А если выставлен, то смотрим биты суб-диапазонов, спускаемся все ниже до отдельных индексов на каждый бит.

И все бы ничего, но нам надо памяти по 1 биту на каждый возможный индекс. Ну да, лениво выделяя ее по возможности, но со временем вот так много.
А что если разных значений мы выставить можем миллиард, но одновременно лишь сотни?

Как насчет использовать Блум-фильтр на каждом уровне? Сильно меньше чем целый бит на возможный индекс, а стремиться к 2 * сколько одновременно храним индексов.
А итерируемся так же. Просто с ложными индексами с небольшой вероятностью (пока не переполнили слишком фильтр).

Грубые подсчеты говорят, что должно быть сильно экономно.
🔥2
😭6👍1
Поставил Inkscape и нарисовал дракончика для логотипа Арканы.

Что скажете, сойдет или вообще ни к месту там дракон?
🔥14👍32
Все лошади одной масти и у меня есть доказательство.

Я докажу, что для любого натурального N, группа из N лошадей всегда одной масти.

Сначала рассмотрим базовый случай N = 1.
Очевидно, что любая группа из одной лошади будет одной масти, масти этой лошади.

Теперь построим индукцию.
Допустим что любая группа лошадей размера N одной масти.

Теперь рассмотрим группу размером N+1.

Исключим одну лошадь из группы, все оставшиеся лошади одной масти, потому что любая группа лошадей размера N одной масти из нашего предположения.
Вернем лошадь и исключим другую лошадь.
Опять же подгруппа размера N одной масти.
Значит первая исключенная лошадь той же масти, что неисключенные, которые той же масти что и вторая исключенная. Значит они все одной масти.

Значит из справедливости того что любая группа лошадей размера N одной масти следует что любая группа лошадей размером N+1 одной масти.

Мы имеем базовый кейс с N=1, а значит по вышеописанной индукции мы доказали это для N=2, а следовательно N=3 и так далее для любого натурального N

QED
😁6😴2
Когда делал блюпринты для арканы, пришлось создавать и удалять много Box<dyn Any>, поэтому я сделал другой type-erased контейнер, который обходится без аллокаций для маленьких значений.
Назвал TAny от tiny any.
Понадобилось такое же вне арканы, поэтому я вытащил в отдельную либу и опубликовал ее.
Пришлось конечно сделать по этому поводу нормальную документацию и тесты. Зато баг нашел :)

https://docs.rs/tany
👍8
Может кто не видел, но ранее я публиковал подобную либу для функций

https://crates.io/crates/tiny-fn

С ней можно объявить тип для нужной сигнатуры функции и заворачивать любую функцию или замыкание. Если места хватает - будет храниться без аллокации.
👍7
Мы ждали ждали и дождались еще почти год будем ждать :)
👍6😁1
🔥5👍1😁1🤓1😨1
Кстати я, кажется, придумал схему, как не выгружать большую часть кода и ассетов из движка при горячей перезагрузке.

Схема будет в комментарии, а пока милости прошу гадать :)
2025/07/08 14:16:26
Back to Top
HTML Embed Code: