Forwarded from Pragmatic Programmer (Nikita Bishōnen)
TL;DR статьи Anthony Accomazzo о проблемах разбиения на части результатов запросов к PostgreSQL (ничего нового, но натолкнуло на окончание этого поста):
- limit/offset подход медленный (индексация не спасает) и может "терять" результаты при активных удалениях или вставках в таблицу
- Разбиение результатов по набору ключей помогает обходить эти проблемы, но не бесплатно (нужно выбирать правильный набор, запоминать вернувшийся уникальный идентификатор последней строки)
- Разбиение результатов по набору ключей, не является "постраничным" - вы можете ходить только на один шаг далее, но не можете сразу открыть седьмую страницу
- Сложности при необходимости обхода в обе стороны, потому-что начинается путанница с идентификаторами ("курсорами")
Читая статью (мне кажется она из this week in rust), вспомнил что где-то видел более интересный разбор методов разбиения результатов в PostgreSQL и использование реальных курсоров. Так и есть, нашёл ту статью от 2016 года, получается #oldbutgold 🥇.
- limit/offset подход медленный (индексация не спасает) и может "терять" результаты при активных удалениях или вставках в таблицу
- Разбиение результатов по набору ключей помогает обходить эти проблемы, но не бесплатно (нужно выбирать правильный набор, запоминать вернувшийся уникальный идентификатор последней строки)
- Разбиение результатов по набору ключей, не является "постраничным" - вы можете ходить только на один шаг далее, но не можете сразу открыть седьмую страницу
- Сложности при необходимости обхода в обе стороны, потому-что начинается путанница с идентификаторами ("курсорами")
Читая статью (мне кажется она из this week in rust), вспомнил что где-то видел более интересный разбор методов разбиения результатов в PostgreSQL и использование реальных курсоров. Так и есть, нашёл ту статью от 2016 года, получается #oldbutgold 🥇.
Sequin blog
Keyset Cursors, Not Offsets, for Postgres Pagination
Learn why keyset-based pagination outperforms traditional offset pagination in Postgres for large datasets (with practical examples).
❤3
#prog #rust #cpp #article
Type Inference in Rust and C++
<...>My feeling is that literally everything above is indicative of a trade-off pattern.
If you want to have a fancy, bespoke modern type checker with Hindley-Milner type inference semantics, you need to accept one of the following:
1. Bad performance for your type checker with a risk of exponential blow-up.
2. No features that look anything like “the compiler picks the best option out of several ones”. No function overloading, implicit conversions, etc.
Надо отдельно отметить, что deref coercion под "pick the best option out of several ones" не подпадает —
Type Inference in Rust and C++
<...>My feeling is that literally everything above is indicative of a trade-off pattern.
If you want to have a fancy, bespoke modern type checker with Hindley-Milner type inference semantics, you need to accept one of the following:
1. Bad performance for your type checker with a risk of exponential blow-up.
2. No features that look anything like “the compiler picks the best option out of several ones”. No function overloading, implicit conversions, etc.
Надо отдельно отметить, что deref coercion под "pick the best option out of several ones" не подпадает —
Target является у трейта ассоциированным типом, а не параметром, поэтому реализаций Deref у каждого конкретно взятого типа не более одной🤔3
#prog #cpp #article
How C++ Resolves a Function Call
Взгляд на порядок разрешения имён при вызове функции в C++ с высоты птичьего полёта, с примером, который проходит по всем шагам.
How C++ Resolves a Function Call
Взгляд на порядок разрешения имён при вызове функции в C++ с высоты птичьего полёта, с примером, который проходит по всем шагам.
👍12🤮3
Forwarded from Segment@tion fault
Китайский ИИ DeepSeek за один день покорил Уолл-Стрит, потому что упорно отказывается программировать на С++, а значит имеет сознание
😁20❤18🤡3🔥2💯1
Forwarded from Yegor Zudin (коренастый яблоко)
Да, плюсовики тоже ругают плюсы. Но растовики их ругают, потому что у них скилл ишью. А плюсовики — потому что скилл ишью
😁27😐4🥴1
— Слушай, а почему ты никогда свою помощь мне не предлагаешь?
— А то я тебя не знаю: если тебя спросить, можно ли тебе помочь, ты не вежливо откажешься, а реально скажешь, чем тебе можно помочь.
— А то я тебя не знаю: если тебя спросить, можно ли тебе помочь, ты не вежливо откажешься, а реально скажешь, чем тебе можно помочь.
😁15
#prog #rust #article
Prototyping in Rust
I’ve found that my prototypes in other languages often hit a wall where I need to switch to something more robust. With Rust, I can start simple and gradually turn that proof-of-concept into production code, all while staying in the same language and ecosystem.
Prototyping in Rust
I’ve found that my prototypes in other languages often hit a wall where I need to switch to something more robust. With Rust, I can start simple and gradually turn that proof-of-concept into production code, all while staying in the same language and ecosystem.
Corrode Rust Consulting
Prototyping in Rust | corrode Rust Consulting
Programming is an iterative process.
As much as we would like to come up with the perfect solution from the start, it rarely works that way.
Good programs often begin as quick prototypes.
While many experiments remain prototypes, the best p…
As much as we would like to come up with the perfect solution from the start, it rarely works that way.
Good programs often begin as quick prototypes.
While many experiments remain prototypes, the best p…
🤔5👍3😁3🔥2
#prog #rust #rustlib
embed_it — макрос, который позволяет включить в бинарь целую директорию ресурсов и потом обращаться к вложенным директориям и файлам по именам, причём как по статическим (в виде геттеров с теми же именами, что и файлы), так и по рантаймовым. Посмотрите пример в README.
embed_it — макрос, который позволяет включить в бинарь целую директорию ресурсов и потом обращаться к вложенным директориям и файлам по именам, причём как по статическим (в виде геттеров с теми же именами, что и файлы), так и по рантаймовым. Посмотрите пример в README.
GitHub
GitHub - riberk/embed_it: Include your assets statically into your application with a strict structure
Include your assets statically into your application with a strict structure - riberk/embed_it
👍6