LINUX.ORG.RU

Сообщения intelfx

 

NFS, лаптопы, исчезающие серверы и umount -f

$subj. Хочу использовать NFS-over-VPN для доступа к своей файлопомойке в домашней сети. Поскольку у меня ноут, ситуация «сеть пропала, сервер не отвечает» является штатной.

Как настроить клиент так, чтобы он не уходил в кому при пропадании сервера и позволял корректно отмонтировать ФС?

Сейчас строка опций выглядит так: soft,vers=4.2,proto=tcp,timeo=10,retrans=1. Даже с таким неприлично низким таймаутом отмонтирование ФС (umount -f -l) продолжается примерно минуту и всё равно в итоге фейлится.

Что делать? Как сказать системе «не жди сервер, он не вернётся, просто отмонтируй ФС сейчас»? Или NFS на такое принципиально не рассчитана и на сервере остаётся какой-то стейт, который обязательно нужно деаллоцировать? (Если так, то что юзать вместо него?)

 , ,

intelfx
()

Интеграция самописного markdown → LORCODE конвертера в браузер

Добрый вечер, господа.

Предыстория: в процессе написания очередной новости про systemd я вконец задолбался и запилил конвертер маркдауна в LORCODE, выполненный в виде кастомного writer-модуля для pandoc на Lua. И оно даже работает и экономит мне дикое количество нервов. (Там требуется собирать нативный модуль для поддержки юникода для рисования табличек аскиартом, причём собирать требуется через зад, так что потенциальным тестерам рекомендуется выпилить функцию Table() и два импорта прямо над ней.)

Собственно, вопрос: как наиболее безгеморройно интегрировать эту штуку в Firefox, чтобы можно было писать комментарии прямо в маркдауне?

 ,

intelfx
()

Генераторы lorcode | markdown на LOR

Господа, ни у кого нет конвертера чего-нибудь (маркдауна, HTML, ...) в лоркод? Да хоть из HTML на регекспах (да, я знаю, но всё же).

Алсо, когда ждать маркдауна? Вопрос к администраторам: генерация HTML из текста выполняется единовременно или при каждом отображении? А то можно пандок прикрутить.

 , , ,

intelfx
()

Убийца XMPP по имени Matrix — никто не пробовал?

$subj. Имеем очень интересный IM по имени matrix (https://matrix.org), который я бы описал как «взяли концепции электронной почты и без изменений перенесли в IM». Есть т. н. homeserver'ы (== «почтовые серверы»), на которых хранится история; есть клиенты, которые к ним подключаются.

«Комнаты» могут быть раскиданы по нескольким серверам. Есть адекватная синхронизация истории, есть адекватный мультилогин. Ах да, это всё немного похоже на Git: ведётся обмен не сообщениями, а состоянием и историей.

Есть референсный homeserver с веб-клиентом (synapse), есть клиенты для iOS и Android. Деплоить они его предлагают через б-гомерзкий virtualenv, но я опакетил под арч.

Anyone interested? Или, может быть, кто-то уже юзает?

UPD: join us at #lor:matrix.org.

 , , ,

intelfx
()

GNOME3 ня!

Собственно.

Обновившись до .16, я заметил, что иксы у меня внезапно запущены от пользователя. Итак, награда «безжалостный убийца легаси» 2015 года достаётся GDM как первому дисплейному менеджеру, научившемуся это делать полностью из коробки. А сам он при этом рендерится — правильно, через вейланд.

К чему это я? GNOME3 ня. Эти чёртовы засранцы действительно умеют и могут.

 , ,

intelfx
()

Ядро неверно определяет TRIM granularity (erase unit size)

Доброе утро, господа.

Дано:

  • SATA SSD, одна штука (эффект наблюдается как минимум на OCZ Vertex 4 и LSS-16L6G, но, думаю, модель не имеет значения);
  • любое ядро Linux вплоть до 4.0-rcчтототам.

Наблюдаем:

$ lsblk -D /dev/disk/by-id/ata-LITEONIT_LSS-16L6G_S0C41154Z1ZSCA185984
NAME   DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sdb           0      512B       2G         0
├─sdb1        0      512B       2G         0
├─sdb2        0      512B       2G         0
└─sdb3        0      512B       2G         0

# hdparm -I /dev/disk/by-id/ata-LITEONIT_LSS-16L6G_S0C41154Z1ZSCA185984 | grep TRIM
	   *	Data Set Management TRIM supported (limit 8 blocks)
	   *	Deterministic read ZEROs after TRIM

Первая утилита забирает данные из /sys/block/sdX/queue (куда они помещаются драйвером дискового контроллера в ядре), вторая (AFAIK) — опрашивает контроллер напрямую.

Что не так:

Значения DISC-GRAN (размер erase unit'а) и DISC-ZERO должны быть равны 4K и 1 соответственно. Получается, что ядро не в состоянии узнать эти данные, хотя они на самом деле доступны (через другой интерфейс, видимо).

Вопрос:

Багу не нашёл, зарепортил. У кого-нибудь ещё такое наблюдается? Есть ли здесь специалисты по всему по ведру и разнообразным ATA, которые могут сказать, чем hdparm отличается от ядерного драйвера (и хотя бы примерно указать, куда копать)? Писать код руками умею, если что.

 , ,

intelfx
()

Организация QoS в домашней локалке с Mikrotik-овским роутером

Добрый день, господа суровые энтерпрайзные (или не очень) админы.

У нас было:

  • два пакетика травы
  • Микротиковский роутер (RB2011, если это важно)
  • Торрентокачалка-файлопомойка-и-пульсовский-аудиосервер в одном лице (подключена по GbE)
  • Энное (где N < 5) количество обычных смертных компьютеров (подключены по 802.11n)
  • Один недоадмин в лице меня (knowledge of networking → 0)

Обычные смертные компьютеры хотят юзать скайп и периодически стримить музыку на аудиосервер. У них это не всегда получается (особенно стримить музыку), поскольку торренты мешают. Если кильнуть ktorrent или приостановить обмен данными, всё чинится.

Отсюда вопрос: как сделать так, чтобы торренты не мешали? KTorrent позволяет устанавливать значение DSCP для своего трафика.

 , ,

intelfx
()

Default to power on для внешней железки

Имеется некоторая внешняя железка (SATA-шный контейнер для хардов), подконнекченная к микромашинке с целью организации файлопомойки. Соответственно, стоит задача сделать её функционирование совершенно автоматическим. Всё бы ничего, но у железки есть одна неприятная особенность: после потери питания она не включается автоматически. Хотелось бы заставить её это делать.

Отсюда вопрос: если я впаяю параллельно кнопке включения (там обычная тактовая кнопка, без фиксации) резистор+конденсатор с R*C = 1..2, получится то, что мне нужно? Особенно в том плане, что заряду на конденсаторе нужно будет куда-то стечь после потери питания.

 , ,

intelfx
()

GNOME3 (Evolution, Empathy) + HiDPI

Вопрос к пользователям GNOME3 на экранах с большим разрешением. Как побороть размытые шрифты в Evolution и Empathy (и наверняка где-то ещё)? Такое ощущение, что оно рендерится с DPI 96, а потом растягивается в два раза.

 ,

intelfx
()

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

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

 

intelfx
()

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

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

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

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

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

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

 

intelfx
()

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

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

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

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

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

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

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

 ,

intelfx
()

Цитирование

  • отступ от полосы до текста стал нулевым (image)
  • вложенное цитирование не работает

 ,

intelfx
()

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

Преамбула

Только что поставил себе 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
()

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

Добрый вечер, господа. Это тред-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, большой ток

Добрый день.

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

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

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

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

 ,

intelfx
()

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

Итак. Задача — стриминг звука по сети с ноута (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
()

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

intelfx
()

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

Только что пушнутый в основной репозиторий 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

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

 ,

intelfx
()

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