О проекте XMC

Зачем XMC?
Действующие модули
Где взять?
Регистрация в XMC users registry
Расширяемость
Использованные технологии

Последнее изменение: 6 июня 2002

Зачем XMC?

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

XMC расшифровывается eXtensible (на манер расшифровки аббревиатуры XML) Media Catalogue и задуман для составления каталогов любых файлов, как и Where-Is-It (см. Расширяемость).

На свете есть немало каталогизаторов музыкальных файлов (далее для упрощения mp3-файлов), так как написание такой программы является хорошей задачей для начинающего программиста, и по объему эта задача невелика. Как правило, они предлагаются как shareware ценой от 10 до 25 баксов.

Среди них есть более-менее достойные (желающие могут посмотреть файл music/enduser-docs/software-reviews.txt в CVS проекта). Однако при всем обилии шаровари фриварных (бесплатных) программ известно не так уж много. Мы остановили свой выбор на одной - MPEG Audio Collection by Jurgen Faul, сокращенно MAC. Эта программа была задумана автором специально для тех, кто занимается обменами по почте, но ввиду нехватки времени остановлена на некоторой стадии развития (хотя недавно была выложена новая версия). Собственный XMC-каталогизатор (он уже есть, но ввиду высокой глючности id3lib на яве работает через пень-колоду) будет отличаться от MAC тем, что:

Действующие модули

Проект находится в ранней стадии разработки, так как пока имеется один разработчик, один бета-тестер и один (с небольшим) консультант. Здесь перечислено то, что более-менее работает на машинах у разработчика и бета-тестера на Sun Java 1.3.x под Windows 98 и Windows 2000. На линки следует кликать только тем, кто хочет принять участие в разработке отдельных частей проекта со стороны программирования.

Где взять?

Найти последнюю версию всегда можно на этой странице: http://sf.net/projects/xmc. Там же можно подписаться на рассылку извещений о выходе новых релизов. Пошаговая инструкция по установке и использованию, к сожалению, не данный момент есть только на английском, но может быть найдется доброволец и переведет? Это файл readme.txt в корневой директории проекта.

Чтобы все модули XMC работали, в данный момент необходимо наличие Sun Java 1.2 и выше, но идет работа над 1.1.x совместимостью чтобы работало в MS Java (jview), которая есть на каждой машине где стоит Internet Explorer (начиная с какой-то там версии). Все модули, кроме process, должны работать в Sun Java 1.1.x уже сейчас, а если исключить еще и ml2html, то будут работать в jview.

Регистрация в XMC users registry

Для того, чтобы попасть в эту красивую табличку, нужно составить публичную версию своего файлика trader.xml из корневой директории проекта, как здесь:

<?xml version="1.0" encoding="windows-1251" ?>
<trader>
   <name>adolg</name>
   <website>http://adolg.fromru.com</website>
   <webring-number>69</webring-number>
   <location>Новосибирск</location>
   <collection>
     <size>2135</size> <!-- количество альбомов в коллекции -->
     <genres><genre>art-rock</genre><genre>ethnic fusion</genre></genres>
     <mac>http://adolg.fromru.com/adolg_mp3_col.zip</mac> <!-- путь к списку
на сайте -->
   </collection>
</trader>

затем выложить этот файл к себе на сайт (скорее всего вам нужно дать ему хитрое название навроде trader.zip чтобы черезчур умные российские хостинги не испоганили его - да, hotbox.ru поганит даже виндовую кодировку превращая ее зачем-то в кои!) и послать мне URL файла мылом либо воспользоваться красивой формой внизу таблички. Кроме URL, нужен еще пароль, согласно которому я буду потом определять, вы это или не вы, когда ваш сайт переедет и вы захотите переместить свой файл.

Информация в табличке будет довольно часто обновляться (благо мне в отличие от мэйнтэйнера Российского клуба MP3 нужно будет лишь запустить у себя один батник) так что любое ваше изменение публичного trader.xml очень скоро отразится на общей страничке.

Расширяемость

Предусмотрено два вида плагинов, возможность подключения которых появится в следующей версии:

Использованные технологии

XMC работает на XSLT-процессоре Saxon by Michael Kay, домашняя страница которого, как вы можете заметить, тоже расположена на замечательной службе SourceForge. Saxon является command-line программой, и пока что весь интерфейс XMC - это интерфейс командной строки (что, на мой взгляд, отнюдь не так уж и плохо). Запускается он скриптами и гоняет один из XSLT файлов из директории xsl/. Пользователи могут легко менять скрипты, да в общем-то и .xsl-файлы под себя. Не так уж сложно освоить и программирование в среде Saxon (большинство XSLT используют расширения написанные на яве). В данный момент написаны только Windows скрипты (то бишь батники), однако под линуксом все тоже работает - этим обстоятельством я вовсю пользуюсь в своей технологии экономного по траффику обновления списка на вебе. Схема такова: новый вариант списка перегоняется на клиентской стороне в XML и diff'уется со старым. Полученный diff зипуется и отправляется на сервер. На сервере он раззиповывается, прикладывается patch'ем к старому XML, перегоняется в col, снова зипуется и копируется в директорию public_html.

Так что остается переписать батники для bash. В планах было написание GUI на C++ библиотеке wxWindows, но в последнее время я склоняюсь к мысли делать их на новой библиотеке SWT для явы (см. проект Eclipse). ID3lib на C++ будет задействован, соответственно, через Java Native Interface.

Конвертор MAC списка в XML выдает XML не в виде файла, а вызовами интерфейса SAX. Сейчас класс конвертора указан Саксону в качестве параметра "XML-parser", что приводит к некоторым проблемам (невозможно прочитать нормальный XML в том же XSLT, например файл настроек пользователя trader.xml). В скором времени эта проблема будет решена, при переходе на современную версию Саксона будут сделаны URI-resolver'ы которые открывают файловый поток с определенной кодировкой (что решит еще одну проблему, из-за которой trader.xml должен быть в кодировке UTF-8) и, если нужно, ассоциируют с ним класс конвертора.

Нужда в URI-resolver'ах с кодировками возникает из-за того, что используемый Саксоном очень маленький XML-parser AElfred понимает только ограниченный набор кодировок, а использовать поросенка размером в мегабайт или больше (Ксерсес) только ради поддержки русской кодировки мне неохота. Сам Саксон занимает всего лишь около половины мегабайта.

Когда я поставил JDK 1.4, я увидел, что в него включены уже и Xalan (XSLT-processor) и Xerces - но так как раньше их не было, как не было и графической библиотеки Swing, в стандартной поставке Java Runtime Environment, то в течении еще некоторого времени авторы будут продолжать прикладывать Swing, Xerces и Xalan к своим программам. И здесь необходимо отметить, что Saxon + SWT весят в несколько раз меньше.

SourceForge Logo