uk
Feedback
Блог*

Блог*

Відкрити в Telegram

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

Показати більше
1 924
Підписники
+224 години
+37 днів
-630 день
Архів дописів
И, кстати, у меня сегодня день рождения. Четверть века. Ура, что ли.

photo content

Repost from Segment@tion fault
Конец популярного крейта once_cell. Потому что once_cell больше не отдельный крейт, а официально ушел в std. С чем его поздравляем, ура. https://github.com/rust-lang/rust/pull/105587

#prog #rust Ура!

photo content

Repost from N/a
photo content

#лингво #meme

👋 Привет! Я сделал бота, который умеет искать сохраненные мемы в инлайн-режиме — Memeries Bot. Как это работает: присылаете
👋 Привет! Я сделал бота, который умеет искать сохраненные мемы в инлайн-режиме — Memeries Bot. Как это работает: присылаете боту картинку с текстом, он ее сохраняет и распознает на ней текст с помощью OCR-модели. Теперь эту картинку можно искать в инлайн-режиме по тексту, что был на ней. Бот поддерживает мемы на русском и английском, с другими языками — как повезет 😃 Попробовать можно тут: @memeries_bot Идея поиска мемов по тексту у меня была давно, но сделать бота руки дошли только сейчас. Кстати, идея с инлайн-режимом появилась благодаря этому проекту и советам @Loskirs

#prog #abnormalprogramming #java #article Сказка о типизации

#prog #meme GNU-стиль — это вообще мем. Тип, зачем люди вообще так пишут, да ещё и добровольно?

Repost from ozkriff.games 🦀
# godbolt.org's LLVM Opt Pipeline View Not exactly fresh news but it turns out that Compiler Explorer got an amazing feature
# godbolt.org's LLVM Opt Pipeline View Not exactly fresh news but it turns out that Compiler Explorer got an amazing feature last year: ability to step through the individual LLVM optimization passes and see what exact effect it has on your code sample. 🤯 Example: https://rust.godbolt.org/z/46P8MP3x1

#prog #amazingopensource

@tyranron совершенно справедливо добавил, что ошибку можно сделать и более читаемой:
#[deny(const_err)]
const _: () = {
    let n_activated = cfg!(foo) as usize + cfg!(bar) as usize + cfg!(baz) as usize;
    if n_activated != 1 {
        panic!("Only one of `foo`, `bar` or `baz` can be used")
    }
};

Но это требует наличия паники в const-контексте, что доступно только с версии 1.57, в то время как вариант с длинной массива работает даже на Rust 1.0.

#prog #rust Если вам вдруг потребовалось сделать набор взаимоисключающих фичи, то вместо квадратичного бойлерплейта с перечислением каждой пары фич и использованием compile_error! можно сделать так:
// `foo`, `bar` и `baz` взаимно исключают друг друга

// #[deny(const_err)] для Rust 
до версии 1.66
#[rustfmt::skip]
const _USE_ONLY_ONE_OF_FOO_BAR_BAZ: [(); 1] = [
    ();
    0
    + cfg!(foo) as usize
    + cfg!(bar) as usize
    + cfg!(baz) as usize
];

Ошибка не столь ясная, как в случае с compile_error!, но этот паттерн тривиально масштабируется на любое количество фичей.

#лингво #video youtube.com/watch?v=z_AGi2diHt8

#prog #cpp Книга о инициализации в C++ cppstories.com/2023/init-story-print

Сдавая кровь на анализы в поликлиннике, произвёл небольшой фурор своими ноготочками и получил шоколадку.

То есть когда компилятор делает name mangling — это абсолютно нормально и не вызывает вопросов, но когда я сразу пишу такой код — это сразу обфускация и грубое нарушение хороших практик?! 😤