Блог*
Open in Telegram
Блог со звёздочкой. Много репостов, немножко программирования. Небольшое прикольное комьюнити: @decltype_chat_ptr_t Автор: @insert_reference_here
Show more1 923
Subscribers
-124 hours
No data7 days
-730 days
Posts Archive
1 923
#prog #rust #article
Can Rust prevent logic errors?
TL;DR: да, потому что в Rust есть для этого средства, которые отсутствуют в подавляющем большинстве мейнстримных ЯП. Автор, впрочем, сравнивает в основном с Ruby.
Предотвращаемые ошибки показаны с примерами на других ЯП.
1 923
Repost from лингвист реалист
Жизнь в Челябинске: "32 градуса? О нет, я умру, растаю... За что мне все это???"
Жизнь в Ереване: "Ну когда уже эти грёбаные 32 градуса? Хочется прохлады и свежести!"
1 923
Repost from AlexTCH
VS Code now has "AI settings search".
Yep, that's right, they use a freaking LLM to search in a code editor settings.
And they showcase in the release notes an example search for "increase text size" that returns font size settings. Are you sure that's a meaningful example? Do we really need an LLM to discover font size settings?
At any rate, did you consider simplifying freaking settings before implementing a LLM search through them?
1 923
Repost 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.1 923
#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_ref (и from_mut для конвертации из &mut T). Также этому типу добавили методы для работы с provenance (expose_provenance, with_exposed_provenance, without_provenance), которые аналогичны таковым для сырых указателей, но принимают/возвращают NonZero<usize> вместо usize.1 923
<...> Как отметил суд, на обеих изображены «обнаженные девушки, которые целуют друг друга в губы и обнимаются». Примечательно, что силовики досконально изучили страницу мужчины в ходе «мониторинга интернет-ресурсов»: они просмотрели все 410 изображений в разделе «Фото» и нашли две — под номерами 110 и 207 — на которых изображены целующиеся девушки. Именно эти картинки и стали основанием для возбуждения дела об административном правонарушении.
1 923
Repost from Парни+
🙈 Москвича оштрафовали за две сохраненки с целующимися девушками
Силовики обнаружили две картинки, опубликованные на стене «ВКонтакте» ещё в 2017 году. На них изображены «обнажённые девушки, которые целуют друг друга в губы и обнимаются». Это признали «ЛГБТ-пропагандой». Очередное напоминание, что вас могут оштрафовать даже за старые картинки.
Подробнее на нашем сайте | из России без VPN — на зеркале
1 923
#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.
1 923
Repost from Технологический Болт Генона
Интересный пост в блоге 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/
Available now! Telegram Research 2025 — the year's key insights 
