LINUX.ORG.RU

Сообщения mersinvald

 

Выбора планшета тред.

Хочу порадовать жену планшетом под новый год, а то больно смотреть как она на мобильнике пишет тексты :)

Но я в них совсем не разбираюсь, по этому, ЛОР, помогай. Посоветуйте что-нибудь из новых андроидопланшетов от 9 дюймов, с приличным железом (а то мой опыт общения с планшетами ограничивался дешевыми моделями, в которых даже системные анимации лагали, с тех пор не люблю планшеты).

Очень желательно, чтобы был официальный док-клавиатура, и чтобы производили не совсем маргинальные китайцы. Именитой китайщиной не брезгую.

Виндопланшеты до 40к и с нормальным EFI тоже сойдут, но я сомневаюсь, что такие есть.

P.S Apple не предлагать

 , , ,

mersinvald ()

Больше нет TuxOnIce в pf-kernel?

Сегодня обнаружил, что в pf больше нет TuxOnIce: ни в pkgbuild'е ни в конфиге ядра нет никаких его упоминаний.

Почему он больше не поддерживается, проект TuxOnIce вроде как жив и развивается (форкнули)?

Актуально для версии 4.11.7.

cast post-factum

 , , , ,

mersinvald ()

Опакечивание софта для арча

Распространяю готовые статические бинарники, но дополнительно для удобства пользователя решил опакетить для популярных дистрибутивов.
Использую для этого fpm.

Софтинка автоматически билдит пакеты для разных ПМов, в том числе pkg.tar.xz для пакмана.
Вопрос: можно ли в AUR опубликовать pkg.tar.xz?
Насколько я понял, там нужен PKGBUILD, но поскольку у меня ничего не билдится, а только распаковывается, нужно чтобы PKGBUILD качал с гитхаба pkg.tar.zx и работал с ним.

Есть ли готовые примеры как это сделать?

 , ,

mersinvald ()

WebUI для libvirt с хорошей поддержкой KVM и LXC

Доброго времени суток, разыскивается современный WebUI к libvirt, имеющий хорошую поддержку KVM и LXC.
Фронтендов к KVM тысячи, а вот с контейнерами работает мало кто.
В идеале нужно решение, выполняющее роль менждера виртуалок/контейнеров, а не комбайны для руления облачными ресурсами различных амазонов вроде OpenNebula.

 , ,

mersinvald ()

Arch, Makepkg, missing package name

Свежий инсталл арча, при установке yaourt возникла проблема:
Из доки:

git clone https://aur.archlinux.org/package-query.git
cd package-query
makepkg -si

Фаза установки makepkg фейлится с ошибкой

loading packages...
error: missing package name in /home/mike/.tmp/package-query/package-query-1.8-2-x86_64.pkg.tar.xz
error: '/home/mike/.tmp/package-query/package-query-1.8-2-x86_64.pkg.tar.xz': invalid or corrupted package
==> WARNING: Failed to install built package(s).

Что характерно, ошибка не гуглится :С

 , ,

mersinvald ()

Наиболее эффективный способ передачи файлов по сети.

Пишем сетевую файловую систему над FUSE, задача предполагает передачу кучи маленьких файлов (до 10кб) с сервера на клиент и обратно + агрессивное кэширование (без синхронизации с сервером, клиент блокирует любые операции на запись используемых файлов на время работы).
Пытаюсь принять решение касательно протокола передачи, возникла пара вопросов:
1. Как эффективнее передавать данные: по TCP с потерями на контроль доставки или по UDP без попакетного контроля (контролировать чексуммами блоков большого размера, например)?
2. Утилизует ли TCP-поток всю ширину канала? Будет ли выигрыш от приема/передачи через N соединений по количеству ядер процессора?

И касательно FUSE: 3. Можно ли его научить работать асинхронно тогда, когда это возможно?
Последовательное чтение метаданных в директориях с кучей файлов — это боль.

 , , , ,

mersinvald ()

Поругайте ржавый код

Написал свою первую библиотеку на Rust, старался соблюдать идиомы и принятый стиль языка.
Прошу ревью, что можно улучшить, выразить лучше или просто более понятно описать.

Приветствуется конструктивная критика как по технической составляющей, так и по офомлению кода и документации.

Страничка на crates.io
GitHub
Документация

 , ,

mersinvald ()

Rust compiler plugins

Кто-нибудь имел дело с кодогенерацией средствами libsyntax или syntex?
Поделитесь источниками откуда брать примеры и объяснения как генерировать растовский AST. Я нашел только syntax extensions, но это не совсем то.
Застрял на создании структуры и имплементации интерфейса к ней.
Должно же быть хоть что-то кроме автогенеренной документации по сигнатурам функций libsyntax.

Есть ли простой способ кодогенерации через linsyntax а-ля syntax-macro-way?

 , ,

mersinvald ()

Gentoo и хипстерские графические API

Пытаюсь заставить работать Vulkan.
Установил sdk, собрал примеры, поставил тестовую месу с поддержкой vulkan.
При запуске демки вываливается:

cube: /opt/VulkanSDK/examples/cube.c:2611: demo_init_vk: Assertion `!err && gpu_count > 0' failed.
“./examples/build/cube” terminated by signal SIGABRT (Abort)

intel HD3000, i965
ЧЯДНТ?

 , ,

mersinvald ()

Восстановление покалеченных портажей

Не буду уточнять обстоятельства, случайно снес себе часть /var, соответственно портаж забыл обо всех установленных пакетах, вплоть до @system.
Хочет пересобирать. Я не хочу.
Кроме того, при сборке некоторых пакетов (libffi) конфигурация валится по причине того, что в системе libffi уже присутствует.
Есть ли способ насильно заставить портаж вспомнить что необходимые пакеты установлены? Хоть бы и вручную попакетно, для тяжелых случаев.

 , , ,

mersinvald ()

CoW, docker и минимизация занимаемого дискового пространства

Есть задача, по которой нужно держать потенциально много chroot-префиксов, так, чтобы они занимали как можно меньше места.
Классическая задача для docker с его наследованием и CoW файловой системы, если бы не одно но: после копирования общего базового образа, преффиксы будут меняться довольно сильно, но новые данные в них частично (и не очень) будут совпадать.

Умеет ли докер или любая другая контейнерная система проводить дедупликацию данных во время работы (можно прерываться на мейнтейн), или лучше посмотреть на что-то иное?

 ,

mersinvald ()

Сколько времени уходит на компиляцию в Gentoo?

Написал скриптик, который, с помощью genlop выводит сколько времени $anonimous потратил на компиляцию за всё время использования текущего инсталла Gentoo.

Скрипт на GitHub Gist

Версия для Ъ:

wget https://gist.githubusercontent.com/mersinvald/b244c73dac730016ceab971e190a8ab3/raw/587e1d019c7bd261963096a5f9727aa2ddfcdd6a/mergetime

Запускать от рута (или с правами на /var/log/emerge.log)
Пишите кто сколько своей жизни потратил вникуда :)

P.S Я знаю, что мой Bash — говно

Перемещено leave из desktop

 , ,

mersinvald ()

Лучший способ реализации user-local package management

Сабж.

Нужно предоставить пользователям возможность ставить и настраивать свой софт локально для пользователя.
Софт одного пользователя не должен быть виден и запущен другим.

Я знаю, что можно использовать локальный Gentoo Prefix для каждого пользователя, но это может вылиться в конфликты и маскирование системных версий пакетов и настроек, что плохо.

Как лучше?

Gentoo GNU/Linux

 , ,

mersinvald ()

Привычки и Rust

На сишке привык циклы с предусловием писать так:

while(k--) {
   ...
}

В Rust это превращается (насколько я понимаю) в

while k > 0 {
    k -= 1;
    ...
}

Что не совсем красиво и неочевидно, с первого взгляда.
Как принято в Rust записывать циклы с предусловием, чтобы красиво и понятно?

 , ,

mersinvald ()

Разделение ресурсов в Rust

Есть такой кусок кода:

extern crate chan;
extern crate chan_signal;
use chan_signal::Signal;
use std::thread;
use std::net::UdpSocket;

fn main() {
    // Initialize system signals handler
    let signal = chan_signal::notify(&[Signal::INT, Signal::TERM]);

    // Create UDP socket
    let socket = UdpSocket::bind(
        ("0.0.0.0", 10000)
    ).unwrap();

    // Spawn handler thread
    thread::spawn( move ||  {
        let mut buf = [0; 1024];
        loop {
            // Waiting for incoming message
            let (n, src) = socket.recv_from(&mut buf).unwrap();

            println!("Received {} bytes from {}: {:?}", n, src, &buf[..n]);
        }
    });
    
    // In main thread wait for system signal
    let sig = signal.recv().unwrap();

    // Close socket
    drop(socket);
}

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

 , , ,

mersinvald ()

Обновление системы в Gentoo. Непонятки с -uDN

Везде и всюду пишут что единственно рассово верный способ обновлять генту — emerge -uDN world.
По логике вещей, эта команда должна пробежаться по всем пакетам с их зависимости найти что можно обновить, отрезолвить зависимости и максимально обновить систему, так?

emerge -uDN world
...
Total: 29 packages (15 upgrades, 14 reinstalls)

emerge -e world
...
Total: 900 packages (115 upgrades, 785 reinstalls)

Почему так? Почему полная пересборка мира выявляет больше возможных обновлений, чем, собственно --update --deep, и как можно устроить ту же пересборку, максимально привести систему к актуальному состоянию, но не пересобирать лишнего?

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

 , ,

mersinvald ()

Rust или D: что выбрать?

Впереди пара свободных от работы и учебы уикендов и хочется наконец заняться чем-то новым, оставив кресты на работе и написать что-нибудь «для души».
Соответственно, совместить приятное с полезным и заодно на основе пет-проджекта выучить новый язык.

Люблю системное и сетевое программирование, а так же распределенные/параллельные вычисления, ну и область интересов соответствующая.

В пользу D говорит его синтаксис + пара киллерфич, стянутых из функциональщины и «привычность», ввиду похожести на кресты.

За Rust — большая приближенность к железу, отсутствие GC (хотя к финальной версии собираются вводить?), крутые возможности по компилтайм вычислениям и перманентное ворчание tailgunner в теге ржавчины.

Что посоветуете и что лучше, какие есть отличия-киллерфичи, при применении обоих языков в одних областях?

 , , ,

mersinvald ()

Зеленые потоки в C и C++

Тема, конечно, избитая, но хотелось бы собрать в одном месте всю информацию как по наличию библиотек, так и по самостоятельной реализации.

  1. Есть ли готовые реализации, кроме прямого порта горутин со всеми их недостатками?
  2. Чем оно лучше и чем хуже пула нативных потоков?
  3. Посоветуйте литературу для более глубокого изучения альтернативных концепций трединга, желательно с собственным мнением что лучше и универсальнее.

 , , ,

mersinvald ()

Продолжение идей libbash: технический аспект и степень ненужности

В далеком 2011 году один студент в рамках GSoC начал писать очень интересную вещь: интерпретатор bash, реализующий парсинг в AST и работу над оным, без, собственно, вызова bash
И все бы хорошо, но лето кончилось, а с ним и энтузиазм студента: больше подвижек в эту сторону вроде не было (может из-за узкой области применения, может из-за говнокода самого сабжа, история умалчивает).

Наиболее интересна штука должна быть гентушникам, так как позволила бы на порядок ускорить работу portage засчет замены кучи вызовов bash на вызовы сишного апи libbash с соответствующим кэшированием абстрактных синтаксических деревьев.

Собственно, хочу продолжить это дело и довести до конца, но мне в корне не нравится подход автора оригинала: нагромождения буста, собственный велосипедный парсер итд.

Вопрос #1:
Подходит ли баш для составления формальной грамматики генератора LR-парсеров вроде bison? (в парсерах не силен, так что не бейте, если ответ очевиден)

Вопрос #2, преимущественно к разработчикам генты и портажа:
Ведется ли какая-то разработка в этом направлении или все затухло тогда в 2011?

Вопрос #3, к ним же:
Нужно ли, будет ли востребовано, и, будет ли включено в состав портаж, если допилю?

Вопрос #4, ко всем остальным:
Какой потенциал у libbash, кроме ускорения портаж, нужно ли оно?

UPDATE: Мне ответил мейнтейнер либбаша:

Я: We are wondering if libbash is still needed by gentoo dev team and why there was no activity since 2012?

Petteri: It has never been a required component. It could have been had enough effort been put into it. There's no activity because no-one is working on the project.

Я: What have changed and do portage now call bash for every ebuild?

Petteri: Nothing. Portage has always called bash for every ebuild.

Я: Is there any reason to continue libbash development?

Petteri: There is but if it happens, a re-evaluation of the architecture should be done to see if the choices are relevant any more.

 , , , ,

mersinvald ()

Ненормальные оптимизации: LTO при сборке ядра

Пересобрал свою гентушечку с тщательно подобранными оптимизациями, рад и доволен, но одна мелочь не дает мне покоя: ядро, собранное с -O2.

Хочу пересобрать с максимальными оптимизациями, -O3 --march и прочие заходят отлично, а с LTO — проблемы.
Ядро, понятное дело, LTO и не возьмет, но модули может.

Собственно, проблема: при линковке модулей, ar не подхватывает плагин из /usr/lib/bfd-plugins/, как для всей остальной системы.
Куда положить плагин чтобы он его видел или какие опции передать?

 , ,

mersinvald ()

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