Задать вопрос
  • Unreal engine 5 ругается на DirectX. Что делать?

    Во-первых: сказано же белым по черному, что не доступны будут на твоём компьютере advanced rendering features.

    Во вторых:
    Твой компьютер слишком слабый даже для того чтобы попробовать какие-нибудь демки в ue5
    Ответ написан
  • Можно ли поставить ssd m2 Samsung 980 500gb в материнку b450m s2h?

    Можно, разрешаю.
    Просто на сайте материнки данного ссд нет в списке поддерживаемых

    Не "список поддерживаемых", а список проверенных на совместимость.
    Ответ написан
    1 комментарий
  • Можно ли работать с PythonAnywhere через свою консоль?

    В бесплатной версии нельзя.
    В платной версии можно подключиться по ssh.
    Также в платной версии есть поддержка Jupyter Notebooks
    Ответ написан
    1 комментарий
  • ПО для разработки приложения для андроид?

    Поддержка Flutter официально есть в Android Studio, Intellij (community и ultimate), VS Code, и в emacs.

    Версии intellij community мне хватит или надо ultimate версию?
    Или vs code лучше подходит?

    Откуда нам знать, что тебе лучше подойдёт и чего хватит или не хватит.

    Попробуй сам и реши
    Ответ написан
    Комментировать
  • Почему логическое "И" & в C# возвращает 1?

    0 возвращает не &.

    & - жадный оператор. И левый, и правый операнд будут вычислены.
    && - ленивый. Если значение левого операнда false, то второй операнд даже не будет вычисляться.

    Получается, что в первом случае выражение вычисляется полностью:
    true & false & false -> false
    Выражение firstNumber++ > 0 имеет значение false, тк это пост-инкремент.
    В результате значение firstNumber=1 тк инкремент был вызван.

    Во втором случае инкремент не будет вызван, тк значение выражение будет очевидно в самом начале:
    (true && false)&& ... -> false
    Тк инкремент не вызван, secondNumber=0
    Ответ написан
    Комментировать
  • Как добиться симуляция физики неваляшки в unity 2d?


    самый близкий результат получил при смещении центра тяжести вниз через код, но тогда объект начинает вести себя очень странно(скользит из стороны в сторону и улетает за пределы карты),

    Вообще это так и делается. Вероятно у тебя с чем-то ещё проблемы - попробуй задать ещё один вопрос, где ты подробнее эту проблему описываешь, желательно с видео и кодом
    Ответ написан
    Комментировать
  • Как называется такой материал?

    Выглядит просто как металл + эффекты искажения и хроматической абберации сверху.
    И несколько кубов друг в друге.
    Вроде бы всё достаточно легко гуглится по запросам
    "Blender metalic material"
    "Blender chromatic aberration effect"
    "Blender distortion effect"
    Ответ написан
    Комментировать
  • App store и google play регистрируют новые юр лица?

    Да, ограничения есть.
    Без иностранной карты никак не оплатить
    Ответ написан
    Комментировать
  • Возможно ли оптимизировать Inline метода с throw с помощью директив препроцессора?

    Да, возможно. Эта проверка с exception просто исчезнет из Release сборки в таком примере.
    Но в таком случае лучше использовать Debug.Assert - они тоже в релизе исчезнут.
    Но если в штатной ситуации capacity реально может оказаться меньше нуля - лучше проверку оставить.
    Ну и ещё есть какой-то атрибут, чтобы показать JIT-у, что выпадение исключения в твоём коде - это что-то очень редкое, и тогда JIT будет оптимизировать код исходя из этого.

    + Если ты уберёшь эту проверку на 0 совсем, то тогда производительность наоборот может упасть, тк jit будет дальнейший код оптимизировать исходя из того, что capacity может быть меньше нуля => будет вставлять повсюду проверки на выходы за границы, хотя в случае с проверкой и исключением - jit бы знал, что такое невозможно и наоборот бы выпилил дальнейшие проверки.

    + Обязательно пиши бенчмарки, если пишет что-то неочевидное, что должно улучшить производительность.
    Ответ написан
  • Какой самый легковесный nix-дистрибутив?

    Самый лёгкий из deb-подобных собственно Debian.
    Ответ написан
    1 комментарий
  • Какие есть биосовместимые и прозрачные фотополимеры для LCD 3D принтера?

    Есть Formlabs BioMed Clear Resin - прозрачная и тестировалась на биосовместимость. Даже сертификат имеется
    Изделия из неё не токсичны даже при длительном контакте со слизистыми оболочками.
    Цена соответствующая, как и на всё околомедицинское)

    Думаю, можно найти и аналоги - проще всего у тех производителей, которые позиционируются как раз на медицине/стоматологии/имплантах/итд.

    У luxaprint есть тоже подобные смолы, даже в более широком ассортименте
    Ответ написан
    Комментировать
  • Поведение VKScript отличается от идентичного кода на C# (или я тупой)?

    Так и задумано. Через публичное API нельзя получить сейчас (уже года два точно) доступ к сообщениям.
    VK.NET это обходит, используя другое API и притворяясь приложением vk.
    Ответ написан
  • Как изменить структуру кода?

    vabka
    @vabka Куратор тега Rust
    Нет, нельзя. Модули в Rust оперируют функциями/типами/трейтами, но не отдельными кусками кода.
    Ты можешь вынести функции f1 и f2 в отдельные файлы:

    main.rs
    mod m01;
    mod m02;
    mod m03;
    
    fn main() {
        m01::f1();
        m02::f2();
        let (i, p) = m03::f3();
        println!("i = {:?}", i);
        println!("p = {:?}", p);
    }


    m01.rs
    pub fn f1() {
     let num: u8 = 12;
     println!("num = {:?}", num);
    }


    m03.rs
    pub fn f2() {
     let s: String = "abc".to_string();
     println!("s = {:?}", s);
    }


    В случае m03 ты можешь попробовать сделать функцию, которая будет возвращать значения переменных i и p:
    pub fn f3() -> (u8, String) {
      let i: u8 = 88;
      let p: String = "xyz".to_string();
      (i, p)
    }


    PS: Я уже было хотел предложить макрос вида:
    macro_rules! f4 {
      () => {
        let i: u8 = 88;
        let p: String = "xyz".to_string();
      }
    }

    Но он работать не будет, ибо гигиена.

    Но можно сделать так:
    macro_rules! f4 {
      ($a: ident, $b: ident) => {
        let $a: u8 = 88;
        let $b: String = "xyz".to_string();
      }
    }
    
    fn main() {
        f4!(i, p);
        println!("{} {}", i, p);
    }


    PPS: ну и ещё есть макрос include!, который буквально решает твою задачу - вставить кусок кода из файла, но его я не советую использовать.
    Ответ написан
    2 комментария
  • Какой аналог видеокарты AMD Radeon HD 7800 на сегодня?

    RX 460, RX 560, GTX 1050, gtx 750ti, R9 370
    Очень легко гуглится, если поискать "AMD Radeon HD 7850 vs [Это уже предложит поисковик]"
    Ответ написан
    Комментировать
  • Можно ли давать свой udid другому человеку?


    Предназначение у UDID одно. Уникальный номер для регистрации в портале разработчиков Apple Developer.

    Если ты не знаешь зачем - не давай.
    Ответ написан
    Комментировать
  • Чем отличается ForkJoinPool.execute() от ForkJoinPool.submit()?

    submit возвращает Future, по которой можно отследить статус задачи, а execute - нет.

    Это вроде бы должно быть очевидно из их описания
    Ответ написан
    Комментировать
  • Как сделать много вставок в HashMap за минимальное время?

    vabka
    @vabka Куратор тега Rust
    Отвечая на твои вопросы:
    1 - есть ли что-то быстрее, чем tokio
    2 - правильно ли я использую tokio
    3 - насколько хорошая с точки зрения производительности идея использовать Arc
    4 - можно ли ускорить саму по себе структуру HashMap или только переписывать?


    1. В твоём случае лучше взять rayon для параллельной обработки, тк tokio предназначен для асинхронного io.
    2. см п1. Как именно ты tokio использовал я не смотрел. Дмитрий Беляев хорошо ответил по этому поводу
    3. Плохая. Лучше взять другую структуру данных
    4а. Можно процентов на 30 ускорить HashMap если заранее сделать with_capacity
    4б. И в n раз ускорить если сделать несколько HashMap по одному для каждого из N потоков (и передать во владение каждому потоку, чтобы не тратиться на синхронизацию и подсчёт ссылок).
    Для большого количества вставок неизвестного количества данных лучше подойдёт BTreeMap

    1. Многопоток тебе тут не поможет (а нет, обманул. Многопоток поможет. А вот async-нет)
    2. Ты бенчмаркаешь format!("{}", i)
    3. Вообще тебе тут стоит посмотреть на какие-нибудь concurrency-safe lockfree структуры. Например есть достаточно популярный крейт dashmap который такое предлагает.
    UPD: я обманул сам себя. dashmap не lockfree. Под капотом это как раз несколько HashMap, спрятанных за RwLock:
    pub struct DashMap

    pub struct DashMap<K, V, S = RandomState> {
        shift: usize,
        shards: Box<[RwLock<HashMap<K, V, S>>]>,
        hasher: S,
    }


    Мои бенчмарки с использованием criterion

    Результат:
    Обрати внимание, что тесты без format на порядок быстрее проходят.
    Но я не уверен, что корректно написал бенчмарк для btree_known_key__3M
    hashmap_no_capacity_format_key__3M
                            time:   [1.4810 s 1.5362 s 1.5952 s]
    
    hashmap_set_capacity_format_key__3M
                            time:   [1.0688 s 1.0744 s 1.0804 s]
    
    btree_format_key__3M    time:   [754.93 ms 843.10 ms 933.95 ms]
    
    
    vec_set_apacity__3M     time:   [1.7122 ms 1.7309 ms 1.7655 ms]
    
    dashmap_rayon_format_key__3M
                            time:   [294.76 ms 303.70 ms 316.85 ms]
    
    btree_known_key__3M     time:   [554.56 ms 556.18 ms 558.41 ms]


    Код

    use std::{
        collections::{BTreeMap, HashMap},
        time::Instant,
    };
    
    use criterion::{black_box, criterion_group, criterion_main, Criterion};
    
    fn hashmap_no_capacity_format_key(n: usize) -> HashMap<String, usize> {
        let mut map = HashMap::new();
        for i in 0..n {
            let key = format!("key_{i}");
            map.insert(key, i);
        }
        map
    }
    
    fn hashmap_set_capacity_format_key(n: usize) -> HashMap<String, usize> {
        let mut map = HashMap::with_capacity(n + 1);
        for i in 0..n {
            let key = format!("key_{i}");
            map.insert(key, i);
        }
        map
    }
    
    fn btreemap_format_key(n: usize) -> BTreeMap<String, usize> {
        let mut map = BTreeMap::new();
        for i in 0..n {
            let key = format!("key_{i}");
            map.insert(key, i);
        }
        map
    }
    fn vec_set_capacity(n: usize) -> Vec<usize> {
        let mut vector = Vec::with_capacity(n);
        for i in 0..n {
            vector.push(i);
        }
        vector
    }
    
    fn btreemap_known_key(keys: impl Iterator<Item = (String, usize)>) -> usize {
        let mut map = BTreeMap::new();
        for (k, v) in keys {
            map.insert(k, v);
        }
        map.len()
    }
    
    fn dashmap_rayon_format_key(n: usize) -> dashmap::DashMap<String, usize> {
        use rayon::prelude::*;
        let map = dashmap::DashMap::with_capacity(n);
        (0..n).into_par_iter().for_each(|i| {
            let key = format!("key_{i}");
            map.insert(key, i);
        });
        map
    }
    fn bench(c: &mut Criterion) {
        c.bench_function("hashmap_no_capacity_format_key__3M", |b| {
            b.iter(|| hashmap_no_capacity_format_key(black_box(3_000_000)))
        });
        c.bench_function("hashmap_set_capacity_format_key__3M", |b| {
            b.iter(|| hashmap_set_capacity_format_key(black_box(3_000_000)))
        });
        c.bench_function("btree_format_key__3M", |b| {
            b.iter(|| btreemap_format_key(black_box(3_000_000)))
        });
        c.bench_function("vec_set_apacity__3M", |b| {
            b.iter(|| vec_set_capacity(black_box(3_000_000)))
        });
        c.bench_function("dashmap_rayon_format_key__3M", |b| {
            b.iter(|| dashmap_rayon_format_key(black_box(3_000_000)))
        });
        c.bench_function("btree_known_key__3M", |b| {
            b.iter_custom(|times| {
                let mut total = vec![];
    
                for _ in 0..times {
                    let mut keys = Vec::with_capacity(3_000_000);
                    for i in 0..3_000_000 {
                        keys.push((format!("key_{i}"), i));
                    }
                    let start = Instant::now();
                    black_box(btreemap_known_key(black_box(keys.drain(..))));
                    total.push(start.elapsed());
                }
                total.iter().sum()
            });
        });
    }
    criterion_group! {
        name = benches;
        config = Criterion::default().sample_size(10);
        targets = bench
    }
    criterion_main!(benches);


    Ответ написан
    5 комментариев
  • Как открыть папку (не в самой консоли) через консоль?

    explorer . (обязательно с точкой)
    Ответ написан
    Комментировать