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

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
А тихой сапой подкралась очередная круглая цифра — тысяча подписчиков. Казалось бы, вполне ожидаемое событие, учитывая, что в последние месяцы это число медленно, но верно росло — но меня оно всё равно застигло врасплох. Думаю, за это стоит поблагодарить несколько каналов, которые недавно прямо упоминали Блог*: @oleg_log (Олег, разблокируй уже в чате, пожалуйста), @lilfunctor (который недавно тоже перевалил за тысячу участников, в связи с чем искренне поздравляю Михаила) и @nosingularity. Спасибо, мужики.

Что же это значит для меня? Ну, во-первых, что я, оказывается, умею писать интересно — в смысле достаточно интересно, чтобы заинтересовать большее количество людей, чем с которым я могу познакомиться лично. Во-вторых — то, что число подписчиков — не особо осмысленная величина, но всё же приятно греет душу. В-третьих... Что большое количество подписчиков не обязательно означает большое количество финансовой отдачи 😅.

Впрочем, я веду блог не ради денег — иначе бы я уже давно бросил это дело. Как бы то ни было — спасибо, спасибо вам всем, в том числе и за временами плодотворные дискуссии в Чат*е. Вперёд, к новым вершинам — и к новым тысячам!
This media is not supported in your browser
VIEW IN TELEGRAM
Блог*
Ради чего вы подписаны на канал?
И традиционно попрошу новоприбывших ответить в опросе
Блог* pinned «И традиционно попрошу новоприбывших ответить в опросе»
По :debian: в Телеграме выползает эмодзи 🍥 теперь.
> Footnotes now supported in Markdown fields

YES YES YES

<source>
Как перестать забывать обедать на работе
#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