Дамп википедии - вьюер
Добавлено: 22 июн 2008 11:17
Пролог.
Скачали тут дампы русской википедии (360 mb, articles.xml.bz2), викитеки, викиучебника, викицитатника и ещё чего-то (всё вместе 500 mb articles.xml.bz2). Думаю, такая вещь будет очень полезная и для всех, у кого ограниченный интернет, и для всяких библиотек, и много ещё где.
(тут я выдумал текст на 10000 знаков, почему mediawiki и mysql не работают и я не верю в то что они вообще способны работать, но нет сил и желания его набирать)
Итак, после всего этого остаётся только сделать собственную систему отображения. Она должна быть очень быстрой и очень компактной
Вообще, лучше всего разделить на три части - конвертилку, сервер, и рендерилку.
Часть 1. Конвертилка.
Дампы медиавики хранятся в XML. Справка для непосвящённых читателей: бывают форматы, которые быстро обрабатываются машиной, но неудобны для человека, например, бинарные форматы файлов. Есть удобные для правки файлы - текстовые, это конфиги и скрипты, с некоторыми вольностями в синтаксисе, которые машине приходится последовательно обрабатывать - парсить. И есть формат XML, уникальность которого в том, что он одинаково неудобен и для человека, и для машины. Поэтому данные нужно перевести в какой-то быстрый, нормальный и компактный формат.
Разделим данные о странице на два поля (все остальные проигнорируем) - название страницы и содержимое страницы. Для названия нужно сделать произвольный доступ к любому номеру страницы, и отсортировка по имени, чтобы был доступ к любому его месту. Это позволит быстро отгружать страницы, шаблоны, красить красным/синим метки, а не как в медиавики открытие страницы на двухядерном атлоне - 40 секунд. Т.е., один файл индексов: Заголовок, смещение в файле данных, размер в файле данных, и сам файл данных - последовательно сваленные данные. Это просто для примера, так сказать - на пальцах.
Т.е. в соответствии с unixway это будет первая программа (или, наоборот, первая функция, я бы держал индексы вообще в памяти), которой будет пользоваться сервер. Данные в файле данных можно сжимать, можно не сжимать - почему - см. ниже.
Поиск: Полнотекстовый поиск это слишком жирно, но вот поиск только по заголовкам была бы очень удобная и полезная вещь.
Часть 2. Сервер.
Просто получать данные - смысла нет, нужен сервер по раздаче данных, который опрашивает конвертилку на полученный запрос, и выдаёт ответ, как в сыром виде (может), так и в виде HTML (по умолчанию), для этого пользуясь уже рендерилкой, как на локальный компьютер, так и по сети. Можно или взять и переделать простенький серверок, или свой сделать, я, в принципе, писал на бейсике на сокетах http-сервер.
Часть 3. Рендерилка.
Если посмотреть дамп, можно в нём увидеть вот такой текст:
<text xml:space="preserve">{{Братский проект |project=Wikipedia
|image=Wikipedia-logo.png
|text=В [[:w:Википедия|Википедии]] есть {{#switch:{{NAMESPACE}}|{{ns:14}}=соответствующая категория|{{ns:10}}=соответствующий шаблон|статья}}
|link={{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}
Это нужно привести в HTML. Если есть какие-то стандарты на формат, было бы неплохо. Тут нужно как-то разобраться, потихонечку распарсивая и смотря, что в результате получится, пока весь дамп не будет отображаться удобочитаемо.
Эпилог. Зачем это нужно, и как это использовать.
- Зачем это нужно: нескольо гигабайт полезной информации, без интернета, на машине от p75/16/1gb - там где нет интернета, слабый парк машин и т.д. и т.п.
- Как это использовать: либо самому собрать livecd, пропатчить ядро squash/squash-lzma, либо взять slax5 (s) или slax6 (lzma), данные не сжимать, особенно во втором случае, в livecd оставить только прожиточный минимум, x-server, например firefox 1.0.6 и links2, собранный с x и fb.
Получится укомплектованный livecd, которому достаточно pII/64mb. Можно его и на hdd прямо так поставить, без установки (если есть linux, то вписать в grub/lilo, если есть fat32 и грузится dos, то loadlin.exe, если только ntfs, то или поставить grub или отгружать его с дискетки)
Также, в случае сжатия базы, и установки её на hdd, сделать простую систему на ядре 2.4, без X, главное - чтобы видео умело framebuffer, и с помощью links2 завести это даже на 8-16 mb ram. Это - для широты охвата, мелких школ и сёл, библиотек.
Вот так. Что думаете, товарищи линуксоиды и товарищ из минобразования?
Скачали тут дампы русской википедии (360 mb, articles.xml.bz2), викитеки, викиучебника, викицитатника и ещё чего-то (всё вместе 500 mb articles.xml.bz2). Думаю, такая вещь будет очень полезная и для всех, у кого ограниченный интернет, и для всяких библиотек, и много ещё где.
(тут я выдумал текст на 10000 знаков, почему mediawiki и mysql не работают и я не верю в то что они вообще способны работать, но нет сил и желания его набирать)
Итак, после всего этого остаётся только сделать собственную систему отображения. Она должна быть очень быстрой и очень компактной
Вообще, лучше всего разделить на три части - конвертилку, сервер, и рендерилку.
Часть 1. Конвертилка.
Дампы медиавики хранятся в XML. Справка для непосвящённых читателей: бывают форматы, которые быстро обрабатываются машиной, но неудобны для человека, например, бинарные форматы файлов. Есть удобные для правки файлы - текстовые, это конфиги и скрипты, с некоторыми вольностями в синтаксисе, которые машине приходится последовательно обрабатывать - парсить. И есть формат XML, уникальность которого в том, что он одинаково неудобен и для человека, и для машины. Поэтому данные нужно перевести в какой-то быстрый, нормальный и компактный формат.
Разделим данные о странице на два поля (все остальные проигнорируем) - название страницы и содержимое страницы. Для названия нужно сделать произвольный доступ к любому номеру страницы, и отсортировка по имени, чтобы был доступ к любому его месту. Это позволит быстро отгружать страницы, шаблоны, красить красным/синим метки, а не как в медиавики открытие страницы на двухядерном атлоне - 40 секунд. Т.е., один файл индексов: Заголовок, смещение в файле данных, размер в файле данных, и сам файл данных - последовательно сваленные данные. Это просто для примера, так сказать - на пальцах.
Т.е. в соответствии с unixway это будет первая программа (или, наоборот, первая функция, я бы держал индексы вообще в памяти), которой будет пользоваться сервер. Данные в файле данных можно сжимать, можно не сжимать - почему - см. ниже.
Поиск: Полнотекстовый поиск это слишком жирно, но вот поиск только по заголовкам была бы очень удобная и полезная вещь.
Часть 2. Сервер.
Просто получать данные - смысла нет, нужен сервер по раздаче данных, который опрашивает конвертилку на полученный запрос, и выдаёт ответ, как в сыром виде (может), так и в виде HTML (по умолчанию), для этого пользуясь уже рендерилкой, как на локальный компьютер, так и по сети. Можно или взять и переделать простенький серверок, или свой сделать, я, в принципе, писал на бейсике на сокетах http-сервер.
Часть 3. Рендерилка.
Если посмотреть дамп, можно в нём увидеть вот такой текст:
<text xml:space="preserve">{{Братский проект |project=Wikipedia
|image=Wikipedia-logo.png
|text=В [[:w:Википедия|Википедии]] есть {{#switch:{{NAMESPACE}}|{{ns:14}}=соответствующая категория|{{ns:10}}=соответствующий шаблон|статья}}
|link={{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}
Это нужно привести в HTML. Если есть какие-то стандарты на формат, было бы неплохо. Тут нужно как-то разобраться, потихонечку распарсивая и смотря, что в результате получится, пока весь дамп не будет отображаться удобочитаемо.
Эпилог. Зачем это нужно, и как это использовать.
- Зачем это нужно: нескольо гигабайт полезной информации, без интернета, на машине от p75/16/1gb - там где нет интернета, слабый парк машин и т.д. и т.п.
- Как это использовать: либо самому собрать livecd, пропатчить ядро squash/squash-lzma, либо взять slax5 (s) или slax6 (lzma), данные не сжимать, особенно во втором случае, в livecd оставить только прожиточный минимум, x-server, например firefox 1.0.6 и links2, собранный с x и fb.
Получится укомплектованный livecd, которому достаточно pII/64mb. Можно его и на hdd прямо так поставить, без установки (если есть linux, то вписать в grub/lilo, если есть fat32 и грузится dos, то loadlin.exe, если только ntfs, то или поставить grub или отгружать его с дискетки)
Также, в случае сжатия базы, и установки её на hdd, сделать простую систему на ядре 2.4, без X, главное - чтобы видео умело framebuffer, и с помощью links2 завести это даже на 8-16 mb ram. Это - для широты охвата, мелких школ и сёл, библиотек.
Вот так. Что думаете, товарищи линуксоиды и товарищ из минобразования?