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

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
В СМЫСЛЕ УЖЕ СЕНТЯ а не, рано
xxx: Как приятно, когда пайплайны проходят 🙂
yyy: Если ваши пайплайны проходят, это значит что мало тестов написано 8))

#трудовыебудни
Forwarded from dev optozorax
Видео про самые дикие числа в математике. #repost

Если вы считаете что преисполнились в своём познании зная про i²=-1 и ε²=0 (дуальные числа), то приготовьте уран.

В данном видео показывается простая игра, в которой есть два игрока и граф, прикреплённый к полу с красными и синими палками. Суть игры в том чтобы последовательно ходить и отрезать ветки своего цвета. Выигрывает тот кто сделал ход последним. От графа зависит то кто гарантированно выиграет если будет следовать оптимальной стратегии. Поэтому математики захотели описать граф числом — положительные обозначают выигрыш синего игрока, а отрицательные — выигрыш красного. Определение величины числа производится через добавление другого графа сбоку, который может сбалансировать игру до невыигрышного состояния. Сначала мы приходим к целым числам: положительным, отрицательным и ноль. Затем приходим к дробям двойки. Затем добавляется зелёная палка, которую могут рубить оба и начинается жесть: появляются очень странные числа, которые меньше любого обычного числа, которые называют * (star), затем появляются числа (up) и (down), которые не равны *. Ну и потом математики упарываются по-полной и в попытках описать самые разные графы приходят к сюрреалистичным видам чисел: бесконечностям, самому маленькому возможному числу tiny и так далее. Самых различных чисел настолько много что математики уже стали рисовать зоопарки с животными и географические карты чисел. И в отличие от комплексных чисел, здесь всё _упорядочено_, то есть любое число можно сравнить с другим и сказать кто из них больше.

Знаете, одно дело выдумывать числа из воздуха, а другое — просто брать их из игры, то есть из своего рода реальности. И всё это так красиво выглядит, что я испытал математический оргазм во время просмотра. Теперь я хочу купить 1000-страничную книгу из которой взята эта тема и прочитать её. Кстати, одним из авторов этой книги является Джон Конвей.

Видео длится 57 минут, сделано через рисовалку от 3blue1brown и (я надеюсь) обязательно займёт призовое место в SoME1. Автор этого видео очень старался, делал видео суммарно 200 часов, и это его первый опыт. Но у видео на данный момент всего 800 просмотров, и оно не очень хайпит, поэтому СМОТРИТЕ, ЛАЙКАЙТЕ, РЕПОСТИТЕ ЧТО ЕСТЬ СИЛ.
👍1
Forwarded from partially unsupervised
Today I learned: в pytest можно легко тестировать логирование. Не нужно самому возиться с моками для логгера, все уже готово - достаточно использовать дефолтную фикстуру caplog (пример использования для ленивых).

Очень удобно, если у вас бывает своеобразный код, где логи - это единственный side effect. С другой стороны, такой код может быть и звоночком - возможно, с дизайном что-то не так.
#blogrecommendation не глядя
Итак, я всё-таки сделал себе блог! Теперь он доступен по адресу ihatereality.space.

И там уже есть моя статья “Why null sucks, even if it's checked”!

Блог работает на Zola и GH pages. Все сорцы открытые, если вдруг кто-то хочет посмотреть/стырить мои настройки =)
#prog #rust

Rust и Вафель не перестают меня удивлять.

В Rust есть паттерны. Они есть (в том числе) для массивов и слайсов. Если у нас есть массив на пять элементов, то мы можем переместить из него первый и последний элементы вот так:

let [first, _, _, _, last] = arr5;

В Rust также есть паттерны для слайсов, которые позволяют матчиться по последовательностям произвольной длины. Характерной их особенностью является возможность использовать паттерн .. для обозначения "все оставшиеся элементы слайса". Выглядит это примерно так:

fn trim_ends<T>(arr: &[T]) -> Option<&[T]> {
match arr {
[_, rest @ .., _] => Some(rest),
_ => None,
}
}


Очевидно, имя, привязываемое к .. внутри паттерна слайса, имеет тип &[T]. Однако .. можно использовать и для паттернов массивов! В этом случае имя, привязываемое к этому паттерну, будет иметь тип массива, содержащего все остальные элементы:

struct Foo;

fn main() {
let [_, rest @ .., _] = [Foo, Foo, Foo, Foo];
let _: [Foo; 2] = rest; // тайпчекается
}


Вот тебе и арифметика на массивах!

(thanks @wafflelapkin)
Хотите быстро инициализировать переменные в Rust? Просто используйте @!

let a @ b @ c @ d @ e = 0;

Это реально работает.
#rust be like:

for h in self.tcx.hir().parent_iter(param.hir_id) {
break 'origin match h.1 {
// несколько пропущенных веток
_ => continue,
};
}

Здесь
> уезжаю на работу слишком рано, чтобы забрать доставку из пункта выдачи
> приезжаю с работы слишком поздно, чтобы забрать доставку из пункта выдачи

😒
> мне не нравится реальность

Как вообще можно не любить реальность, в которой есть Вафелька?
Как политкорректно сказать коллеге (бывшему сишнику), что он пишет лютый говнокод?
Правительство РФ завело свой канал в Telegram: t.iss.one/government_rus.

У меня всё.
В СМЫСЛЕ УЖЕ СЕНТЯБРЬ