Forwarded from Информация опасносте
мне уже несколько раз прислали эту ссылку, так что придется делиться — однострочная команда для Windows, которая приводит к разрушению индекса папок и файлов на дисках NTFS, и данные могут быть потеряны. в теории может быть доставлена на компьютер разными способами, но Microsoft, даже зная о ней, не исправляет её.
don’t try this at home
https://www.bleepingcomputer.com/news/security/windows-10-bug-corrupts-your-hard-drive-on-seeing-this-files-icon/
don’t try this at home
https://www.bleepingcomputer.com/news/security/windows-10-bug-corrupts-your-hard-drive-on-seeing-this-files-icon/
BleepingComputer
Windows 10 bug corrupts your hard drive on seeing this file's icon
An unpatched zero-day in Microsoft Windows 10 allows attackers to corrupt an NTFS-formatted hard drive with a one-line command.
Блог*
#prog #cpp Действительно, выразительный. https://twitter.com/Nekrolm/status/1326175405397651457
#prog #cpp
От этого же человека — руководство по UB в C++. Не для новичков, подразумевает, что сколько-то вы в C++ уже разбираетесь.
Общее впечатление — как страшно жить.
От этого же человека — руководство по UB в C++. Не для новичков, подразумевает, что сколько-то вы в C++ уже разбираетесь.
Общее впечатление — как страшно жить.
GitHub
GitHub - Nekrolm/ubbook: C++ programmer's guide to undefined behavior
C++ programmer's guide to undefined behavior. Contribute to Nekrolm/ubbook development by creating an account on GitHub.
Блог*
#prog #cpp От этого же человека — руководство по UB в C++. Не для новичков, подразумевает, что сколько-то вы в C++ уже разбираетесь. Общее впечатление — как страшно жить.
Ну и цитата из TWiR к месту:
Think of "it works" when you have UB like this: You've flipped a coin 1 time and it's come up heads and you've concluded it's never tails.
Think of "it works" when you have UB like this: You've flipped a coin 1 time and it's come up heads and you've concluded it's never tails.
this-week-in-rust.org
This Week in Rust 372 · This Week in Rust
#prog #rust #article
Simplifying endianness sensitive file parsers in Rust with Omnom
Статья о том, как, эксплуатируя вывод типов в Rust, писать код для разбора бинарных значений, поменьше упоминая порядок байт.
Simplifying endianness sensitive file parsers in Rust with Omnom
Статья о том, как, эксплуатируя вывод типов в Rust, писать код для разбора бинарных значений, поменьше упоминая порядок байт.
www.parsed.uk
Blake Loring
Blake Loring, software developer. My personal website
Forwarded from rusta::mann
Начинает казаться, что выделение новичков в отдельный новичковый чат было ошибкой нашего ру комьюнити.
Всё чаще наблюдаю, что в новичковом чате сидят и отвечают такие же новички, как те, что задают вопросы -- и в итоге получилась эхо-камера неверных, но очень уверенных догадок.
А опытные ребята, которые, по задумке, должны были отвечать на новичковые вопросы, видимо, устали от новичков, которые не читают растбук, и перестали активно участвовать в обсуждениях -- врываются только когда бредометр начинает зашкаливать.
Решения у меня, правда, нет -- активно модерировать мейн чтобы "атцы" новичков не обижали за глупые вопросы ресурсов и желания не хватит.
Всё чаще наблюдаю, что в новичковом чате сидят и отвечают такие же новички, как те, что задают вопросы -- и в итоге получилась эхо-камера неверных, но очень уверенных догадок.
А опытные ребята, которые, по задумке, должны были отвечать на новичковые вопросы, видимо, устали от новичков, которые не читают растбук, и перестали активно участвовать в обсуждениях -- врываются только когда бредометр начинает зашкаливать.
Решения у меня, правда, нет -- активно модерировать мейн чтобы "атцы" новичков не обижали за глупые вопросы ресурсов и желания не хватит.
#prog #rust
Набор постов (считай, книга), посвящённый пошаговой реализации на Rust текстового редактора
Набор постов (считай, книга), посвящённый пошаговой реализации на Rust текстового редактора
this is philipp
hecto: Build Your Own Text Editor in Rust
#prog #rust #parsing #rustlib
fast_float — библиотека для быстрого парсинга чисел с плавающей точкой. Судя по бенчмаркам, быстрее lexical_core, да и вообще практически всех библиотек.
Является портом одноимённой библиотеки для C++ за авторством небезызвестного Даниела Лемира.
fast_float — библиотека для быстрого парсинга чисел с плавающей точкой. Судя по бенчмаркам, быстрее lexical_core, да и вообще практически всех библиотек.
Является портом одноимённой библиотеки для C++ за авторством небезызвестного Даниела Лемира.
GitHub
GitHub - aldanor/fast-float-rust: Super-fast float parser in Rust (now part of Rust core)
Super-fast float parser in Rust (now part of Rust core) - aldanor/fast-float-rust
#prog #rust #article #successstory
О том, как переписали на Rust и радикально снизили количество потребляемых ресурсов
О том, как переписали на Rust и радикально снизили количество потребляемых ресурсов
Хабр
Как мы ржавели. История внедрения и обучения
Все говорили – переходи на rust! Начинай пользоваться самым-самым языком, который самый любимый язык на stackoverflow и всё такое. Я тяжело вздохнул и огляделся. Ну опять двадцать-пять. Ладно, давайте...
#prog #rust #parsing #rustlib
nom_supreme — библиотека, расширяющая функционал nom. Новые комбинаторы-методы, очень подробный тип ошибок, функция для быстрого создания парсера любого типа, реализующего FromStr и ещё по мелочи.
В примерах используется cool_asserts — библиотека для более пригодных для использования в
nom_supreme — библиотека, расширяющая функционал nom. Новые комбинаторы-методы, очень подробный тип ошибок, функция для быстрого создания парсера любого типа, реализующего FromStr и ещё по мелочи.
В примерах используется cool_asserts — библиотека для более пригодных для использования в
#[test]
-функциях ассертов.docs.rs
nom_supreme - Rust
A collection of excellent utilities for nom, including:
#bio
Статья (перевод на хабре) с разбором строения вакцины от SARS-CoV-2 от Pfizer.
Да, она вышла почти месяц назад, и что
Статья (перевод на хабре) с разбором строения вакцины от SARS-CoV-2 от Pfizer.
Да, она вышла почти месяц назад, и что
Bert Hubert's writings
Reverse Engineering the source code of the BioNTech/Pfizer SARS-CoV-2 Vaccine - Bert Hubert's writings
Translations: ελληνικά / عربى / 中文 (Weixin video, Youtube video) / 粵文 / bahasa Indonesia / český / Català / český / Deutsch / Español / 2فارسی / فارسی / Français / עִברִית / Hrvatski / Italiano / Magyar / Nederlands / 日本語 / 日本語 2 / नेपाली / Polskie / русский…
Блог*
#prog #rust #successstory Статья об опыте использования Rust в софте для видеоконференций, который, по словам разработчиков, превосходит по малости задержки все альтернативные решения. Experiencing no software-related downtime so far is both a pleasant…
#prog #rust
Статья от этих же разработчиков о разработке firmware для физического пульта. Спойлер: всё прошло на удивление гладко.
Статья от этих же разработчиков о разработке firmware для физического пульта. Спойлер: всё прошло на удивление гладко.
blog.tonari.no
Using Rust for a simple hardware project | tonari blog
Diving into the embedded Rust ecosystem
#prog #rust
Пара слов о трейте Copy.
Во-первых, это один из "магических" трейтов, помечен атрибутом
В-третьих, как сказано в документации к
Продемонстрирую на примере:
Пара слов о трейте Copy.
Во-первых, это один из "магических" трейтов, помечен атрибутом
#[lang = "copy"]
. Компилятор проверяет, что если тип тем или иным способом задекларирован как Copy
, то и всего его поля должны быть Copy
. Следующий код не компилируется:#[derive(Clone, Copy)]Ошибка:
struct StringHolder(String);
error[E0204]: the trait `Copy` may not be implemented for this type
--> src/lib.rs:1:17
|
1 | #[derive(Clone, Copy)]
| ^^^^
2 | struct StringHolder(String);
| ------ this field does not implement `Copy`
Во-вторых, один и тот же тип не может реализовывать Copy
и Drop
одновременно. Скажем, следующий код не компилируется:#[derive(Clone, Copy)]Ошибка:
struct Primitive;
impl Drop for Primitive {
fn drop(&mut self) {}
}
error[E0184]: the trait `Copy` may not be implemented for this type; the type has a destructorТак как полноценных negative trait bounds в Rust всё ещё нет, ограничение
--> src/lib.rs:1:17
|
1 | #[derive(Clone, Copy)]
| ^^^^ Copy not allowed on types with destructors
Copy
можно использовать как более сильную замену ограничению !Drop
.В-третьих, как сказано в документации к
Copy
, "Copies happen implicitly, for example as part of an assignment y = x
. The behavior of Copy
is not overloadable; it is always a simple bit-wise copy.". С другой стороны, Clone
является супертрейтом Copy
, и наличие реализации Copy
не мешает вызывать .clone()
явно. Однако, в отличие от Copy
, Clone::clone
в принципе может вызывать любой код. Поэтому, в частности, технически замена в итераторной цепочке .cloned()
на .copied()
является ломающим изменением, даже если элементы итератора реализуют Copy
.Продемонстрирую на примере:
use std::cell::Cell;Если запустить этот код, то он напечатает
struct Counter<'a>(&'a Cell<u32>);
impl Clone for Counter<'_> {
fn clone(&self) -> Self {
self.0.set(self.0.get() + 1);
Self(self.0)
}
}
fn main() {
let n = Cell::new(0);
let arr = [Counter(&n), Counter(&n), Counter(&n)];
arr.iter().cloned().for_each(drop);
println!("`Counter::clone` called {} times", n.get());
}
`Counter::clone` called 3 times
. Теперь добавим к определению Counter
аннотацию #[derive(Copy)]
и допишем в main
тот же код, что там есть, но с заменой .cloned()
на copied()
:fn main() {Код теперь выводит:
// ...
let n = Cell::new(0);
let arr = [Counter(&n), Counter(&n), Counter(&n)];
arr.iter().copied().for_each(drop); // изменение в этой строке
println!("`Counter::clone` called {} times", n.get());
}
`Counter::clone` called 3 times
`Counter::clone` called 0 times
Берегите себя и не пишите, пожалуйста, в Clone::clone
что-то помимо собственно клонирования.doc.rust-lang.org
Copy in std::marker - Rust
Types whose values can be duplicated simply by copying bits.