[Homeros] Проигрыватели (was: Q: xmms2 и вопросы безопасности)
Michael Pozhidaev
msp на altlinux.ru
Пт Май 14 13:53:26 UTC 2010
Hello, Дмитрий Падучих!
> MP> Так неинтересно. В частности, когда серверов несколько, не совсем
> MP> понятно, куда слать команды нажатий на мультимедийной клавиатуре.
> MP> Недетерминизм.
>
> Пользователи ведь и подраться могут... Как быть? :)
Уже давно обдумываю стратегию, как сделать удобнее. Значит так, смотри
текущие выводы:
априори считаем, что имеем один сервер на систему для проигрывания
музыки, работающий от рута;
1. у незрячих людей есть особая задача - прослушивание аудиокниг. Их
создано очень много, и решение для прослушивания звуковых файлов должно
быть к этому адаптировано;
2. ключевая особенность аудиокниг - пользователь не должен терять то
место, где он остановился. Причём он не должен заботиться о том, что
программа должна это держать, закладка не должна теряться ни при каких
обстоятельствах. Другими словами, если он внезапно решил запустить
звуковой файл, ну например, другу показать, то просто новая команда "в
лоб" не должна терять место предыдущего воспроизведения;
3. вводим понятие таска. Сервер ничего о них не знает, кроме того, что у
них есть идентификаторы (пусть строковые), и они состоят из
определённого списка файлов (плейлиста);
4. в /var/lib/... для каждого юзера (с соответствующими правами) держим
файл, в который сервер автоматически вносит новую запись, когда по
какой-нибудь причине прекращается воспроизведение таска. То есть, если
остановили книгу, то сразу записали туда, где остановили;
5. на клиентской стороне нехитрым образом поддерживаем каталог
тасков. Для каждого из них в простейшем варианте есть две операции,
пустить с начала и пустить с момента, соответствующей последней записи в
логе. Таким образом, проблема аудиокниг решается;
6. теперь что до драки пользователей: ну слушать две музыки одновременно
никто не станет. Следовательно, самое плохое, что может произойти -- так
это новый юзер потеряет то место, где слушал предыдущий. В клиенте,
скажем, добавляем постоянную поддержку таска, который назовём "последний
таск". Если первый пользователь сел за свою консоль, то у него просто
есть команда "пустить прерванный таск". Второй пользователь тоже не
будет обиженным, т.к. всё вышеописанное для него тоже справедливо. Это
всё работает само по себе и не просит кушать у пользователя.
Это, само собой, подземная кухня. Для юзера это должно выглядеть как
можно проще. Ещё даже держу идею, что дистр ALT LInux Homeros Friend,
который должен быть на основе emacspeak, по хорошему должен иметь в
emacs меню на русском языке, упрощающее распространённые
задачи,проигрывание музыки, работу со сменными носителями (отдельная
история, тоже могу рассказать, если кто попросит) ну и т. д.
Оценю любые комментарии и вынесу благодарность за особенно ценные и
полезные замечания. Удобство в сочетание с эффективностью -- наша цель.
--
Michael Pozhidaev. Tomsk, Russia. E-mail: msp на altlinux.ru
Russian info page: http://www.marigostra.ru/
Подробная информация о списке рассылки Homeros