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 Wednesday 10 February 2010 21:23:44 Serhiy Storchaka wrote: Если объём записи достаточно большой (содержимое документа) и исключить кеширование (большая база и не повторяющийся запрос), то извлечение содержимого из файла и из базы будет мало отличаться. Это ничему не противоречит - произвольный доступ к файлу быстр. Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Продолжение
Hello! On Tuesday 09 February 2010 06:56:25 Stanislav Vlasov wrote: 9 февраля 2010 г. 1:42 пользователь Alexey Pechnikov pechni...@mobigroup.ru написал: == Вопрос к сообществу: кто подскажет способ преобразовать в форматированный текст форматы fb2, epub? Парсер должен брать ввод на stdin и выдавать на stdout, без временных файлов. Сейчас обрабатываю как xml, с помощью sed заменяя амперсанд (кривой xml в fb2 - вместо amp; в нем фигачат просто ). 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 ?xml version=1.0? xsl:stylesheet xmlns:xsl=http://www.w3.org/1999/XSL/Transform; version=1.0 xsl:output method=text/ xsl:output omit-xml-declaration=yes/ xsl:template match=* xsl:value-of select=./ /xsl:template /xsl:stylesheet Довольно тупо, но во многих случаях этого хватает. .xslt для fb2 и различных форматов - на сайте грибузера должны быть. А как сайт называется? Best regards, Alexey Pechnikov. http://pechnikov.tel/
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: Продолжение
9 февраля 2010 г. 15:15 пользователь Alexey Pechnikov pechni...@mobigroup.ru написал: 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: Продолжение
Hello! On Tuesday 09 February 2010 13:50:37 Stanislav Vlasov wrote: 9 февраля 2010 г. 15:15 пользователь Alexey Pechnikov pechni...@mobigroup.ru написал: 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 г. 16:14 пользователь Alexey Pechnikov pechni...@mobigroup.ru написал: 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: Продолжение
Alexey Pechnikov wrote: $ time find /tmp/* | POISK_DB=DB ./poisk-add-file.tcl Лучше бы чтение имён файлов из stdin сделать опциональным, при указании специального ключика. Сейчас обрабатываю как xml, с помощью sed заменяя амперсанд (кривой xml в fb2 - вместо amp; в нем фигачат просто ). Такие файлы лучше сразу отвергать. -- 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: Утилита 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: Продолжение
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 'FictionBook xmlns:l=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: Продолжение
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 - вместо amp; в нем фигачат просто ). Такие файлы лучше сразу отвергать. Эдак мы рискуем выплеснуть с водой и некоторые хорошие книги. На либрусеке, к примеру, такие точно были. 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 - вместо amp; в нем фигачат просто ). Такие файлы лучше сразу отвергать. Эдак мы рискуем выплеснуть с водой и некоторые хорошие книги. На либрусеке, к примеру, такие точно были. Доли процента. И в этом случае следует не прятать проблему под ковёр, а взять, да и исправить испорченные документы. Иначе с ними не смогут работать и другие программы. Да и других проблем наверняка в них хватает. Советую набор утилит для починки плохих 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: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: Спасибо, но сейчас у меня задача несколько иная - обеспечить индексирование оригинального набора документов. _Посоветовать_ исправить - хорошо, но уж никак не игнорировать. Если по уму, то все не-юникодные документы следует тоже выбросить, но что же тогда останется... Собственно, написание индексатора для набора _валидных юникодных_ документов - тривиально, но малополезно (в этом случае не нужны цепочки фильтров, да и сама обработка несложная). Тогда и 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 Monday 08 February 2010 23:42:16 Alexey Pechnikov wrote: Кто поделится библиотекой либрусек в разных форматах? Думаю, электронные библиотеки - первый кандидат на тестирование. У меня несколько сот книжек с либрусека было скачано, пока его не прикрыли, их индексацию проверил, в zip-архиве и просто файлами. Спасибо всем откликнувшимся, скоро скачаю и проиндексирую, ссылки мне уже прислали. Что касается электронной библиотеки, есть такой вопрос: насколько опревдана библиотека с поддержкой одного лишь формата (fb2 или epub)? В общем-то, пока это меня не сильно интересовало, но при объемах современных библиотек возникает желание хранить в индексной базе непосредственно контент, вместо хранения контента на диске плюс текстового представления в базе (плюс сами индексы). Или другой вариант - в базе хранить _только_ индекс (эскулайт этого не умеет, но можно поковырять). Опять же, сжатие... по умолчанию не поддерживается, хотя я выкладывал описание реализации и некоторые тесты. Итак, или в базу закидываем контент ы xml и прямо по нему ищем, или в базе оставляем только индекс, а контент храним на диске. Иначе уж очень много места надо (вспоминаю, Витус об этом говорил, но тогда мне показалось преувеличением). 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 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 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: Продолжение [вопрос с библиотекой решен]
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|b.../b, Chem. and Ind., bLondon/b, 16, 647—651,b.../b ... 7|b.../bThe ancient Empires of the East, bLondon/b, 1883. 4 Мищенко Ф.b.../b 8|b.../bEncyclopedia of Photography, Desk Edition, bLondon/b: Focal Press, 1969, pb.../b Ниже информация о смещениях в тексте: 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: Продолжение [вопрос с библиотекой решен]
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! Вот более наглядно: 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: Продолжение [вопрос с библиотекой решен]
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: Продолжение [вопрос с библиотекой решен]
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: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: Продолжение
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 - вместо amp; в нем фигачат просто ). Кто поделится библиотекой либрусек в разных форматах? Думаю, электронные библиотеки - первый кандидат на тестирование. У меня несколько сот книжек с либрусека было скачано, пока его не прикрыли, их индексацию проверил, в zip-архиве и просто файлами. 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! 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: Продолжение
9 февраля 2010 г. 1:42 пользователь Alexey Pechnikov pechni...@mobigroup.ru написал: == Вопрос к сообществу: кто подскажет способ преобразовать в форматированный текст форматы fb2, epub? Парсер должен брать ввод на stdin и выдавать на stdout, без временных файлов. Сейчас обрабатываю как xml, с помощью sed заменяя амперсанд (кривой xml в fb2 - вместо amp; в нем фигачат просто ). xsltproc -o - file.xslt - .xslt для fb2 и различных форматов - на сайте грибузера должны быть. Могу поделиться перловым скриптом, делающим то же самое, да и сами .xslt есть. Кто поделится библиотекой либрусек в разных форматах? Думаю, электронные библиотеки - первый кандидат на тестирование. У меня несколько сот книжек с либрусека было скачано, пока его не прикрыли, их индексацию проверил, в zip-архиве и просто файлами. Выложить-то я могу... Но я давненько её скачивал... -- Stanislav
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 asyncmap 0x0 magic 0xfc20b77f pcomp accomp] rcvd [LCP ConfReq id=0x1 mru 1492 auth chap MD5 magic 0xd60d686d] No auth is possible вот это и смущает, что за авторизация на серваке? случайно не mppe? sent [LCP ConfRej id=0x1 auth chap MD5] rcvd [LCP ConfAck id=0x1 asyncmap 0x0 magic 0xfc20b77f pcomp accomp] rcvd [LCP ConfReq id=0x2 mru 1492 auth pap magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x2 auth pap] rcvd [LCP ConfReq id=0x3 mru 1492 auth chap MD5 magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x3 auth chap MD5] rcvd [LCP ConfReq id=0x4 mru 1492 auth pap magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x4 auth pap] rcvd [LCP ConfReq id=0x5 mru 1492 auth chap MD5 magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x5 auth chap MD5] rcvd [LCP ConfReq id=0x6 mru 1492 auth pap magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x6 auth pap] rcvd [LCP ConfReq id=0x7 mru 1492 auth chap MD5 magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x7 auth chap MD5] rcvd [LCP ConfReq id=0x8 mru 1492 auth pap magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x8 auth pap] rcvd [LCP ConfReq id=0x9 mru 1492 auth chap MD5 magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x9 auth chap MD5] rcvd [LCP ConfReq id=0xa mru 1492 auth pap magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0xa auth pap] 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 В котором прописываем опции для всех
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 asyncmap 0x0 magic 0xfc20b77f pcomp accomp] rcvd [LCP ConfReq id=0x1 mru 1492 auth chap MD5 magic 0xd60d686d] No auth is possible вот это и смущает, что за авторизация на серваке? случайно не mppe? sent [LCP ConfRej id=0x1 auth chap MD5] rcvd [LCP ConfAck id=0x1 asyncmap 0x0 magic 0xfc20b77f pcomp accomp] rcvd [LCP ConfReq id=0x2 mru 1492 auth pap magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x2 auth pap] rcvd [LCP ConfReq id=0x3 mru 1492 auth chap MD5 magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x3 auth chap MD5] rcvd [LCP ConfReq id=0x4 mru 1492 auth pap magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x4 auth pap] rcvd [LCP ConfReq id=0x5 mru 1492 auth chap MD5 magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x5 auth chap MD5] rcvd [LCP ConfReq id=0x6 mru 1492 auth pap magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x6 auth pap] rcvd [LCP ConfReq id=0x7 mru 1492 auth chap MD5 magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x7 auth chap MD5] rcvd [LCP ConfReq id=0x8 mru 1492 auth pap magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x8 auth pap] rcvd [LCP ConfReq id=0x9 mru 1492 auth chap MD5 magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x9 auth chap MD5] rcvd [LCP ConfReq id=0xa mru 1492 auth pap magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0xa auth pap] 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 соответственно линух думает что он стал доступен локально пытается туда послать
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
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 asyncmap 0x0 magic 0xfc20b77f pcomp accomp] rcvd [LCP ConfReq id=0x1 mru 1492 auth chap MD5 magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x1 auth chap MD5] rcvd [LCP ConfAck id=0x1 asyncmap 0x0 magic 0xfc20b77f pcomp accomp] rcvd [LCP ConfReq id=0x2 mru 1492 auth pap magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x2 auth pap] rcvd [LCP ConfReq id=0x3 mru 1492 auth chap MD5 magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x3 auth chap MD5] rcvd [LCP ConfReq id=0x4 mru 1492 auth pap magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x4 auth pap] rcvd [LCP ConfReq id=0x5 mru 1492 auth chap MD5 magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x5 auth chap MD5] rcvd [LCP ConfReq id=0x6 mru 1492 auth pap magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x6 auth pap] rcvd [LCP ConfReq id=0x7 mru 1492 auth chap MD5 magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x7 auth chap MD5] rcvd [LCP ConfReq id=0x8 mru 1492 auth pap magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x8 auth pap] rcvd [LCP ConfReq id=0x9 mru 1492 auth chap MD5 magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0x9 auth chap MD5] rcvd [LCP ConfReq id=0xa mru 1492 auth pap magic 0xd60d686d] No auth is possible sent [LCP ConfRej id=0xa auth pap] 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
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: Продолжение проблем с ядром
On Mon, 19 Mar 2001, BeerBong wrote: Date: Mon, 19 Mar 2001 15:08:23 +0400 From: BeerBong [EMAIL PROTECTED] To: debian-russian debian-russian@lists.debian.org Subject: Продолжение проблем с ядром Resent-From: debian-russian@lists.debian.org В пятницу были проблемы с __alloc_pages... Было ясно что проблемы со свопом, у которого работа в 2.4.2 изменилась (Размер свопа был такой же как и размер RAM), срочно был проведен даунгрейд до 2.2.18, в субботу, воскресенье сервер вел себя достойно, не капризничал. В понедельник в логах ядра появилось следующее, - Mar 19 14:59:47 maul kernel: VM: do_try_to_free_pages failed for kupdate... Mar 19 14:59:47 maul last message repeated 3 times - apache при этом не отвечает ни на какие запросы в его логах чисто... То выделить, теперь освободить не может... Мне кажется с диском проблемы - я прав в своих предположениях ? не то чтобы очень... проаппгрейдься до 2.2.19pre2 -- там _это_ залечили или добавь свопа и обратно на 2.4 (dd ...;mkswap -f /var/swp.file;swapon...)
Re: Продолжение проблем с ядром
В пятницу были проблемы с __alloc_pages... Было ясно что проблемы со свопом, у которого работа в 2.4.2 изменилась (Размер свопа был такой же как и размер RAM), срочно был проведен даунгрейд до 2.2.18, в субботу, воскресенье сервер вел себя достойно, не капризничал. В понедельник в логах ядра появилось следующее, - Mar 19 14:59:47 maul kernel: VM: do_try_to_free_pages failed for kupdate... Mar 19 14:59:47 maul last message repeated 3 times - apache при этом не отвечает ни на какие запросы в его логах чисто... То выделить, теперь освободить не может... Мне кажется с диском проблемы - я прав в своих предположениях ? не то чтобы очень... проаппгрейдься до 2.2.19pre2 -- там _это_ залечили или добавь свопа и обратно на 2.4 (dd ...;mkswap -f /var/swp.file;swapon...) Фуф... Ок Добавлю я еще свопа, хотя судя по результам команды free он практически не используется. Настораживает то, что до апгрейда стоял 2.2.16 - никаких проблем не было. Потом поставили 2.4.2 - проблемы появились после 2 недель аптайма, потом поставили 2.2.18 ядро проблемы появились через 3 дня. Загруз сервера и раньше был нехилый - ничего такого не было. Ну хорошо, пока есть причины грешить на софт, будем патчить, если это не поможет - будем диск проверять. Просто проверить диск это надо грузиться в сингл моде, а сервер очень важный останавливать его нельзя. :( - Sergey Polyakov aka BeerBong Chief of WebZavod http://www.webzavod.ru Tel. +7 (8462) 43-93-85 | +7 (8462) 43-93-86 mailto:[EMAIL PROTECTED]