Re: Продолжение [вопрос с библиотекой решен]
Hello! On Wednesday 10 February 2010 21:23:44 Serhiy Storchaka wrote: > Если объём записи достаточно большой (содержимое документа) и исключить > кеширование (большая база и не повторяющийся запрос), то извлечение > содержимого из файла и из базы будет мало отличаться. Это ничему не противоречит - произвольный доступ к файлу быстр. Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Продолжение [вопрос с библиотекой решен]
Alexey Pechnikov wrote: > On Tuesday 09 February 2010 23:42:08 Serhiy Storchaka wrote: >> > Десятикратная разница в скорости показывает проблему реализации. Но все >> > равно непосредственно сам поиск как минимум на два порядка быстрее, >> > нежели построение фрагмента с найденным текстом. >> >> Это вы тестируете когда база закеширована в памяти? На стогигабайтной >> базе с случайным запросом результаты будут несколько отличаться. > > Поскольку эскулайт - файловая СУБД, то _умеет_ работать с данными, не > кэшируя всю базу или значительную ее часть в ОЗУ. Стогиговую базу я > тестировал много лет назад, когда еще только начинал работать с эскулайт, > и скорость выборки записи по ключу была весьма высокой (на машинке с 1 Гб > ОЗУ, точных цифр сейчас просто не помню). Проблемы есть при заполнении > больших таблиц (неоптимальная работа с индексами), а с выборками все > хорошо. Если объём записи достаточно большой (содержимое документа) и исключить кеширование (большая база и не повторяющийся запрос), то извлечение содержимого из файла и из базы будет мало отличаться. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Re: Продолжение [вопрос с библиотекой решен]
Hello! On Tuesday 09 February 2010 23:42:08 Serhiy Storchaka wrote: > > Десятикратная разница в скорости показывает проблему реализации. Но все > > равно непосредственно сам поиск как минимум на два порядка быстрее, нежели > > построение фрагмента с найденным текстом. > > Это вы тестируете когда база закеширована в памяти? На стогигабайтной базе с > случайным запросом результаты будут несколько отличаться. Поскольку эскулайт - файловая СУБД, то _умеет_ работать с данными, не кэшируя всю базу или значительную ее часть в ОЗУ. Стогиговую базу я тестировал много лет назад, когда еще только начинал работать с эскулайт, и скорость выборки записи по ключу была весьма высокой (на машинке с 1 Гб ОЗУ, точных цифр сейчас просто не помню). Проблемы есть при заполнении больших таблиц (неоптимальная работа с индексами), а с выборками все хорошо. См. один из тестов здесь: http://geomapx.blogspot.com/2010/01/sqlite-fts3.html В статье параметры железа не указаны, но это выполнено на кореквадро с 8 гиг ОЗУ, из которых около половины занято безобразием в образе постгреса. Также см. http://geomapx.blogspot.com/2009/09/sqlite-3617-mobigroup2.html И добавлю ссылку на тесты, демонстрирующие проблемы индексов: http://geomapx.blogspot.com/2009/11/degradation-of-indexing-speed.html И еще патч FTS3 для сжатия контента поисковой БД http://geomapx.blogspot.com/2009/11/tests-of-zlib-patched-fts3.html http://geomapx.blogspot.com/2009/11/fts3-compression.html Там наблюдалась странная деградация скорости при запросах с count(*), апстрим эти тесты видел и кое-что правили, но я на новых версиях эскулайт не экспериментировал. Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Продолжение [вопрос с библиотекой решен]
Alexey Pechnikov wrote: > Десятикратная разница в скорости показывает проблему реализации. Но все > равно непосредственно сам поиск как минимум на два порядка быстрее, нежели > построение фрагмента с найденным текстом. Это вы тестируете когда база закеширована в памяти? На стогигабайтной базе с случайным запросом результаты будут несколько отличаться. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Re: Продолжение [вопрос с библиотекой решен]
Hello! On Tuesday 09 February 2010 23:00:20 Serhiy Storchaka wrote: > > Когда каждый документ будет fb2-файлом, упакованным в zip-архив, то нужно > > достать файл из архива, преобразовать в текст и получить найденный > > фрагмент - то есть придется немало операций выполнить. Так что идея > > открывать _много_ файлов для построения выделенных фрагментов мне очень не > > нравится. > > Эта идея лучше альтернатив (вспомните вашу недооценку сомнений по поводу > хранения всех текстов в базе). Если в базе хранить именно fb2, то избежим дублирования и будет быстрое извлечение информации, плюс на клиенте не придется преобразование документов выполнять - один раз сгенерировали базу с контентом и индексом и можно ее на разных устройствах смотреть. Но есть и минус - теряем поддержку всех прочих форматов, вот надо бы оценить, насколько это существенно. Если вспомнить, что pdf документ с форматом страницы A4 нереально просмотреть где-либо, кроме компьютера, а для msword/opendocument требуют монстрообразного опенофиса, то вопрос становится весьма неоднозначным. То есть этот минус приводит к специализированному решению. Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Продолжение [вопрос с библиотекой решен]
Hello! Вот более наглядно: sqlite> select rowid from file_text where file_text match 'london'; ... CPU Time: user 0.00 sys 0.00 sqlite> select snippet(file_text) from file_text where file_text match 'london'; ... CPU Time: user 0.464029 sys 0.048003 То есть сам поиск практически "не стоит" ничего, а вот извлечение фрагмента - чертовски накладная операция. Правда, там явный глюк алгоритма, поскольку: sqlite> select snippet(file_text) from file_text where rowid=9737 and file_text match 'london'; ... CPU Time: user 0.156010 sys 0.016001 sqlite> select length(content) from file_text where rowid=9737 and file_text match 'london'; 1189837 CPU Time: user 0.016001 sys 0.008001 Десятикратная разница в скорости показывает проблему реализации. Но все равно непосредственно сам поиск как минимум на два порядка быстрее, нежели построение фрагмента с найденным текстом. Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Продолжение [вопрос с библиотекой решен]
Alexey Pechnikov wrote: > Когда каждый документ будет fb2-файлом, упакованным в zip-архив, то нужно > достать файл из архива, преобразовать в текст и получить найденный > фрагмент - то есть придется немало операций выполнить. Так что идея > открывать _много_ файлов для построения выделенных фрагментов мне очень не > нравится. Эта идея лучше альтернатив (вспомните вашу недооценку сомнений по поводу хранения всех текстов в базе). -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Re: Продолжение [вопрос с библиотекой решен]
Hello! On Tuesday 09 February 2010 21:09:59 Иван Лох wrote: > > Да вот не хотелось бы в базу _встраивать_ xslt-процессор, который в таком > > А чего та встраивать-то? Это маленькая библиотека. Тоже верно - на фоне libICU, необходимой для поддержки юникода.. > Ну если парсер быстрый и один и тот-же то фрагмент один и тот-же будет > получаться. > Только страницу надо запоминать, чтобы все не преобразовывать. Вот как пример поиска: sqlite> select counter(1), snippet(file_text) from file_text where file_text match 'london'; 1|..., Chem. and Ind., London, 16, 647—651,... ... 7|...The ancient Empires of the East, London, 1883. 4 Мищенко Ф 8|...Encyclopedia of Photography, Desk Edition, London: Focal Press, 1969, p... Ниже информация о смещениях в тексте: sqlite> select counter(1), offsets(file_text) from file_text where file_text match 'london'; 1|0 0 203302 6 0 0 209935 6 0 0 210216 6 ... 7|0 0 14552 6 0 0 400383 6 8|0 0 65668 6 0 0 1010763 6 0 0 1067169 6 Когда каждый документ будет fb2-файлом, упакованным в zip-архив, то нужно достать файл из архива, преобразовать в текст и получить найденный фрагмент - то есть придется немало операций выполнить. Так что идея открывать _много_ файлов для построения выделенных фрагментов мне очень не нравится. Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Продолжение
On 2010.02.09 at 00:49:12 +0300, Alexey Pechnikov wrote: > Hello! > > On Tuesday 09 February 2010 00:21:33 Grey Fenrir wrote: > > всё уже украдено: > > http://torrents.ru/forum/viewtopic.php?t=1855424 > > Там регистрироваться надо. Мне бы http или ftp. Кроме torrents.ru существуют нормальные трекеры. А по http тебе 90Гб никто не отдаст. Лучше всего тащить с torrents.rus.ec. Регистрироваться, правда, надо. Но вот рейтинг иметь не надо. Там конкретно эта раздача "золотая". То есть рейтинга ее выкачивание не уменьшает. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Re: Продолжение [вопро с с библиотекой решен]
On Tue, Feb 09, 2010 at 06:03:01PM +0300, Alexey Pechnikov wrote: > On Tuesday 09 February 2010 17:44:46 Иван Лох wrote: > > > Что касается электронной библиотеки, есть такой вопрос: насколько > > > опревдана библиотека с поддержкой одного лишь формата (fb2 или epub)? > > > > Поддерживать fb2 IMHO не надо. Надо поддерживать XML + архиваторы и > > компрессоры. То есть четко специфицировать промежуточный формат к > > в который должен конвертировать написанный кем-то XSLT. Иначе > > придется отдельно поддерживать odf docx sla svg и черта-в-ступе > > Да вот не хотелось бы в базу _встраивать_ xslt-процессор, который в таком А чего та встраивать-то? Это маленькая библиотека. > варианте необходим для парсера. А если сначала парсить, потом в базу > складывать, получается лишняя копия данных в промежуточном (текстовом) > формате. А для одного fb2 можно и на С парсер написать. Ну это уж через-чур. > > > текстового представления в базе (плюс сами индексы). Или другой вариант > > > - в базе хранить _только_ индекс (эскулайт этого не умеет, но можно > > > поковырять). Опять же, сжатие... по умолчанию не поддерживается, хотя > > > > Лучше один индекс. Сейчас быстродействие дисков такое, что открыть > > pdf или djvu во вьюере пара секунд. > > Один никак не получается - сделали поиск по индексу, хотим пользователю > показать _фрагмент_ текста с найденными словами, а для этого нужен > исходный текст плюс хранимые в индексах смещения. Так что если нашли 100 > документов, все они нужны. А поиск без отображения найденных фрагментов > сильно ущербен. Ну если парсер быстрый и один и тот-же то фрагмент один и тот-же будет получаться. Только страницу надо запоминать, чтобы все не преобразовывать. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Re: Продолжение [вопрос с библиотекой решен]
Hello! On Tuesday 09 February 2010 17:44:46 Иван Лох wrote: > > Что касается электронной библиотеки, есть такой вопрос: насколько > > опревдана библиотека с поддержкой одного лишь формата (fb2 или epub)? > > Поддерживать fb2 IMHO не надо. Надо поддерживать XML + архиваторы и > компрессоры. То есть четко специфицировать промежуточный формат к > в который должен конвертировать написанный кем-то XSLT. Иначе > придется отдельно поддерживать odf docx sla svg и черта-в-ступе Да вот не хотелось бы в базу _встраивать_ xslt-процессор, который в таком варианте необходим для парсера. А если сначала парсить, потом в базу складывать, получается лишняя копия данных в промежуточном (текстовом) формате. А для одного fb2 можно и на С парсер написать. > > текстового представления в базе (плюс сами индексы). Или другой вариант > > - в базе хранить _только_ индекс (эскулайт этого не умеет, но можно > > поковырять). Опять же, сжатие... по умолчанию не поддерживается, хотя > > Лучше один индекс. Сейчас быстродействие дисков такое, что открыть > pdf или djvu во вьюере пара секунд. Один никак не получается - сделали поиск по индексу, хотим пользователю показать _фрагмент_ текста с найденными словами, а для этого нужен исходный текст плюс хранимые в индексах смещения. Так что если нашли 100 документов, все они нужны. А поиск без отображения найденных фрагментов сильно ущербен. Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Продолжение [вопро с с библиотекой решен]
On Tue, Feb 09, 2010 at 05:19:18PM +0300, Alexey Pechnikov wrote: > Hello! > > Что касается электронной библиотеки, есть такой вопрос: насколько > опревдана библиотека с поддержкой одного лишь формата (fb2 или epub)? Поддерживать fb2 IMHO не надо. Надо поддерживать XML + архиваторы и компрессоры. То есть четко специфицировать промежуточный формат к в который должен конвертировать написанный кем-то XSLT. Иначе придется отдельно поддерживать odf docx sla svg и черта-в-ступе > текстового представления в базе (плюс сами индексы). Или другой вариант > - в базе хранить _только_ индекс (эскулайт этого не умеет, но можно > поковырять). Опять же, сжатие... по умолчанию не поддерживается, хотя Лучше один индекс. Сейчас быстродействие дисков такое, что открыть pdf или djvu во вьюере пара секунд. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Re: Продолжение [вопрос с библиотекой решен]
Hello! On Monday 08 February 2010 23:42:16 Alexey Pechnikov wrote: > Кто поделится библиотекой либрусек в разных форматах? Думаю, > электронные библиотеки - первый кандидат на тестирование. У меня > несколько сот книжек с либрусека было скачано, пока его не прикрыли, > их индексацию проверил, в zip-архиве и просто файлами. Спасибо всем откликнувшимся, скоро скачаю и проиндексирую, ссылки мне уже прислали. Что касается электронной библиотеки, есть такой вопрос: насколько опревдана библиотека с поддержкой одного лишь формата (fb2 или epub)? В общем-то, пока это меня не сильно интересовало, но при объемах современных библиотек возникает желание хранить в индексной базе непосредственно контент, вместо хранения контента на диске плюс текстового представления в базе (плюс сами индексы). Или другой вариант - в базе хранить _только_ индекс (эскулайт этого не умеет, но можно поковырять). Опять же, сжатие... по умолчанию не поддерживается, хотя я выкладывал описание реализации и некоторые тесты. Итак, или в базу закидываем контент ы xml и прямо по нему ищем, или в базе оставляем только индекс, а контент храним на диске. Иначе уж очень много места надо (вспоминаю, Витус об этом говорил, но тогда мне показалось преувеличением). Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Продолжение
Alexey Pechnikov wrote: > Спасибо, но сейчас у меня задача несколько иная - обеспечить > индексирование оригинального набора документов. _Посоветовать_ исправить - > хорошо, но уж никак не игнорировать. Если "по уму", то все не-юникодные > документы следует тоже выбросить, но что же тогда останется... Собственно, > написание индексатора для набора _валидных юникодных_ документов - > тривиально, но малополезно (в этом случае не нужны цепочки фильтров, да и > сама обработка несложная). Тогда и wv не подходит, на битые вордовские документы рассчитан catdoc. И в крайнем случае натравливать на документ strings — хоть что-то, да проиндексирует. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Re: Продолжение
Hello! On Tuesday 09 February 2010 15:48:55 Serhiy Storchaka wrote: > >> Такие файлы лучше сразу отвергать. > > > > Эдак мы рискуем выплеснуть с водой и некоторые хорошие книги. На > > либрусеке, к примеру, такие точно были. > > Доли процента. И в этом случае следует не прятать проблему под ковёр, а > взять, да и исправить испорченные документы. Иначе с ними не смогут > работать и другие программы. Да и других проблем наверняка в них хватает. > > Советую набор утилит для починки плохих fb2: > https://fb2-perl-tools.svn.sourceforge.net/svnroot/fb2-perl-tools/trunk/fb2-python-tools Спасибо, но сейчас у меня задача несколько иная - обеспечить индексирование оригинального набора документов. _Посоветовать_ исправить - хорошо, но уж никак не игнорировать. Если "по уму", то все не-юникодные документы следует тоже выбросить, но что же тогда останется... Собственно, написание индексатора для набора _валидных юникодных_ документов - тривиально, но малополезно (в этом случае не нужны цепочки фильтров, да и сама обработка несложная). Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Продолжение
Alexey Pechnikov wrote: > On Tuesday 09 February 2010 15:00:18 Serhiy Storchaka wrote: >> Alexey Pechnikov wrote: >> > Сейчас >> > обрабатываю как xml, с помощью sed заменяя амперсанд (кривой >> > xml в fb2 - вместо & в нем фигачат просто &). >> >> Такие файлы лучше сразу отвергать. > > Эдак мы рискуем выплеснуть с водой и некоторые хорошие книги. На > либрусеке, к примеру, такие точно были. Доли процента. И в этом случае следует не прятать проблему под ковёр, а взять, да и исправить испорченные документы. Иначе с ними не смогут работать и другие программы. Да и других проблем наверняка в них хватает. Советую набор утилит для починки плохих fb2: https://fb2-perl-tools.svn.sourceforge.net/svnroot/fb2-perl-tools/trunk/fb2-python-tools -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Re: Продолжение
Hello! On Tuesday 09 February 2010 15:00:18 Serhiy Storchaka wrote: > Alexey Pechnikov wrote: > > $ time find /tmp/* | POISK_DB=DB ./poisk-add-file.tcl > > Лучше бы чтение имён файлов из stdin сделать опциональным, при указании > специального ключика. Ок. > > Сейчас > > обрабатываю как xml, с помощью sed заменяя амперсанд (кривой > > xml в fb2 - вместо & в нем фигачат просто &). > > Такие файлы лучше сразу отвергать. Эдак мы рискуем выплеснуть с водой и некоторые хорошие книги. На либрусеке, к примеру, такие точно были. Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Продолжение
Hello! On Tuesday 09 February 2010 15:03:36 Serhiy Storchaka wrote: > Alexey Pechnikov wrote: > > Утилита find в дебиане майм-тип для *.fb2 отдает как application/xml, > > так что или верить расширению, или пользоваться универсальным парсером для > > xml. В обоих случаях есть свои плюсы и минусы. > > The environment variable MAGIC can be used to set the default magic > number file name. > > Универсальный парсер плох тем, что текст будет склеиваться и разбиваться на > строки где не следует. И содержимое тегов binary будет очень мешать при > полнотекстовом поиске. Оно бы все так, да вот только контент файла, переданный на stdin, можно обработать только одной утилитой: MIME="" if [ $# -eq 1 ]; then MIME=`file --brief --mime-type "$1"` fi if [ $# -eq 0 ]; then MIME=`file --brief --mime-type -` fi if [ "$MIME" = "application/xml" ];then FLAG="" if [ $# -eq 1 ]; then FLAG=`grep 'http://www.w3.org/1999/xlink"; xmlns="http://www.gribuser.ru/xml/fictionbook/2.0";>' "$1" |wc -l` fi if [ $FLAG -eq 1 ]; then echo "application/x-fictionbook+xml" exit 0 fi fi echo "$MIME" Или заменять dash на тикль везде, а это приведет к тому, что придется вместо вызовов отдельных утилит инклюдить файлы с функциями (запуск интерпретатора тикля не быстрый), или в архиве нам "честный" mime-тип не распознать. Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Продолжение
Alexey Pechnikov wrote: > Утилита find в дебиане майм-тип для *.fb2 отдает как application/xml, > так что или верить расширению, или пользоваться универсальным парсером для > xml. В обоих случаях есть свои плюсы и минусы. The environment variable MAGIC can be used to set the default magic number file name. Универсальный парсер плох тем, что текст будет склеиваться и разбиваться на строки где не следует. И содержимое тегов binary будет очень мешать при полнотекстовом поиске. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Re: Продолжение
Alexey Pechnikov wrote: > $ time find /tmp/* | POISK_DB=DB ./poisk-add-file.tcl Лучше бы чтение имён файлов из stdin сделать опциональным, при указании специального ключика. > Сейчас > обрабатываю как xml, с помощью sed заменяя амперсанд (кривой > xml в fb2 - вместо & в нем фигачат просто &). Такие файлы лучше сразу отвергать. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Re: Продолжение
9 февраля 2010 г. 16:14 пользователь Alexey Pechnikov написал: >> >> xsltproc -o - file.xslt - >> > Пока что делаю вот так для всех xml-файлов: >> > $ exec sed 's/ & / and /g' | xsltproc >> > /usr/share/sqlite3-poisk/file_textfilter/application/xml.xslt - | sed >> > '/^$/d' >> Хм... Тоже вариант, конечно... Но лучше всё-таки специализированные .xslt > Утилита find в дебиане майм-тип для *.fb2 отдает как application/xml, > так что или верить расширению, или пользоваться универсальным парсером для > xml. > В обоих случаях есть свои плюсы и минусы. А почему бы и не объединить? Просто после получения application/xml проверить, а не .fb2 ли это? И если да - брать специализированный .xslt, а не общего назначния. -- Stanislav
Re: Продолжение
Hello! On Tuesday 09 February 2010 13:50:37 Stanislav Vlasov wrote: > 9 февраля 2010 г. 15:15 пользователь Alexey Pechnikov > написал: > > >> xsltproc -o - file.xslt - > > Пока что делаю вот так для всех xml-файлов: > > > $ exec sed 's/ & / and /g' | xsltproc > > /usr/share/sqlite3-poisk/file_textfilter/application/xml.xslt - | sed > > '/^$/d' > > Хм... Тоже вариант, конечно... Но лучше всё-таки специализированные .xslt Утилита find в дебиане майм-тип для *.fb2 отдает как application/xml, так что или верить расширению, или пользоваться универсальным парсером для xml. В обоих случаях есть свои плюсы и минусы. > >> .xslt для fb2 и различных форматов - на сайте грибузера должны быть. > > А как сайт называется? > > http://gribuser.ru/xml/fictionbook/ (пожалуй, старовато будет) и > http://www.fictionbook.org/index.php/FictionBook Спасибо, посмотрю. Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Продолжение
9 февраля 2010 г. 15:15 пользователь Alexey Pechnikov написал: >> xsltproc -o - file.xslt - > Пока что делаю вот так для всех xml-файлов: > $ exec sed 's/ & / and /g' | xsltproc > /usr/share/sqlite3-poisk/file_textfilter/application/xml.xslt - | sed '/^$/d' Хм... Тоже вариант, конечно... Но лучше всё-таки специализированные .xslt > Довольно тупо, но во многих случаях этого хватает. >> .xslt для fb2 и различных форматов - на сайте грибузера должны быть. > А как сайт называется? http://gribuser.ru/xml/fictionbook/ (пожалуй, старовато будет) и http://www.fictionbook.org/index.php/FictionBook -- Stanislav
Re: Продолжение
Alexey Pechnikov пишет: .xslt для fb2 и различных форматов - на сайте грибузера должны быть. А как сайт называется? http://www.fictionbook.org/index.php/FictionBook -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Re: Продолжение
Hello! On Tuesday 09 February 2010 06:56:25 Stanislav Vlasov wrote: > 9 февраля 2010 г. 1:42 пользователь Alexey Pechnikov > написал: > > == > > Вопрос к сообществу: кто подскажет способ преобразовать в > > форматированный текст форматы fb2, epub? Парсер должен брать > > ввод на stdin и выдавать на stdout, без временных файлов. Сейчас > > обрабатываю как xml, с помощью sed заменяя амперсанд (кривой > > xml в fb2 - вместо & в нем фигачат просто &). > > xsltproc -o - file.xslt - Пока что делаю вот так для всех xml-файлов: $ exec sed 's/ & / and /g' | xsltproc /usr/share/sqlite3-poisk/file_textfilter/application/xml.xslt - | sed '/^$/d' $ cat /usr/share/sqlite3-poisk/file_textfilter/application/xml.xslt http://www.w3.org/1999/XSL/Transform"; version="1.0"> Довольно тупо, но во многих случаях этого хватает. > .xslt для fb2 и различных форматов - на сайте грибузера должны быть. А как сайт называется? Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Продолжение
9 февраля 2010 г. 1:42 пользователь Alexey Pechnikov написал: > == > Вопрос к сообществу: кто подскажет способ преобразовать в > форматированный текст форматы fb2, epub? Парсер должен брать > ввод на stdin и выдавать на stdout, без временных файлов. Сейчас > обрабатываю как xml, с помощью sed заменяя амперсанд (кривой > xml в fb2 - вместо & в нем фигачат просто &). xsltproc -o - file.xslt - .xslt для fb2 и различных форматов - на сайте грибузера должны быть. Могу поделиться перловым скриптом, делающим то же самое, да и сами .xslt есть. > Кто поделится библиотекой либрусек в разных форматах? Думаю, > электронные библиотеки - первый кандидат на тестирование. У меня > несколько сот книжек с либрусека было скачано, пока его не прикрыли, > их индексацию проверил, в zip-архиве и просто файлами. Выложить-то я могу... Но я давненько её скачивал... -- Stanislav
Re: Продолжение
Hello! On Tuesday 09 February 2010 00:21:33 Grey Fenrir wrote: > всё уже украдено: > http://torrents.ru/forum/viewtopic.php?t=1855424 Там регистрироваться надо. Мне бы http или ftp. Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Продолжение
On Mon, 8 Feb 2010 23:42:16 +0300 Alexey Pechnikov wrote: > Кто поделится библиотекой либрусек в разных форматах? Думаю, > электронные библиотеки - первый кандидат на тестирование. У меня > несколько сот книжек с либрусека было скачано, пока его не прикрыли, > их индексацию проверил, в zip-архиве и просто файлами. > всё уже украдено: http://torrents.ru/forum/viewtopic.php?t=1855424 - Grey Fenrir -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Re: Продолжение
Hello! Итак, сделал поддержку архивов (пока скрипт только для zip написал, но добавить прочие несложно), все обработчики реализованы раздельными шелл-скриптами (без башизмов!), большинство depends перемещены в recommends, а в обработчиках сделана функция самотестирования (при запуске индексатора можно проверить, кто из скриптов не может работать из-за неудовлетворенных зависимостей и далее их игнорировать). Основной движок сделан полностью на dash, а на тикле только обертка для пакетной индексации. Перешел на тикль 8.6, т.к. в нем есть полузакрытые сокеты (бэкпорт у меня в репозитории есть, зависимостей не тянет). Где возможно, используется exec. Все скрипты весьма простые и компактные. Разделил пакет на sqlite3-poisk-core - парсеры документов, создание БД (на dash) sqlite3-poisk-dev - сейчас содержит единственную утилиту, разбирающую системный mime.types (или любой другой файл в том же формате) и создающий симлинки расширение -> обработчик (тикль 8.6) sqlite3-poisk-client - клиентские утилиты (на С) sqlite3-poisk-server - пакетный сканер (тикль 8.6) Первые два пакета выложены, в остальные пока вношу некоторые изменения. Добавлено автораспознавание кодировок plain text и конвертация их в uft-8 при сохранении в БД. В производительности теряем, но считаю это необходимым из-за зоопарка распространенных кодировок. Некоторые тесты нового варианта: 1. Отправлено на индексацию файлов find /tmp/* | wc -l 3488 2. Суммарный размер файлов $ du -sh /tmp 327M/tmp 3. Время индексации $ time find /tmp/* | POISK_DB=DB ./poisk-add-file.tcl real1m52.476s user0m51.507s sys 0m53.091s 4. Всего проиндексировано файлов $ sqlite3 DB "select count(*) from file" 3544 Кол-во файлов в пункте 4 превышает их число в пункте 1, т.к. были обработаны архивы, содержащие набор файлов. Примечание: имя базы теперь читается из переменной окружения POISK_DB, так во многих случаях удобнее, нежели для всех утилит указывать аргументом. == Вопрос к сообществу: кто подскажет способ преобразовать в форматированный текст форматы fb2, epub? Парсер должен брать ввод на stdin и выдавать на stdout, без временных файлов. Сейчас обрабатываю как xml, с помощью sed заменяя амперсанд (кривой xml в fb2 - вместо & в нем фигачат просто &). Кто поделится библиотекой либрусек в разных форматах? Думаю, электронные библиотеки - первый кандидат на тестирование. У меня несколько сот книжек с либрусека было скачано, пока его не прикрыли, их индексацию проверил, в zip-архиве и просто файлами. Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Продолжение pptp
Sergievskaya Irina пишет: Hello Hodot, Friday, May 5, 2006, 8:45:06 PM, you wrote: Нечаянно вышло... сорь :) Дублирую. Это после команды pon ? в таком случае видно что ppp0 не поднялся Честно говоря, я обладаю самым минимумом знаний, посему не поняла, что именно не поднялось и соответственно,как это лечить. вот это и смущает, что за авторизация на серваке? случайно не mppe? в винде прописывается только протокол CHAP что -то вроде строки должно появиться: 10.1.7.1192.168.0.245 255.255.255.255 UG0 0 0 eth0 после перезагрузки совсем весело стало с роутингом. на команду route -n Kernel IP routing table Destination Gateway Genmask Flags Metric RefUse просто пустая таблица, хотя еще ничего не добавляла и не убивала.. iriks:/home/iriks# ifconfig ---тоже пусто... /etc/network/interfaces - нужно вернуть назад настройки и вдруг здесь что понятно будет. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Продолжение pptp
Sergievskaya Irina пишет: Hello debian-russian, Заранее прошу прощения за длинный пост, но хотелось бы разобратся. Была прислана такая рекомендация #file /etc/ppp/options.pptp lock +chap nobsdcomp noauth nodeflate ipparam ai defaultroute #file /etc/ppp/chap-secrets # Secrets for authentication using CHAP # clientserver secret IP addresses "user" * "password" #file /etc/ppp/peers/atlant pty "pptp 10.0.78.1 --nolaunchpppd" name user remotename pptp file /etc/ppp/options.pptp и остальное... При вашем совете все вроде запускается. но нета нет. вот что выдало ifconfig eth0 Link encap:Ethernet HWaddr 00:0A:48:06:68:F8 inet addr:192.168.0.65 Bcast:192.168.0.255 Mask:255.255.255.0 EtherTalk Phase 2 addr:65280/45 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:12662 errors:0 dropped:0 overruns:0 frame:0 TX packets:407 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 RX bytes:1244807 (1.1 MiB) TX bytes:40801 (39.8 KiB) loLink encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 EtherTalk Phase 2 addr:0/0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:614 errors:0 dropped:0 overruns:0 frame:0 TX packets:614 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 RX bytes:115364 (112.6 KiB) TX bytes:115364 (112.6 KiB) вот еще проверка pon atlant debug dump logfd 2 nodetach pppd options in effect: debug # (from command line) nodetach# (from command line) logfd 2 # (from command line) dump# (from command line) noauth # (from /etc/ppp/options) name user # (from /etc/ppp/peers/atlant) remotename pptp # (from /etc/ppp/peers/atlant) # (from /etc/ppp/options) pty pptp 10.1.7.1 --nolaunchpppd# (from /etc/ppp/peers/atlant) ipparam ai # (from /etc/ppp/options) defaultroute# (from /etc/ppp/options) nobsdcomp # (from /etc/ppp/options) nodeflate # (from /etc/ppp/options) using channel 2 Using interface ppp0 Connect: ppp0 <--> /dev/pts/4 sent [LCP ConfReq id=0x1] rcvd [LCP ConfReq id=0x1 ] No auth is possible sent [LCP ConfRej id=0x1 ] rcvd [LCP ConfAck id=0x1] rcvd [LCP ConfReq id=0x2 ] No auth is possible sent [LCP ConfRej id=0x2 ] rcvd [LCP ConfReq id=0x3 ] No auth is possible sent [LCP ConfRej id=0x3 ] rcvd [LCP ConfReq id=0x4 ] No auth is possible sent [LCP ConfRej id=0x4 ] rcvd [LCP ConfReq id=0x5 ] No auth is possible sent [LCP ConfRej id=0x5 ] rcvd [LCP ConfReq id=0x6 ] No auth is possible sent [LCP ConfRej id=0x6 ] rcvd [LCP ConfReq id=0x7 ] No auth is possible sent [LCP ConfRej id=0x7 ] rcvd [LCP ConfReq id=0x8 ] No auth is possible sent [LCP ConfRej id=0x8 ] rcvd [LCP ConfReq id=0x9 ] No auth is possible sent [LCP ConfRej id=0x9 ] rcvd [LCP ConfReq id=0xa ] No auth is possible sent [LCP ConfRej id=0xa ] rcvd [LCP TermReq id=0xb] sent [LCP TermAck id=0xb] нужно поиграть с опциями require-mppe, require-mppe-40, require-mppe-128 или лучше позвонить в техподдержку провайдера и проконсультироваться там Script pptp 10.1.7.1 --nolaunchpppd finished (pid 2064), status = 0x0 Modem hangup Connection terminated. или здесь проигнорировала чего? Честно говоря пока никто не объяснял какого вида должна быть ента таблица роутинга. route -n Kernel IP routing table Destination Gateway Genmask Flags Metric RefUse Iface 192.168.0.0 0.0.0.0 255.255.255.0 U 0 00 eth0 0.0.0.0 192.168.0.245 0.0.0.0 UG0 00 eth0 Может тут что подправить надо? На всякий пожарный мои настройки IP 192.168.0.65 Маска 255,255,255,0 Шлюз 192,168,0,245 VPN IP 10.1.7.1 и еще другие настройки пыталась впихнуть.пишу настройки и все что выдало. инструкция Открываем терминал и создаём файл. /etc/ppp/options.pptp В котором прописываем опции для всех туннелей. lock noauth nobsdcomp nodeflate Создаём или редактируем файл /etc/ppp/chap-secrets в котором прописываем логин и пароль для интернета Создаём файл /etc/ppp/peers/$TUNNEL замените $TUNNEL на назв провайдера (atlant) и прописываем mtu 1372 mru 1500 persist maxfail 0 lcp-echo-interval 60 lcp-echo-failure 4 defaultroute pty "pptp $SERVER --nolaunchpppd" name $DOMAIN\\$USERNAME $SERVER $DOMAIN $USERNAME $TUNNEL -это переменные окружения, нужно либо задать их, а лучше пока (будет меньше путаницы) прописать явно адрес сервера,имя пользователя, название провайдера remotename PPTP file /etc/ppp/options.pptp ipparam $TUNNEL Открываем файл /etc/network/interfaces И добавляем в него Это нужно делать после того как туннель будет нормально подниматься ручками (pon atlant) auto lo eth0 $TUNNEL Так же прописываем локальные подсети up rou
Re: Продолжение pptp
Может http://pptpclient.sourceforge.net/ поможет? там хороший (очень) howto, есть графическая утилита для настройки. Кстати, провайдер может как требовать тот или иной тип шифрования, так и наоборот запрещать использовать какое-либо шифрование (обычно пишется в бумажке\книжечке им выдаваемых). -- С уважением, Василий Дьяконов (Fireball) mailto:[EMAIL PROTECTED] -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Продолжение pptp
В сообщении от 5 Май 2006 19:14 Hodot D.A. написал(a): > В сообщении от 5 Май 2006 14:10 Sergievskaya Irina написал(a): > Во первых стоило писать в тот же тред, а не начинать новый, так было бы > удобнее. > > > Hello debian-russian, > > Заранее прошу прощения за длинный пост, но хотелось бы разобратся. > > > > Была прислана такая рекомендация > > #file /etc/ppp/options.pptp > > lock > > +chap > > nobsdcomp > > noauth > > nodeflate > > ipparam ai > > defaultroute > > > > #file /etc/ppp/chap-secrets > > # Secrets for authentication using CHAP > > # clientserver secret IP addresses > > "user" * "password" > > > > #file /etc/ppp/peers/atlant > > pty "pptp 10.0.78.1 --nolaunchpppd" > > name user > > remotename pptp > > file /etc/ppp/options.pptp > > и остальное... > > > > > > При вашем совете все вроде запускается. но нета нет. > > вот что выдало > > ifconfig > > eth0 Link encap:Ethernet HWaddr 00:0A:48:06:68:F8 > > inet addr:192.168.0.65 Bcast:192.168.0.255 Mask:255.255.255.0 > > EtherTalk Phase 2 addr:65280/45 > > UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 > > RX packets:12662 errors:0 dropped:0 overruns:0 frame:0 > > TX packets:407 errors:0 dropped:0 overruns:0 carrier:0 > > collisions:0 > > RX bytes:1244807 (1.1 MiB) TX bytes:40801 (39.8 KiB) > > > > loLink encap:Local Loopback > > inet addr:127.0.0.1 Mask:255.0.0.0 > > EtherTalk Phase 2 addr:0/0 > > UP LOOPBACK RUNNING MTU:16436 Metric:1 > > RX packets:614 errors:0 dropped:0 overruns:0 frame:0 > > TX packets:614 errors:0 dropped:0 overruns:0 carrier:0 > > collisions:0 > > RX bytes:115364 (112.6 KiB) TX bytes:115364 (112.6 KiB) > > Это после команды pon ? > в таком случае видно что ppp0 не поднялся > > > вот еще проверка > > pon atlant debug dump logfd 2 nodetach > > pppd options in effect: > > debug # (from command line) > > nodetach# (from command line) > > logfd 2 # (from command line) > > dump# (from command line) > > noauth # (from /etc/ppp/options) > > name user # (from /etc/ppp/peers/atlant) > > remotename pptp # (from /etc/ppp/peers/atlant) > > # (from /etc/ppp/options) > > pty pptp 10.1.7.1 --nolaunchpppd# (from > > /etc/ppp/peers/atlant) ipparam ai # (from /etc/ppp/options) > > defaultroute# (from /etc/ppp/options) > > nobsdcomp # (from /etc/ppp/options) > > nodeflate # (from /etc/ppp/options) > > using channel 2 > > Using interface ppp0 > > Connect: ppp0 <--> /dev/pts/4 > > sent [LCP ConfReq id=0x1 > > ] rcvd [LCP ConfReq id=0x1> 0xd60d686d>] No auth is possible > > вот это и смущает, что за авторизация на серваке? случайно не mppe? > > > sent [LCP ConfRej id=0x1 ] > > rcvd [LCP ConfAck id=0x1 > > ] rcvd [LCP ConfReq id=0x2> 0xd60d686d>] No auth is possible > > sent [LCP ConfRej id=0x2 ] > > rcvd [LCP ConfReq id=0x3 ] > > No auth is possible > > sent [LCP ConfRej id=0x3 ] > > rcvd [LCP ConfReq id=0x4 ] > > No auth is possible > > sent [LCP ConfRej id=0x4 ] > > rcvd [LCP ConfReq id=0x5 ] > > No auth is possible > > sent [LCP ConfRej id=0x5 ] > > rcvd [LCP ConfReq id=0x6 ] > > No auth is possible > > sent [LCP ConfRej id=0x6 ] > > rcvd [LCP ConfReq id=0x7 ] > > No auth is possible > > sent [LCP ConfRej id=0x7 ] > > rcvd [LCP ConfReq id=0x8 ] > > No auth is possible > > sent [LCP ConfRej id=0x8 ] > > rcvd [LCP ConfReq id=0x9 ] > > No auth is possible > > sent [LCP ConfRej id=0x9 ] > > rcvd [LCP ConfReq id=0xa ] > > No auth is possible > > sent [LCP ConfRej id=0xa ] > > rcvd [LCP TermReq id=0xb] > > sent [LCP TermAck id=0xb] > > Script pptp 10.1.7.1 --nolaunchpppd finished (pid 2064), status = 0x0 > > Modem hangup > > Connection terminated. > > > > или здесь проигнорировала чего? > > Честно говоря пока никто не объяснял какого вида должна быть ента > > таблица роутинга. > > route -n > > Kernel IP routing table > > Destination Gateway Genmask Flags Metric RefUse > > Iface 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 > > 0 eth0 0.0.0.0 192.168.0.245 0.0.0.0 UG0 0 > > 0 eth0 > > что -то вроде строки должно появиться: > 10.1.7.1 192.168.0.245 255.255.255.255 UG0 00 eth0 > > опять таки пример команды которой это дело добавляется был раньше упомянут делается это потому что: когда подымается интерфейс туннель ендпоинт ссылается на этот ip соответственно линух думает что он стал доступен локально пытается туда послать инфу - а там > > > Может тут что подправить надо? > > На всякий пожарный мои настройки > > IP 192.168.0.65 > > Маска 255,255,255,0 > > Шлюз 192,168,0,245 > > VPN IP 10.1.7.1 > > > > и еще другие настройки пыталась впихнуть.пишу настройки и все что выдало. >
Re: Продолжение pptp
В сообщении от 5 Май 2006 14:10 Sergievskaya Irina написал(a): Во первых стоило писать в тот же тред, а не начинать новый, так было бы удобнее. > Hello debian-russian, > Заранее прошу прощения за длинный пост, но хотелось бы разобратся. > > Была прислана такая рекомендация > #file /etc/ppp/options.pptp > lock > +chap > nobsdcomp > noauth > nodeflate > ipparam ai > defaultroute > > #file /etc/ppp/chap-secrets > # Secrets for authentication using CHAP > # clientserver secret IP addresses > "user" * "password" > > #file /etc/ppp/peers/atlant > pty "pptp 10.0.78.1 --nolaunchpppd" > name user > remotename pptp > file /etc/ppp/options.pptp > и остальное... > > > При вашем совете все вроде запускается. но нета нет. > вот что выдало > ifconfig > eth0 Link encap:Ethernet HWaddr 00:0A:48:06:68:F8 > inet addr:192.168.0.65 Bcast:192.168.0.255 Mask:255.255.255.0 > EtherTalk Phase 2 addr:65280/45 > UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 > RX packets:12662 errors:0 dropped:0 overruns:0 frame:0 > TX packets:407 errors:0 dropped:0 overruns:0 carrier:0 > collisions:0 > RX bytes:1244807 (1.1 MiB) TX bytes:40801 (39.8 KiB) > > loLink encap:Local Loopback > inet addr:127.0.0.1 Mask:255.0.0.0 > EtherTalk Phase 2 addr:0/0 > UP LOOPBACK RUNNING MTU:16436 Metric:1 > RX packets:614 errors:0 dropped:0 overruns:0 frame:0 > TX packets:614 errors:0 dropped:0 overruns:0 carrier:0 > collisions:0 > RX bytes:115364 (112.6 KiB) TX bytes:115364 (112.6 KiB) Это после команды pon ? в таком случае видно что ppp0 не поднялся > вот еще проверка > pon atlant debug dump logfd 2 nodetach > pppd options in effect: > debug # (from command line) > nodetach# (from command line) > logfd 2 # (from command line) > dump# (from command line) > noauth # (from /etc/ppp/options) > name user # (from /etc/ppp/peers/atlant) > remotename pptp # (from /etc/ppp/peers/atlant) > # (from /etc/ppp/options) > pty pptp 10.1.7.1 --nolaunchpppd# (from > /etc/ppp/peers/atlant) ipparam ai # (from /etc/ppp/options) > defaultroute# (from /etc/ppp/options) > nobsdcomp # (from /etc/ppp/options) > nodeflate # (from /etc/ppp/options) > using channel 2 > Using interface ppp0 > Connect: ppp0 <--> /dev/pts/4 > sent [LCP ConfReq id=0x1 > ] rcvd [LCP ConfReq id=0x10xd60d686d>] No auth is possible вот это и смущает, что за авторизация на серваке? случайно не mppe? > sent [LCP ConfRej id=0x1 ] > rcvd [LCP ConfAck id=0x1 > ] rcvd [LCP ConfReq id=0x20xd60d686d>] No auth is possible > sent [LCP ConfRej id=0x2 ] > rcvd [LCP ConfReq id=0x3 ] > No auth is possible > sent [LCP ConfRej id=0x3 ] > rcvd [LCP ConfReq id=0x4 ] > No auth is possible > sent [LCP ConfRej id=0x4 ] > rcvd [LCP ConfReq id=0x5 ] > No auth is possible > sent [LCP ConfRej id=0x5 ] > rcvd [LCP ConfReq id=0x6 ] > No auth is possible > sent [LCP ConfRej id=0x6 ] > rcvd [LCP ConfReq id=0x7 ] > No auth is possible > sent [LCP ConfRej id=0x7 ] > rcvd [LCP ConfReq id=0x8 ] > No auth is possible > sent [LCP ConfRej id=0x8 ] > rcvd [LCP ConfReq id=0x9 ] > No auth is possible > sent [LCP ConfRej id=0x9 ] > rcvd [LCP ConfReq id=0xa ] > No auth is possible > sent [LCP ConfRej id=0xa ] > rcvd [LCP TermReq id=0xb] > sent [LCP TermAck id=0xb] > Script pptp 10.1.7.1 --nolaunchpppd finished (pid 2064), status = 0x0 > Modem hangup > Connection terminated. > > или здесь проигнорировала чего? > Честно говоря пока никто не объяснял какого вида должна быть ента > таблица роутинга. > route -n > Kernel IP routing table > Destination Gateway Genmask Flags Metric RefUse > Iface 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 > 0 eth0 0.0.0.0 192.168.0.245 0.0.0.0 UG0 0 > 0 eth0 что -то вроде строки должно появиться: 10.1.7.1192.168.0.245 255.255.255.255 UG0 00 eth0 опять таки пример команды которой это дело добавляется был раньше упомянут > Может тут что подправить надо? > На всякий пожарный мои настройки > IP 192.168.0.65 > Маска 255,255,255,0 > Шлюз 192,168,0,245 > VPN IP 10.1.7.1 > > и еще другие настройки пыталась впихнуть.пишу настройки и все что выдало. > инструкция > Открываем терминал и создаём файл. > /etc/ppp/options.pptp > В котором прописываем опции для всех туннелей. > lock noauth nobsdcomp nodeflate > Создаём или редактируем файл > /etc/ppp/chap-secrets > в котором прописываем логин и пароль для интернета > Создаём файл > /etc/ppp/peers/$TUNNEL > и прописываем > mtu 1372 > mru 1500 > persist > maxfail 0 > lcp-echo-interval 60 > lcp-echo-failure 4 > defaultroute > pty "pptp $SERVER --no