1.83K subscribers
3.3K photos
131 videos
15 files
3.57K links
Блог со звёздочкой.

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Как перестать забывать обедать на работе
#prog #article

Статья про паттерн для работы с IO.

"There’s a pattern that I keep recommending to teams over and over again, because it helps separate concerns around I/O; sending and receiving things over a network, interacting with AWS, saving and loading things from data stores. It’s an old idea; you’ll find it filed under “Decorator” in your Gang of Four book.

<...>

Decorators are a great compositional pattern allowing the different concerns that inevitably cluster around I/O boundaries to be neatly separated and recombined. This opportunity presents itself several times in every app we write, and does not require any fancy language, type system, or framework."
Всё в этой жизни уравновешано: если сегодня ты стукнулся правой коленкой, то завтра стукнешься левой
Блог* pinned «#prog #rust #abnormalprogramming Умные указатель с семантикой std::unique_ptr, который хранит объекты в виде NFT-токенов. Why? * Biggest issue facing $125 billion security industry: Memory safety. * "~70% of the vulnerabilities addressed through a security…»
Forwarded from iggisv9t channel
This media is not supported in your browser
VIEW IN TELEGRAM
Кажется, я теперь буду скупать все призмы и похожие штуки. Посередине кубик со световыми фильтрами.
#prog #rust #article #abnormalprogramming

Статья о том, как сделать в Rust свои примитивные численные типы. Ну, почти.
#prog #article

Статьяпродолжение) о дизайне hypothesis — библиотеки для property-based тестирования (вообще для Python, но с портами на другие языки, включая Rust). В отличие от родоначальника подхода QuickCheck, в котором для генерирования произвольных значений опирается на классы типов (и, следовательно, типы), hypothesis опирается на явные генераторы значений, которые, в отличие от генераторов QuickCheck, могут иметь состояние. В статьях убедительно аргументируется, что это позволяет сделать минификацию тест-кейсов значительно более эффективной, как в смысле райнтайм-производительности, так и в смысле снижения числа отбрасываемых тест-кейсов.

А вообще советую почитать остальные статьи в блоге, там много интересных.
Собственная Фудзи должна быть у каждого японского школьника - об этом позаботилась компания PLUS Stationery. Она продает стирательные резинки, которые поначалу выглядят обычно (слева на фото), но постепенно превращаются в Фудзи со снежной шапкой. Изобретательно!

Линейка таких резинок постоянно обновляется, и сейчас в продажу поступил осенний вариант с кленовыми листьями.
#prog #rust #rustlib

fmt_ext — библиотека для прикрепления кастомных реализаций Debug и Display к чужим типам.

Вместо тысячи слов:

use std::{fmt, marker::PhantomData};

use fmt_ext::{debug::*, DebugExt};

// Create a type that will implement custom debug...
struct SliceWithLenDebug<T>(PhantomData<T>);

// Implement custom debug...
impl<T> CustomDebug for SliceWithLenDebug<T>
where
T: fmt::Debug,
{
type Target = [T];

fn fmt_target(target: &Self::Target, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "Slice {{ len: {}, items: {:?} }}", target.len(), target)
}
}

// Attach custom debug implementation to the target type...
impl<T> AttachDebug<SliceWithLenDebug<T>> for [T] {}

// Look! Now we have just call `debug` method on the target type...
fn main() {
let numbers = [0, 1, 2, 3];
println!("{:?}", numbers.debug());

let strings = vec!["I", "am", "a", "custom", "debug"];
println!("{:?}", strings.debug());
}

(thanks @ilyavenner)
Видимо собаки !Sized
Хочется на ручки и обнимашек :c
#prog #rust #article #rustlib

Статья про фреймворк для тестирования программ на Rust при помощи генерации случайных программ и их исполнения при помощи miri. За счёт применяемых методик позволяет генерировать программы, которые тайпчекаются по построению. Несмотря на пачку ограничений, авторы сумели найти несколько багов в существующих библиотеках.

"The goal of this paper is to develop a methodology for automatically generating Rust programs to effectively test Rust library APIs. The main challenge is to synthesize well-typed Rust programs to account for proper chaining of API calls and Rust’s ownership type system and polymorphic types. We develop a program synthesis technique for Rust library API testing, which relies on a novel logical encoding of typing constraints from Rust’s ownership type system. We implement SyRust, a testing framework for Rust libraries that automatically synthesizes semantically valid test cases. Our experiments on 30 popular open-source Rust libraries found 4 new bugs."
Юные японцы не знают, что такое «дискета». Юные россияне тоже, наверное, не в курсе, но в завирусившемся твите интересно другое - что люди видят вместо дискеты.

Образ автомата с напитками накрепко вшит в голову каждого японца - хоть молодого, хоть пожилого. Туристы, побывавшие в стране, тоже понимают, о чем речь и не могут теперь развидеть на иконке автомат. Он настоящий символ страны, не хуже сакуры или суши.
😁1
#prog #article

Статья о распространённых ошибках при работе с POSIX-сигналами