LINUX.ORG.RU

Сообщения meliafaro

 

Слишком много зла

 

Это, как и некоторые другие IT-ресурсы, превратились в рассадник срачей и бездумных холиваров. Пользователи, мало компетентные в своей области, устраивают травлю одиночек, которые знают и умеют больше них, но не согласны с мнением агрессивного большинства. Практически каждый тред полон идиотскими стычками между сторонниками разных ЯП, init-ов, дистрибутивов. Модераторы кошмарят юзеров, защищая свои собственные предпочтения.

Этот ресурс дал мне важный урок: средний айтишник - такой же быдлан, как и средний сантехник, только знает и умеет меньше. Образование программиста или администратора ничуть не гарантирует отсутствие зашоренности мышления, псевдорелигиозного фанатизма, шовинизма и недостатка рефлексии.

К счастью, есть и хорошие, годные айтишники, в том числе и здесь. Думаю, ради вменяемого общения с ними я ещё появлюсь здесь, рано или поздно, хотя уже в совершенно другом количестве и качестве.

Всем, с кем стоит временно попрощаться - пока-пока и спасибо за помощь и общение, ещё спишемся!

meliafaro
()

Очередная трабла с ждущим режимом

 , ,

Настольный комп, который всегда удобно было отправлять в «спячку»-суспейндить. На одном разделе Федора 34, на Другом перманентно что-то убунтушное - элементари, Минт, etc. На убунтушных на всех до единого проблема с ждущим режимом - при переходе в него система отключает большинство ресурсов, приглушает акк, тушит экран и виснет, что решается только хардресетом. На соседней Федоре такх проблем нет.

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

Может, тут кто-то нашёл причину?

meliafaro
()

Тем временем в FF завезли очередной редизайн

 ,

Собственно, вот: https://www.opennet.ru/opennews/art.shtml?num=55242

Из новшеств особенно доставил кулькулятор в адресной строке. Что дальше? Метеопрогноз в адресной строке, тетрис, биткоин-кошелёк?

meliafaro
()

a1batross, это ещё за что?

 

Я понимаю, что у тебя пригорело, но это ещё не повод тереть сообщения. Если у тебя есть, что возразить по существу, жду в теме, хотя не думаю, что ты силён в предмете.

Каст @a1batross

Свожу и развожу, часть шестая

meliafaro
()

Пара тупых вопросов о системном программировании

 , , , ,

В раннем детстве, лет так 20 назад, я при помощи старого папиного ноута с Вин95 и QBasic пытался писать свои первые хэлловорлды. Там использовался брутально-прямолинейный способ сделать паузу в исполняемом потоке:

FOR I = 1 TO 100000
NEXT

Потом, когда я стал постарше, мне объяснили, что это напрасный перевод процессорного времени.

Теперь стало интересно, как дело обстоит в современных ОС. Если я напишу цикл, сидящий в отдельном треде, вроде

for (;;) {
    if (some_condition) {
        break;
    } else {
        continue;
    }
{

насколько это будет расточительно с точки зрения ресурсов? Предположим, у нас есть куча дочерних процессов, которые нерегулярно, время от времени выдают что-то в stdout/stderr, это нужно ловить в родительском процессе, парсить и как-то на это реагировать. Насколько такой прямолинейный подход будет эффективным? Какие есть альтернативы? Насколько разумно будет вообще заморачиваться по этому поводу, если речь идёт не о тысячах соединений в секунду? Как такие вещи оптимизируются ОС/рантаймом/компилятором?

meliafaro
()

Как удобно занулять отдельные биты?

 ,

Спасибо всем, кто ответил по существу. Остальных, по видимому, самое время отправить в игнор. Такие треды вообще хорошие детекторы.

meliafaro
()

Rust: несовпадение типов

 

Есть типа такой код:

   fn run_input_device(dev: &str) {
        let input = MidiInput::new("Some input").unwrap();
        let ports = input.ports();
        let mut port = Option::None;
        for i in &ports {
            if input.port_name(&i).unwrap() == dev {
                port = Some(i);
            }
        };

        let callback = move |stamp: u64, message: &[u8], _| {
            // println!("{}: {:?} (len = {})", stamp, message, message.len());}, ());
            let st = format!("{}: {:?} (len = {}\n", stamp, message, message.len());
            std::io::stdout().write_all(st.as_bytes()).unwrap();
            std::io::stdout().flush().unwrap(); 
        };

        if port.is_some() {
            let conn = input.connect(port.unwrap(), "midir-read-input", callback, ());
        loop {}
    }
}

Компилятор чихает следующим:

    |
116 |             let conn = input.connect(port.unwrap(), "midir-read-input", callback, ());
    |                              ^^^^^^^ one type is more general than the other
    |
    = note: expected type `FnOnce<(u64, &[u8], &mut ())>`
               found type `for<'r> FnOnce<(u64, &'r [u8], &mut ())>`

error: aborting due to previous error
При этом, что характерно, если поставить в аргументы функции connect() вместо названия замыкания его тело, то всё работает на ура. Ничкего не понимаю.

meliafaro
()

Библиотека для построения GUI на HTML/CSS

 , , ,

Собственно, что можете подсказать на эту тему? Есть движок, написанный, предположим, на C++ или Rust. К нему нужен ТОЛЬКО ИНТЕРФЕЙС - вся логика уже написана на низкоуровневых языках. То есть жирный js-движок не нужен, нужна чисто отображалка. Тянуть в систему Электрон или тяжёлые браузерные движки изи GTK/Qt не хочу.

Есть что-то такое в природе? Если ещё и Rust поддерживает, вообще шикарно будет.

Знаю, что так устроены некоторые аппликухи, навскидку, Bitwig. Но он проприетарный, не посмотришь.

meliafaro
()

Почистите тему

 , , ,

Царёк забыл принять таблетки и как-то выбрался из палаты, требуется карательная экспедиция. И, если можно, от анонов тоже тему закройте, а тот там Ад и Израиль. Как понять асинхонщину в Rust?

meliafaro
()

Как понять асинхонщину в Rust?

 , ,

В Rust какая-то очень «самобытная» асинхронщина, понять её сложно. Итак, необходимый минимум - реализовать трейт Future. Дольше веселее - есть несколько каких-то малопонятных сущностей, которые за что-то там отвечают, пока непонятно, за что.

Читал кучу мануалов, они из серии: https://sun1-16.userapi.com/impg/cTOihOqKWsJSPD6uBUB6KTQZY823V6f3TzS9Tw/5VAn_b_1JUI.jpg?size=1080x1080&quality=96&proxy=1&sign=3ec0c8687655c3ac555d4b06874cfc49&type=album

Как правильно достать значение из Future? 101 вопрос. Когда Future реализуется сам, а когда его необходимо реализовать самому? Я так понял, логика реализуется в poll(), нет?

Мне нужно, например, читать стдаут порождённого процесса или поток миди-данных в рандомное время на вводе.

Кто распишет вменяемый хеллоуворлд, скину на пиво;)

meliafaro
()

Rust: Как хранить &str в структуре?

 

Что я хочу:

struct Foo
{
    const char * name;
};
 
void Bar(struct Foo * foo)
{
    foo->name = "Name";
}
Теперь на Руст:
struct Foo<'a> {
    name: &'a str
}

impl<'a> Foo<'a> {

    fn bar(&self) {
        self.name = "nm";
    }
}
Это не конпелируется:
error[E0594]: cannot assign to `self.name` which is behind a `&` reference
  --> src/main.rs:26:9
   |
25 |     fn bar(&self) {
   |            ----- help: consider changing this to be a mutable reference: `&mut self`
26 |         self.name = "nm";
   |         ^^^^^^^^^^^^^^^^ `self` is a `&` reference, so the data it refers to cannot be written
Как это тут это всё вот?

Пы Сы: В итоге, это должно быть так:

struct Foo<'a> {
    name: &'a str
}

impl<'a> Foo<'a> {

    fn bar(&mut self) {
        self.name = "nm";
    }
}

meliafaro
()

С++, очень странные сегфолты

 , , , ,

Есть упрощённо такой кусок кода:

    data.recordedSamples = new float (m_buffer.get_frames() * m_buffer.get_channels());
    long l = m_buffer.get_frames() * m_buffer.get_channels();
    std::cout << l << std::endl; // 176400 в моём случае
    for(long int i = 0; i < l; i++ ) {
       std::cout << i << std::endl;
       data.recordedSamples[i] = 0;
}
Доходит каждый раз до ровно 36512 и вызывает сегфолт. catch (std::bad_alloc) не ловит. g++ и clang++ собирают одинаково. Пробовал даже через malloc память выделять, всё едино. Что там такого может происходить вообще?

meliafaro
()

Docke/podman: ls some_volume: cannot open directory '.': Permission denied

 , ,

Никак не могу взять в толк, что не нравится Подману. Он запущен с проброшенным вольюмом и отказывается ls-ить таргет. Права вроде на всё выставлены. Что посоветуете?

meliafaro
()

Что думаете о gtkmm?

 , ,

Что-то я попробовал писать на этом, думал, на крестах будет проще, чем на голой сишечке, но оказалось куда сложнее. Есть истории успеха?

Фанатиков более других тулкитов просьба не беспокоиться.

meliafaro
()

GNOME, новое ядро, зависание

 , , , ,

При использовании новых версий ядра натыкаюсь на одну досадную помеху: в какой-то произвольный момент что-то загружает систему настолько, что даже курсор перемещается раз в несколько секунд. Пока что ловил эту проблему только в Гноме, только при использовании gdm, только на Wayland и только при использовании ядра 5.9 и выше. Обычно этой ситуации предшествует интенсивный ввод/вывод, но не обязательно. Ловил такой глюк в Fedora и Debian Testing. На всякий случай - видеокарта Nvidia 240, свободный драйвер. Один раз поймал такой глюк с запущенным системным монитором, там процессор в основном занимал какой-то kworker, к сожалению, не смог сделать скрин. Если набраться терпения и, потихоньку двигая курсор, выйти из сеанса, это поведение пропадает. Кто ещё ловил такие глюки? Что посоветуете?

meliafaro
()

Чем писать efi live iso?

 , , , ,

У меня в большинстве случаев загрузка флешки зависает ещё на стадии загрузчика. Под Линукс пробовал и dd, и Gnome Disks, и минтовские/элементари утилиты. Под Шиндвс Rufus отрабатывает без проблем, тот же образ, та же флешка, загрузка стартует. В чём может быть причина и как побороть? Загружаться каждый раз в Вин только ради этого не комильфо.

meliafaro
()

Может, хватить подтверждать фотки рабочих мест?

 

ЛОР превращается в Юникс Порн какой-то. На главной только одна новость, зато куча чьих-то зассаных рабочих мест с огромными превью. Может, настало время сбавить темп?

meliafaro
()

Система «не полностью» уходит в сон и не возвращается из него

 , , , ,

Сорян за офигительно кликбейтный заголовок.

Когда перевожу систему в спящий режим, она не до конца выключается - внешний кулер так же продолжает дышать. Монитор переходит в спящий режим. После этого систему не удаётся восстановить - вроде бы монитор включается, начинается какая-то жизнь внутри, но на любые дальнейшие действия система не реагирует, приходится использовать хард-ресет.

Опытным путём удалось установить, что такая проблема имеет место на свободных драйверах Nouveau, на Хорг, на Убунту 18.04 и её производных (элементари, Минт, и т. д.). С блобом этой ситуации не происходит, но у него куча своих закидонов. На Федоре тоже проблем нет, но там Вэйланд. Карта сильно древняя, NVIDIA GT218 [GeForce 210]. С Невидией до этого на Линуксах почти не сталкивался, чем крыть, не знаю.

Кто сталкивался с такой напастью?

meliafaro
()

Как вернуть в Firefox старое поведение строки поиска?

 , ,

Мне очень нравилось старое поведение строки поиска с несколькими движками: набираешь запрос и кликаешь нужный движок - Гугл, Яндекс, Вики, и т. д. Сейчас, с какого-то релиза, поведение изменилось: теперь кнопки движков только выбирают нужный, но не запускают сам процесс поиска. Когда пользуешься поиском в районе 100 раз в день, эти лишние движения начинают подбешивать. Никто не знает, как вернуть старое поведение?

meliafaro
()

undefined reference to

 , , , ,

Что-то не пойму, в чём дело. Есть докер-контейнер, в котором развёрнута Убунту и сборочное окружение. При сборке исходники компилируются, но отказываются линковаться с libportaudio, выдавая серию сообщений вроде «undefined reference to `Pa_Initialize'». dev-файлы для portaudio установлены:

# ls /usr/lib/x86_64-linux-gnu/ | grep -i portaudio
libportaudio.a
libportaudio.so
libportaudio.so.2
libportaudio.so.2.0.0
libportaudiocpp.a
libportaudiocpp.so
libportaudiocpp.so.0
libportaudiocpp.so.0.0.12
Линкер упорно игнорирует и -lportaudio, и -L/usr/lib/x86_64-linux-gnu/. Под Федорой всё компилируется, правда, не в контейнере.

Где я не прав?

meliafaro
()

RSS подписка на новые темы