LINUX.ORG.RU

Сообщения intelfx

 

systemd 218

Новости — Open Source
Группа Open Source

12 декабря был представлен очередной релиз системного менеджера systemd, совмещающего в себе функции системы инициализации, ведения журнала и управления сессиями пользователей. systemd основан на модели зависимостей (в противовес событийной модели), производит отслеживание процессов запущенных сервисов при помощи механизма cgroups ядра Linux, поддерживает механизмы сокет- и dbus-активации сервисов и предоставляет удобный декларативный синтаксис для описания демонов и других сущностей. Это позволяет производить агрессивную параллелизацию при запуске и остановке сервисов.

В рамках проекта также разрабатывается ряд легковесных приложений и демонов, выполняющих второстепенные, но распространённые задачи по управлению системой — от настройки подсистемы VT (systemd-vconsole-setup) до управления сетью (systemd-networkd) и профилирования загрузки (systemd-bootchart).

Список изменений:

( читать дальше... )

>>> Объявление о релизе

 ,

intelfx
()

systemd 218: пишу новость, не копипастьте с опеннета

Форум — Talks

$subj. Пару часов ещё. На опеннете не новость, а дерьмо.

 

intelfx
()

dynamic_cast вреден — почему?

Форум — Development

По мотивам вот этой темы и вот этого ответа AIv.

Допустим, у меня есть программа, которая парсит арифметическое выражение, строит по нему дерево и как-то его оптимизирует. (Зачем — не спрашивайте. Я знаю, что уже написано. Программа пишется исключительно в целях самообразования.)

Соответственно, оптимизатор дерева реализован с помощью паттерна «visitor». Есть методы, которые вызываются для узлов разных типов. Например, я пишу Visitor::visit (Node::AdditionSubtraction&) и хочу реализовать упрощение дерева по принципу a - (b + c) = a - b - c (т. е. объединение вложенных узлов сложения-вычитания). Для этого мне нужно выбрать всех потомков текущего узла, имеющих тот же тип, и присоединить их потомков к текущему узлу.

Допустимо ли в такой ситуации пройтись по всем потомкам узла и применить к каждому dynamic_cast<Node::AdditionSubtraction*>()?

Код вот здесь, если что. Fire at will, кидайте помидоры.

 

intelfx
()

X-Plane: планировщик полётов (flight-planner)

Форум — Games

Добрый вечер.

Если вдруг здесь есть симмеры, подскажите, что вы используете для создания flight-plan'ов, рисования маршрутов и просмотра карты в совокупности с X-Plane? Встроенная карта — ужас.

На винде с MSFS я использовал FSCommander и был вполне доволен (особенно тем, как он рисует саму карту). От флайтпланнера мне нужно, чтобы он:

  • приемлемо рисовал карту (т. е. чтобы названия объектов на карте не накладывались друг на друга и так далее)
  • показывал справку по navaid-ам и прочим аэропортам
  • позволял «рисовать» маршруты вручную (т. е. по очереди указывать navaid-ы)
  • (опционально) умел автоматически прокладывать эти самые маршруты
  • (такого я нигде не видел, но хотелось бы) показывал для каждого navaid-а, как до него добраться: курс и расстояние до ближайшего VOR-DME (или до двух ближайших VOR)

Есть такое? Задолбался уже летать бесцельно. Goodway так и не запустился, XPFlightPlanner просто неюзабелен. Web-based xFlightPlanner — самое хорошее, что я на данный момент видел, но является коммерческим (требует подписки) и всё равно не умеет два последних пункта.

Нативность, конечно, желательна, но отвращения к вайну у меня нет.

 ,

intelfx
()

Цитирование

Форум — Linux-org-ru
  • отступ от полосы до текста стал нулевым (image)
  • вложенное цитирование не работает

 ,

intelfx
()

Нотификации в GNOME3 и KDE4

Форум — Development

Преамбула

Только что поставил себе GNOME 3.14 на попробовать. PIM layer на время эксперимента менять не стал, поэтому запускаю KMail. Соответственно, автозапускается аконади. Всё хорошо. Закрываю кмыло. Проходит десять минут (интервал проверки в аконади) — появляется гномошелловское уведомление о том, что у меня сколько-то там новых писем. Как понимаю, уведомление было сгенерировано аконади. При этом оно выглядит достаточно нативно: иконка, тайтл, все дела.

Собственно вопрос

Мне известны как минимум два способа отправить уведомление запущенному DE. Первый — это org.freedesktop.Notifications на сессионной D-Bus-шине, а второй (KDE-специфичный) — org.kde.knotify на той же самой шине.

Итак, по какому интерфейсу было отправлено вышеописанное уведомление? Это аконади имеет фоллбэк на org.freedesktop.Notifications в случае недоступности родного KNotify, или же KNotify автозапустился и каким-то странным образом (каким?) передал уведомление гномощели?

В пользу второго варианта говорит то, что, запустив qdbusviewer, я вполне могу наблюдать org.kde.knotify висящим на шине. Проверить каждую из гипотез не могу, т. к. вызвать метод Notify из org.freedesktop.Notifications почему-то не получается, а соответствующий метод addEvent из org.kde.knotify имеет дофига параметров, значения для части из которых с потолка не возьмёшь.

Зачем это мне, или защита от XY-проблемы

Хочу похачить uTox так, чтобы он издавал звук при поступлении сообщения/входящем звонке. Он умеет нотификации через org.freedesktop.Notifications, но в кедах поддержка этого интерфейса сделана по остаточному принципу, и реакцию на такие события настроить невозможно. Как это лучше сделать?

Понятия не имею, не оффтоп ли это для Development. Перенесите в General, если нужно...

 , , ,

intelfx
()

Очередные (аккуратные) кеды

Галерея — Скриншоты

В связи с HiDPI-экраном ушёл обратно с awesome на полновесные кеды. Viva la plasma, господа.

Конфигурация:

  • Arch current
  • systemd
  • KDE 4.14.0
    • Иконки — вездесущая и прекрасная {K,}Faenza
    • Тема плазмы — собственный форк Helium
      (Примечание: в репозитории старая версия, т. к. исходный автор темы — xn--i1atf и с последним апдейтом сменил лицензию на BY-NC-ND.)
    • Тема кьюта — Bespin (конфиг)
    • Цветовая схема кед и кьюта — Solarized Light
    • Цветовая схема терминала — Solarized Dark
    • Цветовая схема Kate/KDevelop — Solarized Dark
  • ШГ — PT Sans 10 и Terminus 11 (при 144 DPI и полном хинтинге)

Софт:

В общем, монохромная прозрачность, полное выгорание и терминус головного мозга. А в качестве темы GTK у меня дефолтная Adwaita, потому что всё остальное — УГ.

 , ,

intelfx
()

RFC HOWTO: автологин в иксовую сессию с помощью systemd

Форум — General

Добрый вечер, господа. Это тред-howto о том, как сделать корректный автологин в иксы «на чистом systemd». В вики мне писать влом, да и никто её не читает, а тут и теги указать можно, и людей скастовать. Собственно, да: border-radius, ecko.

В чём вообще проблема? Проблема в том, что значительное количество людей делают это через банальнейшие костыли, настраивая автологин в текстовую консоль и запуская иксы из bashrc (или, чего хуже, из bash_profile). Это плохо по трём причинам:

  • не залогиниться в другую физическую консоль в текстовом режиме
  • оверхед на проделывание цепочки такого вида:
    systemd
    /bin/agetty
    /bin/login
    PAM
    /bin/bash
    ~/.bashrc
    /bin/startx
    
  • в конце концов, это само по себе костыль.

Я предлагаю написать getty-подобный юнит, который будет запускать иксы от фиксированного пользователя с фиксированным номером дисплея на произвольном VT. (Почему так много хардкода? Потому что systemd — не дисплейный менеджер.)

Это тоже неидеальное решение. Например, нафиг идёт мультисит и возникают гонки между запуском иксов и обнаружением видеоустройств. Но этими недостатками мы пренебрежём.

Параграф один. logind, autovt и getty-подобные юниты. Getty могут запускаться двумя способами.

  • Первый — по требованию, через logind. При переключении на ttyN logind запускает юнит autovt@ttyN.service, который засимлинкен на getty@.service. Эта логика работает для tty2-tty6.
  • Второй — статически. Юнит getty@tty1.service включен по умолчанию и втягивается через getty.target. Это даёт нам всегда запущенный getty на tty1.

Соответственно, допустим, у нас есть юнит xorg@.service, который запускает иксы на указанном VT.
Его нужно либо симлинкнуть под именем autovt@ttyN.service, переопределив шаблонный юнит (тогда при переключении на выбранный VT иксы будут запускаться вместо getty — первый способ), либо отключить getty@tty1.service и включить вместо него xorg@tty1.service (тогда мы вместо всегда запущенного getty будем иметь всегда запущенные иксы — второй способ).

Параграф два. Xorg вместо getty. Итак, имеем юнит для иксов, написанный по аналогии с getty@.service: /etc/systemd/system/xorg@.service.

User=<впишитеюзера>
PAMName=login

-- это аналог su.

Conflicts=getty@%i.service
After=getty@%i.service

-- это некоторая защита от одновременного запуска getty на том же терминале.

StandardOutput=tty
StandardInput=tty-fail

-- это указание systemd запускать иксы подсоединёнными напрямую к терминалу, а не к логгеру (нужно для того, чтобы иксы можно было запускать не от рута... ах да, работает только с 1.16 и выше).

ExecStart=/etc/systemd/scripts/startx -D :0

-- это мой велосипед вместо startx с нескучным синтаксисом и exec xinit в конце, что важнее.

Дело в том, что systemd из-за вероятного бага при остановке юнита отправляет SIGTERM/SIGKILL не всем процессам в дереве, начиная с startx, а только самому startx. А поскольку он написан на шелле, то он радостно игнорирует SIGTERM и ждёт завершения xinit, которому никакого сигнала не приходит. Следовательно, проблему решаем переписыванием startx так, чтобы он в конце не запускал xinit подпроцессом, а делал exec xinit, заменяя им собственный процесс. Тогда сигнал приходит xinit'у, а он его корректно ловит и убивает иксы.

Всё остальное скопипащено из getty@.service.

Да, дисплей захардкожен в :0. Пара слов о назначении VT: процесс startx получает номер VT в переменной $XDG_VTNR (её устанавливает pam_systemd), а из startx запускается /etc/X11/xinit/xserverrc, который об этой переменной знает и передаёт X-серверу параметр vt$XDG_VTNR.

Параграф три. Запускаем. Итак, помещаем юнит в /etc/systemd/system/xorg@.service, startx в /etc/systemd/scripts/startx (можно куда угодно) и делаем:

systemctl daemon-reload
systemctl disable getty@tty1
systemctl enable xorg@tty1

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

Как-то так. Сейчас три часа семнадцать минут по московскому времени, поэтому прошу меня извинить за упрт стиль изложения, краткость, неконсистентное использование форматирования и так далее.

 , ,

intelfx
()

Батарейный отсек, 9xAA, большой ток

Форум — Science & Engineering

Добрый день.

Есть у меня портативный электрический велонасос. Работает он от 10-12V, ток в процессе работы достигает 10A. В комплекте с ним был батарейный говноблок из девяти спаянных вместе NiCd-аккумуляторов нестандартного типоразмера. Как и следовало ожидать от батарейного блока без балансировки, за два года он благополучно износился и сдох. Теперь я хочу сделать этому насосу нормальное питалово.

Собственно, имеются девять NiMH аккумуляторов типоразмера AA. Вопрос — где взять (как сделать) батарейный отсек на данное количество данных аккумуляторов, который выдержит ток порядка 10A?

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

Линукс тут ни при чём, потому что sci&eng.

 ,

intelfx
()

PulseAudio (по сети) + Amarok: воспроизведение прерывается практически сразу

Форум — General

Итак. Задача — стриминг звука по сети с ноута (x86) на хедлесс-машинку (ARM). Условия (софт на обоих системах одинаковый):

  • Arch current (Linux 3.16)
  • PulseAudio 5.0
  • Phonon 4.7.2
  • Amarok 2.8.0
  • достаточно быстрая сеть

Пульса настроена по умолчанию, за исключением явного указания звуковой карты на таргете. Когда я запускаю воспроизведение в Amarok'е, где-то полсекунды звук воспроизводится, потом индикатор позиции в плеере останавливается и звук перестаёт воспроизводиться. На Play/Pause амарок не реагирует, после Stop и повторного запуска воспроизведения всё повторяется.

Дело не в пульсе (mpv в таких условиях работает) и не в Phonon (альтернативный плеер на Phonon тоже работает). Кто-нибудь сталкивался?

 ,

intelfx
()

Самовыпил юзера?

Форум — Linux-org-ru
intelfx
()

Арчехейтеры, ваш день

Форум — Talks

Только что пушнутый в основной репозиторий KDE SC 4.14 требует кучу пакетов из testing-а. Среди них

  • akonadi 1.13.0-1
  • boost 1.56.0-1
  • boost-libs 1.56.0-1
  • libkgapi 2.2.0-1

(Relevant bugreport)

Таким образом, «просто pacman -Syu» сломает KDE.

 ,

intelfx
()

Прецеденты применения пункта правил 4.2

Форум — Linux-org-ru

...вообще имеются?

 ,

intelfx
()

rwsem, только не семафор

Форум — Development

Доброго времени суток.

В ядре Linux есть такой замечательный синхронизационный примитив, как rwsem (семафор читателей-писателей). Поскольку это семафор, количество операций down() и up() должно быть сбалансировано, т. е. up() нужно сделать столько раз, сколько было сделано down().

Вопрос: как «обойти» требование сбалансированности? Я хочу, чтобы любой поток имел возможность единовременно разлочить семафор. Дело в том, что счётчик семафора у меня уже есть (количество зарезервированных блоков в ФС), а от rwsem мне нужна только обёртка над счётчиком.

В голову приходит разве что потрясающе грязный вариант вида while (rwsem_is_locked(&foo)) up_read(&foo);.

Или же, если счётчик уже есть, можно обойтись другим примитивом вместо rwsem?

 , , ,

intelfx
()

Модуль nvidia (и nvidia-uvm) самопроизвольно загружается после выхода из suspend

Форум — General

Собственно, $subj. Конфигурация:

  • Optimus (HD3000 + GT540M)
  • Arch current
  • bumblebee 3.2.1
  • bbswitch 0.8
  • nvidia 340.24 (но началось раньше, на 337.25)
  • linux 3.15

Проблема в том, что модуль nvidia, подгружаясь, включает дискретную видеокарту и она начинает жрать+греться. Добавлять оба модуля в blacklist пробовал (модуль nvidia там по умолчанию) — всё равно подгружается при возобновлении.

 , , ,

intelfx
()

systemd 215

Новости — Open Source
Группа Open Source

4 июля был представлен очередной релиз системного менеджера systemd, совмещающего в себе функции системы инициализации, ведения журнала и управления сессиями пользователей. systemd основан на модели зависимостей (в противовес событийной модели), производит отслеживание процессов запущенных сервисов при помощи механизма cgroups ядра Linux, поддерживает механизмы сокет- и dbus-активации сервисов и предоставляет удобный декларативный синтаксис для описания демонов и других сущностей. Это позволяет производить агрессивную параллелизацию при запуске и остановке сервисов.

В рамках проекта также разрабатывается ряд легковесных приложений и демонов, выполняющих второстепенные, но распространённые задачи по управлению системой — от настройки подсистемы VT (systemd-vconsole-setup) до управления сетью (systemd-networkd) и профилирования загрузки (systemd-bootchart).

Большая часть изменений, вошедших в этот релиз, была направлена на поддержку т. н. stateless-систем, в которых все данные находятся на разделе /usr (монтируемом в режиме только для чтения), а корень (включая /etc) размещается на tmpfs и автоматически пересоздаётся при каждой загрузке системы. Этот функционал предполагается использовать в легковесных контейнерах, а также как средство «полного сброса» без переустановки ОС.

( читать дальше... )

>>> Объявление о релизе

 ,

intelfx
()

Key Signing Party — кто-нибудь хочет поучаствовать?

Форум — Talks

Для тех, кто не знает, что это: The Keysigning Party HOWTO. В двух словах — мероприятие, на котором люди обмениваются своими публичными ключами PGP, с верификацией личности каждого участника. Так строится т. н. сеть доверия (на самом деле, граф доверия).

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

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

Выдохнул.

P. S.: давно — это ещё с Fedora 19 Release Party, но тогда как-то всё заглохло (key signing party). Или не заглохло, просто я об этом не знаю ( alpha?)

 , ,

intelfx
()

harfbuzz и freetype2: кольцевая зависимость, prelink не работает

Форум — General

Сабж.

$ ldd /lib/libfreetype.so | grep harf
        libharfbuzz.so.0 => /usr/lib/libharfbuzz.so.0 (0x00007f3a53466000)
$ ldd /lib/libharfbuzz.so | grep free
        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00007f4e7906b000)

Всё бы ничего, но prelink сходит с ума и отказывается прелинковать половину бинарников, потому что они все зависят от freetype:

$ sudo prelink -avmR |& grep -E 'harf|free'
prelink: /usr/lib/libharfbuzz.so.0.929.0 has a dependency cycle
prelink: /usr/lib32/libharfbuzz.so.0.928.0 has a dependency cycle
prelink: Could not prelink /usr/lib/libQtGui.so.4 because its dependency /usr/lib/libfreetype.so.6 could not be prelinked

Что делать? Вариант «забыть про prelink» рассматривается, если кто-нибудь расскажет, почему он не нужен. (Хинт: машинка — ARMv7 800MHz, производительность всё же важна.)

 , ,

intelfx
()

IM и конференции done right

Форум — Desktop

Что вы посоветуете заместо Skype и вконтакта?

Требования:

  • передача файлов
  • (желательно) видео- и аудиоконференции
  • мелочи вроде:
    • нормально выглядящего, не вырвиглазного интерфейса (или хотя бы существования невырвиглазной темы)
    • аватарок
    • уведомлений о прочтении и наборе, etc
  • OTR и прочее шифрование — строго не в ущерб

Хотелось бы ещё на KDE/Qt, или Gtk без привязки к DE.

 

intelfx
()

systemd 214

Новости — Open Source
Группа Open Source

11 июня был представлен очередной релиз системного менеджера systemd, совмещающего в себе функции системы инициализации, обратно совместимой с SysV и LSB, ведения журнала и управления сессиями пользователей. systemd основан на модели зависимостей (в противовес событийной модели), производит отслеживание процессов запущенных сервисов при помощи механизма cgroups ядра Linux, поддерживает механизмы сокет- и dbus-активации и предоставляет удобный декларативный синтаксис unit-файлов для описания демонов и других сущностей, что позволяет производить агрессивную параллелизацию при запуске и остановке сервисов.

В рамках проекта также разрабатывается ряд легковесных приложений и демонов, выполняющих второстепенные, но распространённые задачи по управлению системой — от настройки подсистемы VT (systemd-vconsole-setup) до управления сетью (systemd-networkd) и профилирования загрузки (systemd-bootchart).

Основные изменения:

( читать дальше... )

>>> Объявление о релизе

 ,

intelfx
()

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