1.83K subscribers
3.24K photos
127 videos
15 files
3.52K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
А что там в PF2e? В отличие от DnD5e, состояние dying может меняться туда-сюда (что приводит к забавному результату, что теоретически персонаж в PF может умирать неограниченно долгое время). Но как это сказывается на шансах?

В PF персонаж, которому не оказывают медицинскую помощь, не умирает через 1 ход (опять-таки, при условии, что ему не наносят урон), но умирает на второй ход с вероятностью 7,5% и на третий ход с вероятностью 19,8%.
Казалось бы, цифры вроде как подтверждают заявление о более смертоносном Pathfinder — в конце-концов, если персонажа не пытаются стабилизировать уже два хода, то дело дрянь. Но это — неполная картина.

Что произойдёт, если по каким-то причинам все персонажи в партии упадут без сознания? Смотрим вероятности дальше. В D&D персонаж умирает с вероятностью 29,7% на четвёртый ход и с вероятностью 40,5% на пятый ход. В Pathfinder же соответствующие числа — 22,4% и 26,7%. Более того, если посмотреть на стабильное распределение, в Pathfinder персонаж, предоставленный самому себе, умирает с вероятностью 30,8% против 40,5% в D&D. Иными словами, в Pathfinder в партии, которую целиком лишили сознания, в среднем будет больше выживших!
Однако даже такой максимально сферически-коневой пример упускает одну важную вещь. Именно, в D&D умирающий персонаж начинает с нулём провалов и нулём успехов, вне зависимости от того, как он начал умирать. В PF2e же, как я уже отметил выше, персонаж может начать с dying выше 1.

Одна из таких возможностей — получение урона от критической попадания атаки или критического провала спасброска от эффекта, наносящего урон. В этом случае персонаж начинает с dying 2. Как видно на таблице "The steady-state vector depends on the initial state" выше, оставленный без опеки персонаж с dying 2 в PF2 умирает с шансом 59,4% — практически вдвое выше, чем обычно! Более того, даже при наличии живых сопартийцев персонаж в таком случае может умереть уже через 1 ход с не такой уж и маленькой вероятностью 10%, а на втором ходу уже с вероятностью 37%!
Кроме того, есть и другие факторы, увеличивающие смертоносность Pathfinder 2e. В обеих системах получение урона делает приближение смерти более вероятным, однако механически это выражено по-разному. В D&D получение урона добавляет один провал спасброска (два от критической атаки), а в Pathfinder 2e получение урона увеличивает значение dying на 1 (два от критической атаки/критического провала спасброска). В D&D провалы и успехи отслеживаются независимо, а вот в Pathfinder 2e recovery check должны перекрыть урон, полученный во время валяния в бессознательном состоянии!

Помимо этого, в Pathfinder 2e есть механика, которая наказывает падение в 0 хитов. В D&D персонаж может падать без сознания и один, и два, и десять раз за бой — до тех пор, пока у партии есть способ восстанавливать хиты, они в относительной безопасности. В Pathfinder 2e же каждый раз, когда персонаж теряет состояние dying, он получает состояние wounded 1 — или увеличивает его на единицу, если оно уже было. Когда персонаж теряет сознание, к начальному значению dying прибавляется текущее значение wounded. Это означает, что персонаж с wounded 3 может умереть от одного удара! Избавиться же от состояния wounded можно только путём восстановления хитов до максимума.

Именно из-за этой дополнительной механики с положительной обратной связью Pathfinder 2e и имеет более опасные бои. Как следствие, в этой игре крайне важно лечить персонажей до того, как они получат урон, давая им возможность пережить больше ударов. Это является ещё одним заметным отличием двух игр: в D&D лечение значительно менее эффективно, чем урон, и так и задумано гейм-дизайнерами. Отсутствие последствий для многократного падения в 0 хитов является прямым следствием этого дизайн-решения.

Но при всём этом, что иронично, умереть в D&D 5e в одиночку всё ещё более вероятно, чем в Pathfinder 2e. И дело не только в вероятностях, но и в дополнительных механиках, отражающих тот факт, что персонажи игроков — особенные личности.

В D&D есть игромеханически такая вещь, как вдохновение. Его ведущий игры может выдавать по своему усмотрению — обычно тем игрокам, персонажи которых добились каких-то больших успехов, сделали что-то героическое или тем игрокам, которые хорошо отыгрывают роль. Вдохновения не может быть больше одного. То, как его можно использовать, зависит от редакции игры.

Название D&D 5th edition по факту относится к двум наборам правил, первый из которых вышел в 2014 году, а второй — в 2024. Да, это запутанно. (Справедливости ради, название Pathfinder 2nd edition тоже относится к двум наборам правил, но у более новой версии хотя бы есть официальный подзаголовок Remaster)


Так вот, в D&D5e2014 можно использовать вдохновение, чтобы сделать любой бросок с преимуществом, а в D&D5e2024 его можно использовать, чтобы перебросить проваленный бросок (если новый бросок всё равно проваливается, вдохновение не тратится). Оба этих варианта использования можно использовать для спасбросков смерти, увеличивая шансы получить успех, но оба варианта не дают гарантий. Вдобавок, даже для успешного броска всё ещё один успех, а для стабилизации нужны 20 или три успеха.

В Pathfinder 2e есть схожая механика: очки геройства (hero point). Они также выдаются на усмотрение мастера и тратятся схожим образом (на переброс проверок), но есть пара важных отличий. Во-первых, hero points не переносятся между сессиями. Во-вторых, их может быть максимум три штуки у каждого персонажа. В-третьих, каждый персонаж получает один hero point в начале каждой игровой сессии. И в-четвёртых, hero points можно использовать не только для перебросов: игрок может потратить все hero points, что у него есть, чтобы стабилизировать персонажа без увеличения состояния wounded. Автоматически.

В итоге, где же бои более смертоносны, в D&D 5e или в Pathfinder 2e? Сложно сказать. Из-за игрового баланса в PF2e хиты персонажей меняются туда-сюда с большим размахом, и правила умирания увеличивают вероятность помереть за пару ходов, но очки геройства дают подушку безопасности, которая позволяет с высоким шансом избежать потери персонажа. А как вы считаете?
2👍1💩1
😁26🎉5👍21🌚1💯1
Forwarded from Neural Machine
Сил моих больше нет.
🤝32
13💯4🔥1
Ясно
17😁9🌚3
Интересный пост в блоге Cloudflare о том, как Perplexity игнорирует инструкции сайтов и всё равно занимается скрапингом сайтов.

We are observing stealth crawling behavior from Perplexity, an AI-powered answer engine. Although Perplexity initially crawls from their declared user agent, when they are presented with a network block, they appear to obscure their crawling identity in an attempt to circumvent the website’s preferences. We see continued evidence that Perplexity is repeatedly modifying their user agent and changing their source ASNs to hide their crawling activity, as well as ignoring — or sometimes failing to even fetch — robots.txt files.

The Internet as we have known it for the past three decades is rapidly changing, but one thing remains constant: it is built on trust. There are clear preferences that crawlers should be transparent, serve a clear purpose, perform a specific activity, and, most importantly, follow website directives and preferences. Based on Perplexity’s observed behavior, which is incompatible with those preferences, we have de-listed them as a verified bot and added heuristics to our managed rules that block this stealth crawling.

По ссылке рассказывается как они ловили такую активность.

И даже что-то блокировать получалось в итоге

Of note: when the stealth crawler was successfully blocked, we observed that Perplexity uses other data sources — including other websites — to try to create an answer. However, these answers were less specific and lacked details from the original content, reflecting the fact that the block had been successful.

Perplexity is using stealth, undeclared crawlers to evade website no-crawl directives
https://blog.cloudflare.com/perplexity-is-using-stealth-undeclared-crawlers-to-evade-website-no-crawl-directives/
🤯5😁21
#prog #abnormalprogramming #db #article

Making Postgres 42,000x slower because I am unemployed

<...> I decided someone needed to try to create a Postgres configuration optimized to process queries as slowly as possible. Why? I am not sure, <...>

I can’t make this too easy. This is a Postgres tuning challenge, not a throttle-your-CPU-to-one-megahertz-and-delete-indexes challenge, so all changes must be on parameters in postgresql.conf. Additionally, the database will still need to have the capability to process at least one transaction within a reasonable amount of time—it would be too simple just to grind Postgres to a halt.


(thanks @nosingularity)
🌚7
Forwarded from LyChat
В ChatGPT чорний колір теми доступний лише за 200$ на місяць
🌚17💩64🤝2
Forwarded from /g/‘s Tech Memes (krust)
🤩17👏42
😁19💯9🥴1
Forwarded from Парни+
🙈 Москвича оштрафовали за две сохраненки с целующимися девушками

Силовики обнаружили две картинки, опубликованные на стене «ВКонтакте» ещё в 2017 году. На них изображены «обнажённые девушки, которые целуют друг друга в губы и обнимаются». Это признали «ЛГБТ-пропагандой». Очередное напоминание, что вас могут оштрафовать даже за старые картинки.

Подробнее на нашем сайте | из России без VPN — на зеркале
🤬10😢3🤡21😁1
Парни+
🙈 Москвича оштрафовали за две сохраненки с целующимися девушками Силовики обнаружили две картинки, опубликованные на стене «ВКонтакте» ещё в 2017 году. На них изображены «обнажённые девушки, которые целуют друг друга в губы и обнимаются». Это признали «ЛГБТ…
<...> Как отметил суд, на обеих изображены «обнаженные девушки, которые целуют друг друга в губы и обнимаются».

Примечательно, что силовики досконально изучили страницу мужчины в ходе «мониторинга интернет-ресурсов»: они просмотрели все 410 изображений в разделе «Фото» и нашли две — под номерами 110 и 207 — на которых изображены целующиеся девушки. Именно эти картинки и стали основанием для возбуждения дела об административном правонарушении.
💩7😁2
#prog #rust #rustreleasenotes

Вышла версия Rust 1.89.0! Как всегда, тут только избранные части, остальное — в детальных заметках о релизе.

▪️Стабилизировали вывод const generics в выражениях!

pub fn all_false<const LEN: usize>() -> [bool; LEN] {
[false; _]
}


К сожалению, использовать _ для const generics в сигнатурах всё ещё нельзя.

▪️Док-тесты теперь запускаются при кросс-компиляции.

▪️Атрибуты вида #![doc(test(attr(..)))] (которые добавляют #[attr(..)] ко всем док-тестам в модуле) теперь можно использовать везде, включая корень крейта.

▪️После фиксов для согласования с существующими компиляторами C/C++ теперь можно использовать i128 и u128 в extern "C" определениях, интероп корректно работает и, как следствие, improper_ctypes_definitions более не триггерится.

▪️Как я уже писал, продление времени жизни временных значений теперь работает и с кортежными конструкторами (кортежных структур и кортежных вариантов enum-ов).

▪️Стабилизированы интринсики (и связанные с ними target feature [1], [2]) из наборов инструкций AVX512, SHA512, SM3 и SM4 для x86-64.

▪️Макро-фрагмент в декларативных макросах без указанного типа теперь является ошибкой компиляции на всех edition.

▪️Результат вычисления format_args! теперь можно сохранять в переменных! 🎉

▪️std::array::IntoIter теперь реализовывает Default. Значение по умолчанию при этом является итератором, который ничего не возвращает. Полезно, когда нужно предоставить итерацию по опциональному массиву и при этом не хочется прокидывать Option в возвращаемое значение.

▪️LazyCell и LazyLock теперь реализуют DerefMut. Одной причиной использовать once_cell меньше.

▪️К слову о локах, для File теперь есть пачка методов ({, try_}lock{, _shared} и unlock) для работы с платформо-специфичными способами блокировки файлов. Напоминаю, что на Linux эти функции требуют кооперации: коду нужно явно указывать на то, что он обращает внимание на блокировки, а по умолчанию они ничего для сторонних процессов не делают.

▪️NonNull можно безопасно создать из ссылки, поскольку ссылки в Rust обязаны не быть null. Для этого есть реализация From<&T> for NonNull<T>. К сожалению, этот способ конвертации не очень очевиден, и на практике многие писали код с NonNull::new_unchecked, в котором ссылка приводилась к сырому указателю по месту вызова. Видимо, чтобы сделать безопасный способ конвертации более видимым и очевидным в исходниках, к NonNull добавили конструктор from_reffrom_mut для конвертации из &mut T). Также этому типу добавили методы для работы с provenance (expose_provenance, with_exposed_provenance, without_provenance), которые аналогичны таковым для сырых указателей, но принимают/возвращают NonZero<usize> вместо usize.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥32
Forwarded from AlexTCH
https://github.com/marimo-team/marimo

An alternative to good (not really) 'ol Jupyter Notebooks.

Looks promising. First of all, they solve the biggest Jupyter problem: stateful execution and thus dependence on the order of cell evaluation. The problem is so large they trained ML models to predict the correct evaluation order. I kid you not.

The solution is pretty common and straightforward: upon loading a file, build the Dataflow Graph, then re-run all the transitive dependencies upon a cell change. This also gives you the "reactive programming for free".

Reactive updates also give you a reactive UI (almost for free). Demos look pretty nice and useful:
https://marimo.io/p/@marimo/embedding-visualizer

And while we're at it, yeah they have a Web playground, and can convert notebooks into Web pages (also slides) out-of-the-box. Moreover, they can produce dynamic Web pages without a server employing WebAssembly. I haven't tried it, but if it works well, that's immensely useful.

Among other things, they store notebooks as valid Python files, which provides integration with Git and many other tools for free. They also integrate with package managers, especially uv, and support per-project virtual environments out-of-the-box.

Additionally, they support DuckDB for running SQL queries, including on DataFrames. And implement nice UI to view, filter and summarize the results.

Overall, feels like a cool and handy, batteries included tool, alleviating a lot of Jupyter Notebooks quirks and letting you get your crap done quicker.
👍21💯1
Моё тело — это машина Руба Голдберга
😁4🌚4🔥2💯2
😁27💯7🤯31