Дамп википедии - вьюер
- GuttaLinux
- Full Member
- Сообщения: 177
- Зарегистрирован: 04 фев 2008 00: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. Это - для широты охвата, мелких школ и сёл, библиотек.
Вот так. Что думаете, товарищи линуксоиды и товарищ из минобразования?
Re: Дамп википедии - вьюер
Мне мысль нравится. Только почему бы базу не сконвертить в статичный HTML? Не нужны будут ни парсер, ни сервер.
Re: Дамп википедии - вьюер
Да мысль действительно хорошая, лучше сказать замечательная, я бы даже согласился пощупать на своей школе. Вот только мучает меня вопрос, кто в других школах будет объяснять как с этим работать? (не в обиду сказано). Пока я только примерно понимаю как это будет выглядеть. Кстати ни за что бы не пошел работать в Минобразование.
Кто не пьет пиво, тот нервно курит в сторонке.
Re: Дамп википедии - вьюер
Не очень понимаю в чем всётаки проблема сделать конвертирование всего этого добра из XML в базу MySQL и оттуда уже это дело юзать при момощи Apache + PHP?
ИМХО не стоит изобретать велосипед.
ИМХО не стоит изобретать велосипед.
GNU/Linux Debian Sid
Kernel 2.6.28
Kernel 2.6.28
- SCIF
- Full Member
- Сообщения: 144
- Зарегистрирован: 07 июн 2006 15:50
- Откуда: Владивосток
- Контактная информация:
Re: Дамп википедии - вьюер
Откуда скачали?? Там откуда скачали нет штатных возможностей по конвертированию и т.п.??ubuntume писал(а):Скачали тут дампы русской википедии (360 mb, articles.xml.bz2), викитеки, викиучебника, викицитатника и ещё чего-то (всё вместе 500 mb articles.xml.bz2).
- GuttaLinux
- Full Member
- Сообщения: 177
- Зарегистрирован: 04 фев 2008 00:17
Re: Дамп википедии - вьюер
> Мне мысль нравится. Только почему бы базу не сконвертить в статичный HTML? Не нужны будут ни парсер, ни сервер.
сейчас у меня дамп за ноябрь 2006й год, после порезки и запихивания в сквош стал 600 мб. недостатки.
1. такого дампа сейчас нет. но боюсь, что после того, как старая база на 200 мб архива перебиралась на двухядерном атлоне месяц,одна страница отрисовывалась по 20-120 секунд, то сколько будет длиться ручное конвертирование... проверил на p500 на викицитатнике на 3 мб - не помню сколько времени, но не дождался
2. если делать самому - парсер всё равно нужен, но только один раз на выдачу одной странице. на любом компьютере такой парсер будет. а сервер - это самая маленькая проблема.
3. можно навешивать свои методы форматирования на текст. или не только в html гнать.
4. по опыту использования статического хтмл - это будет знанимать больше места на диске даже со сжатием, и очень не хватает поиска по именам заголовков. сделанные средствами самой медиавики html-дампы не умеют имён с точкой в начале, и, самое главное, не умеют списки категорий, только первая страница
5. да много чего ещё
сейчас у меня дамп за ноябрь 2006й год, после порезки и запихивания в сквош стал 600 мб. недостатки.
1. такого дампа сейчас нет. но боюсь, что после того, как старая база на 200 мб архива перебиралась на двухядерном атлоне месяц,одна страница отрисовывалась по 20-120 секунд, то сколько будет длиться ручное конвертирование... проверил на p500 на викицитатнике на 3 мб - не помню сколько времени, но не дождался
2. если делать самому - парсер всё равно нужен, но только один раз на выдачу одной странице. на любом компьютере такой парсер будет. а сервер - это самая маленькая проблема.
3. можно навешивать свои методы форматирования на текст. или не только в html гнать.
4. по опыту использования статического хтмл - это будет знанимать больше места на диске даже со сжатием, и очень не хватает поиска по именам заголовков. сделанные средствами самой медиавики html-дампы не умеют имён с точкой в начале, и, самое главное, не умеют списки категорий, только первая страница
5. да много чего ещё
- GuttaLinux
- Full Member
- Сообщения: 177
- Зарегистрирован: 04 фев 2008 00:17
Re: Дамп википедии - вьюер
> Да мысль действительно хорошая, лучше сказать замечательная, я бы даже согласился пощупать на своей школе.
> Вот только мучает меня вопрос, кто в других школах будет объяснять как с этим работать? (не в обиду сказано).
для livecd-версии
1. вставить livecd в cdrom-дисковод
2. загрузиться
3. пользоваться
для других реализаций - уже сложнее.
> Пока я только примерно понимаю как это будет выглядеть.
как только разберусь с firefox - могу вам дать с дампом ноября-2006, посмотреть
> Вот только мучает меня вопрос, кто в других школах будет объяснять как с этим работать? (не в обиду сказано).
для livecd-версии
1. вставить livecd в cdrom-дисковод
2. загрузиться
3. пользоваться
для других реализаций - уже сложнее.
> Пока я только примерно понимаю как это будет выглядеть.
как только разберусь с firefox - могу вам дать с дампом ноября-2006, посмотреть
- GuttaLinux
- Full Member
- Сообщения: 177
- Зарегистрирован: 04 фев 2008 00:17
Re: Дамп википедии - вьюер
> Не очень понимаю в чем всётаки проблема сделать конвертирование всего этого добра из XML в базу MySQL и
> оттуда уже это дело юзать при момощи Apache + PHP?
ну во-первых, штатными средствами - это не работает. если у вас получится нормально сделать - пожалуйста, у меня любые популярные программы с mysql на p4-1600/256 на mysql5 каждую страницу открывали по 10 секунд, дамп википедии там конвертился очень долго. на mt52/1024 дамп википедии на 1 гб чистого xml конвертился месяц, и после этого 50% шаблонов и прочей разметки - не работало. пробовал по разному настроить mysql5 - не помогало. помнится, в 2003 я работал с mysql 3.23 - там было всё значительно быстрее
а во-вторых - тут sql совершенно ненужная сущность. сделать нормальные запросы быстрее, чем подогнать это к mysql. никакой apache-php-mysql тут не нужен, это лишние действия, лишнее место на диске (нужно базы и всё остальное уместить в диск 700 мб), лишние затраты памяти (на тех же p75/16 не очень будет приятно смотреть
плюс не знаю, как это будет относиться к readonly-базе, а на каждое изменение хоть чего-нибудь юнион сделает полную копию, и куда её? нужно, чтобы база была только в readonly.
но если у вас получится - можете попробовать. потренироваться на русском викицитатнике, он всего 3 мб.
> ИМХО не стоит изобретать велосипед.
потому всякие gtk2 и много чего прочего - ужасные тормозные поделки, затребовано куча всего, 90% из которого не нужно, и 90% времени система занимается обслуживанием системы
> Откуда скачали?? Там откуда скачали нет штатных возможностей по конвертированию и т.п.??
с официального сайта википедии, вестимо, а что, ещё где-то есть? может оно уже в нормальном виде есть?
ps. http://download.wikimedia.org
возможности то есть, но я полтора года уже пытаюсь заставить их заработать там же просто текст, xml - нужно всего-то вытащить <title>-----</tilte>, <text xml='....'> </text> и служебные страницы. и обрабатывать их нормально, без лишних сущностей. или вытащить из питоновой штуки, которая индексирует bz2 и потом извлекает, извлекалку. на питоне, в принципе питон livecd может осилить, оно не слишком большое.
> оттуда уже это дело юзать при момощи Apache + PHP?
ну во-первых, штатными средствами - это не работает. если у вас получится нормально сделать - пожалуйста, у меня любые популярные программы с mysql на p4-1600/256 на mysql5 каждую страницу открывали по 10 секунд, дамп википедии там конвертился очень долго. на mt52/1024 дамп википедии на 1 гб чистого xml конвертился месяц, и после этого 50% шаблонов и прочей разметки - не работало. пробовал по разному настроить mysql5 - не помогало. помнится, в 2003 я работал с mysql 3.23 - там было всё значительно быстрее
а во-вторых - тут sql совершенно ненужная сущность. сделать нормальные запросы быстрее, чем подогнать это к mysql. никакой apache-php-mysql тут не нужен, это лишние действия, лишнее место на диске (нужно базы и всё остальное уместить в диск 700 мб), лишние затраты памяти (на тех же p75/16 не очень будет приятно смотреть
плюс не знаю, как это будет относиться к readonly-базе, а на каждое изменение хоть чего-нибудь юнион сделает полную копию, и куда её? нужно, чтобы база была только в readonly.
но если у вас получится - можете попробовать. потренироваться на русском викицитатнике, он всего 3 мб.
> ИМХО не стоит изобретать велосипед.
потому всякие gtk2 и много чего прочего - ужасные тормозные поделки, затребовано куча всего, 90% из которого не нужно, и 90% времени система занимается обслуживанием системы
> Откуда скачали?? Там откуда скачали нет штатных возможностей по конвертированию и т.п.??
с официального сайта википедии, вестимо, а что, ещё где-то есть? может оно уже в нормальном виде есть?
ps. http://download.wikimedia.org
возможности то есть, но я полтора года уже пытаюсь заставить их заработать там же просто текст, xml - нужно всего-то вытащить <title>-----</tilte>, <text xml='....'> </text> и служебные страницы. и обрабатывать их нормально, без лишних сущностей. или вытащить из питоновой штуки, которая индексирует bz2 и потом извлекает, извлекалку. на питоне, в принципе питон livecd может осилить, оно не слишком большое.
-
- Sr. Member
- Сообщения: 286
- Зарегистрирован: 07 июн 2006 16:10
- Откуда: Владивосток
- Контактная информация:
Re: Дамп википедии - вьюер
ИМХО в 700 Мб всё не влезет, если оно уже занимет 600 Мб в сильно сжатом виде. (Может там есть чего выкинуть? лишние языки например... Или это всё только на русском языке?)
Разве что так и оставить её в squah, только разбить на файлы (1 статья - 1 файл) + маленькая таблица (ссылка -> файл в архиве). Только стоит ли это таких усилий? ИМХО здесь никто не будет писать программу по обработке всего этого и выдаче в браузер в готовом виде.
Разве что так и оставить её в squah, только разбить на файлы (1 статья - 1 файл) + маленькая таблица (ссылка -> файл в архиве). Только стоит ли это таких усилий? ИМХО здесь никто не будет писать программу по обработке всего этого и выдаче в браузер в готовом виде.
- GuttaLinux
- Full Member
- Сообщения: 177
- Зарегистрирован: 04 фев 2008 00:17
Re: Дамп википедии - вьюер
> ИМХО в 700 Мб всё не влезет, если оно уже занимет 600 Мб в сильно сжатом виде. (Может там есть чего выкинуть?
> лишние языки например... Или это всё только на русском языке?)
вики на русском, с выкинутым лишним. в чём проблема уместить ведро (сейчас там 2.6.16), иксы и файрфокс в сквоше в 100 мб? у меня весь линукс 400 занимает (без вики), с кучей разных приложений и игрушек.
> Разве что так и оставить её в squah, только разбить на файлы (1 статья - 1 файл) + маленькая таблица (ссылка ->
> файл в архиве).
ничего не понял
> Только стоит ли это таких усилий? ИМХО здесь никто не будет писать программу по обработке всего
> этого и выдаче в браузер в готовом виде.
если есть совместимый по рендерингу вики-движок, но работающий с файлами, и позволяющий импортировать данные медиавики - было бы замечательно. создать миллион файлов и запихнуть в сквош - это не проблема. лишь бы оно могло работать через php_cli. сервер это 50 кб, пересборный php, чисто для cli - ну не знаю, мегабайта 2. осталось только найти. если не найти - можно написать, но нужно время. плюс средства парсинга как для xml, так и для викикода, я не люблю использовать чужие модули и исходники, поэтому самописное будет дольше, если кто сделает отдельным модулем с минимумом функционала - было бы только быстрее.
> лишние языки например... Или это всё только на русском языке?)
вики на русском, с выкинутым лишним. в чём проблема уместить ведро (сейчас там 2.6.16), иксы и файрфокс в сквоше в 100 мб? у меня весь линукс 400 занимает (без вики), с кучей разных приложений и игрушек.
> Разве что так и оставить её в squah, только разбить на файлы (1 статья - 1 файл) + маленькая таблица (ссылка ->
> файл в архиве).
ничего не понял
> Только стоит ли это таких усилий? ИМХО здесь никто не будет писать программу по обработке всего
> этого и выдаче в браузер в готовом виде.
если есть совместимый по рендерингу вики-движок, но работающий с файлами, и позволяющий импортировать данные медиавики - было бы замечательно. создать миллион файлов и запихнуть в сквош - это не проблема. лишь бы оно могло работать через php_cli. сервер это 50 кб, пересборный php, чисто для cli - ну не знаю, мегабайта 2. осталось только найти. если не найти - можно написать, но нужно время. плюс средства парсинга как для xml, так и для викикода, я не люблю использовать чужие модули и исходники, поэтому самописное будет дольше, если кто сделает отдельным модулем с минимумом функционала - было бы только быстрее.
- hatred
- Global Moderator
- Сообщения: 1205
- Зарегистрирован: 08 июн 2006 00:32
- Откуда: Владивосток
- Контактная информация:
Re: Дамп википедии - вьюер
Файловый вики движек - DokuWiki оригинальный синтаксис не совместим с MediaWiki, но есть плагин который это реализует.
Прошли времена когда на элементарные вопросы можно было отвечать man <что-то там> (с) из сети
Hatred's Log Place | My GitHub repos | My Gitlab repos
Hatred's Log Place | My GitHub repos | My Gitlab repos
- hatred
- Global Moderator
- Сообщения: 1205
- Зарегистрирован: 08 июн 2006 00:32
- Откуда: Владивосток
- Контактная информация:
Re: Дамп википедии - вьюер
через php-cli не пробывал но nginx + php-fast-cgi работает отлично, ресурсов много не жрет.
Прошли времена когда на элементарные вопросы можно было отвечать man <что-то там> (с) из сети
Hatred's Log Place | My GitHub repos | My Gitlab repos
Hatred's Log Place | My GitHub repos | My Gitlab repos
- GuttaLinux
- Full Member
- Сообщения: 177
- Зарегистрирован: 04 фев 2008 00:17
Re: Дамп википедии - вьюер
я fastcgi и имел ввиду, в терминах просто путаюсь... попробуй завести на нём хотя бы викицитатник?
- hatred
- Global Moderator
- Сообщения: 1205
- Зарегистрирован: 08 июн 2006 00:32
- Откуда: Владивосток
- Контактная информация:
Re: Дамп википедии - вьюер
ubuntume, давай обсудим в индивидуально порядке, а так, да, могу попробывать, в субботу что делаешь? а то в связи с переносом туксопойки на ВС (которое у меня занято такими вещами как собственное здоровье), суббота свободна.
Прошли времена когда на элементарные вопросы можно было отвечать man <что-то там> (с) из сети
Hatred's Log Place | My GitHub repos | My Gitlab repos
Hatred's Log Place | My GitHub repos | My Gitlab repos
- GuttaLinux
- Full Member
- Сообщения: 177
- Зарегистрирован: 04 фев 2008 00:17
Re: Дамп википедии - вьюер
давай. на всяк случ мой ном 904-940 зов мен Ром [но когд я был Дэв ] твой ном гдет валял над найти