ar
Feedback
Блог*

Блог*

الذهاب إلى القناة على Telegram

Блог со звёздочкой. Много репостов, немножко программирования. Небольшое прикольное комьюнити: @decltype_chat_ptr_t Автор: @insert_reference_here

إظهار المزيد
1 950
المشتركون
+2124 ساعات
+227 أيام
+2230 أيام
أرشيف المشاركات
#ml

В продолжение темы. И да, это решение одной из задач на Leetcode. class Open { private: enum class Value { Paren, Bracket, Brace }; Value value; Open(Value val): value(val) {} public: Open() = delete; static std::optional<Open> from_char(char ch) { switch (ch) { case '(': return Open(Value::Paren); case '[': return Open(Value::Bracket); case '{': return Open(Value::Brace); default: return std::nullopt; } } bool complements(char ch) const & { switch (ch) { case ')': return value == Value::Paren; case ']': return value == Value::Bracket; case '}': return value == Value::Brace; default: return false; } } }; class Solution { public: bool isValid(string s) { std::vector<Open> stack {}; for (auto ch : s) { if (auto open = Open::from_char(ch); open.has_value()) { stack.push_back(*open); } else { if (!stack.empty() && stack.back().complements(ch)) { stack.pop_back(); } else { return false; } } } return stack.empty(); } };

#music Bytenommer — Fair and square youtube.com/watch?v=CMLPy2NJwVc

#prog #c #article Статья о том, как правильно использовать этот ваш fork (спойлер: СЛОЖНО) habr.com/ru/post/586604/

> The first erroneous computation example is CVE-2021-39137 which is an interesting go-ethereum bug identified by Guido Vranken. The bug caused a netsplit in the Ethereum network and essentially results from the ability to have a mutable and non-mutable slice referencing the same chunk of memory. A deeper dive into CVE-2021-39137 – a Golang security bug that Rust would have prevented https://research.nccgroup.com/2022/02/07/a-deeper-dive-into-cve-2021-39137-a-golang-security-bug-that-rust-would-have-prevented/ И что б два раза не вставать. Интересный пост > On 2/2/2022, I reported a critical security issue to Optimism—an "L2 scaling solution" for Ethereum—that would allow an attacker to replicate money on any chain using their "OVM 2.0" fork of go-ethereum (which they call l2geth). Attacking an Ethereum L2 with Unbridled Optimism https://www.saurik.com/optimism.html

В старых версиях раста для работы с коллизиями в хэшмапах использовалось линейная зондирование (???, linear probing), а сиды переиспользовались. ~5 лет назад было обнаружено что это приводит к (неожиданно) квадратичному поведению. Вот отличный writeup на эту тему: Accidentally Quadratic: Rust hash iteration+reinsertion Эта проблема была позже разрешена тем, что хэшмапы по умолчанию используют случайный сид для хэшера, что делает порядки элементов в разных хэшмапах независимыми. Так-же hashbrown, библиотека которую использует std, после редизайна использует ~квадротичное зондирование, что тоже помогает с этим. Если интересно как редезайнули hashbrown (SwissTable), то можно прочитать вот тут: https://gankra.github.io/blah/hashbrown-tldr/ Цитируя авторку статьи: > it was such an improvement that it reduced compile times for basically every rust program by ~10% (rustc is just several HashMaps in a trenchcoat)

Первый элемент односвязного списка и последующий список обычно называют head и tail. Если вам по каким-то причинам потребовалось делить список на первый элемент, второй элемент и остаток, предлагаю второй элемент называть neck

Так, чтобы решить возможные споры раз и навсегда, предлагаю вашему вниманию следующий вопрос: Вафель классный?
Anonymous voting

The mermaid is taking over Google search in Norway — неизвестный спамер создал сайт, который вылезает в поисковой выдаче Google в Норвегии по практически любому запросу

cursed-fact-of-the-day: бинарный поиск по массиву из 2^20 элементов примерно на 20% медленнее, чем бинарный поиск по массиву из 2^20 + 123 элементов. Причина: https://en.algorithmica.org/hpc/cpu-cache/associativity/ Источник: twitter@sergey_slotin

#prog #rust Вафель рассказывает про макрос pin!, добавленный в std совсем недавно, и про то, чем он отличается от аналогичных макросов из tokio и futures

#prog Данила рассказывает, когда read-write lock может быть хуже обычного mutex в, казалось, идеально подходящем под read-write lock сценарии, и что с этим делать

using map = std::unordered_map<std::remove_reference_t<decltype(nums)>::value_type, int>;
Не давайте растистам (мне) писать код на C++.

photo content

#prog #rust #meme

Ну и почему оно не компилируется?

impl Date for Me {}

#prog #rust document-features — макрос для генерирования документации по фичам крейта. Фактически реализует док-комментарии для фич в Cargo.toml: [dependencies] document-features = "0.1" ## ... [features] ## The foo feature enables the `foo` functions foo = [] ## The bar feature enables the [`bar`] module bar = [] #! ### Experimental features #! The following features are experimental ## Activate the fusion reactor fusion = [] ...И всё это в итоге преобразовывается макросом document_features::document_features! в строку, которую можно вставить в #[doc]

#prog #python #rust #article Статья про оптимизацию одной симуляции. Несмотря на (очевидное) переписывание на расте, автор смог добиться четырёхкратного ускорения исключительно за счёт правок в коде на питоне.