<?xml version="1.0" encoding="WINDOWS-1251"?>
<rss version="2.0">
<channel>
<title>Parser 3 forum</title>
<link>http://www.parser.ru/forum/</link>
<description>Parser 3. Обсуждение.</description>
<generator>Parser 3.4.1 (compiled on amd64-unknown-freebsd8.2) (http://www.parser.ru/)</generator>
<webMaster>mailbox@parser.ru</webMaster>
<lastBuildDate>Thu, 17 May 2012 02:23:01 GMT</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<item>
<title>libapache2-mod-parser3 + php5-xsl = Segmentation fault (11), max_rip</title>
<description>Подскажите в какую сторону копать, чтобы понять кто виновен.
Если трейсить, то как это лучше сделать?

libapache2-mod-parser3 ставил из sid ветки debian, даже пересобирал его локально на виртуальной машине. Т.к. у готовых пакетов зависимости ушли далеко вперед.
Полученные зависимости
libc6 (&gt;= 2.3), libgc1c2 (&gt;= 1:6.8-1.1), libgcc1 (&gt;= 1:4.1.1), libstdc++6 (&gt;= 4.2.1), libxml2 (&gt;= 2.7.4), libxslt1.1 (&gt;= 1.1.25), parser3-common (=3.4.1-4).

Пока выхожу из ситуации, что пхп работает как cgi там где нужен xsl, но сегодня при попытке зайти в модуль cmsms Gallery, апач упал совсем больно.
*** glibc detected *** /usr/sbin/apache2: free(): invalid pointer: 0xb8c159d8 ***
В общем хочу найти где они пересекаются, да полечить или хотя бы спросить как можно полечить.</description>
<author>maxrip@gmail.com</author>
<pubDate>Thu, 17 May 2012 02:23:01 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76872</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76872</guid>
</item>
<item>
<title>Переполнение, [MoKo]</title>
<description>Для преобразования из строки в число используется библиотечная функция strtol, а число C27EE5F5 больше, чем допускает long на 32-х битных системах (но проходит в unsigned long). &quot;Много единичек&quot; получаются не только под Windows, но и под 32-х битной Linux версией.

Так что в данном случае ошибки нет. Другое дело, что если в парсере обрабатывать - самим, то можно будет использовать strtoul, и тогда ваше число &quot;пролезет&quot;. Наверное мы так и сделаем к следующей версии. 

А какая у вас задача? Не нужно ли вам на самом деле ^inet:ntoa(0xC27EE5F5)?</description>
<pubDate>Thu, 17 May 2012 00:25:54 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76871</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76871</guid>
</item>
<item>
<title>math:convert, AndreyIl</title>
<description>ОС: Windows XP SP2
Parser: Parser/3.4.1 (compiled on i386-pc-win32)
Есть папка cgi-bin/* и index.html (кодировка UTF8-DOS):
&lt;code&gt;########################################
@main[]
	$result[^math:convert[C27EE5F5](16;2)]&lt;/code&gt;
Запускаю из командной строки index.html и получаю 1111111111111111111111111111111, а калькулятор выдает 11000010011111101110010111110101.

Если запустить index.html в консоли парсером такой же версии, только под линукс, то выводится правильный результат.

Как сделать, чтобы парсер под Windows выдавал правильный результат?</description>
<pubDate>Wed, 16 May 2012 13:07:29 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76870</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76870</guid>
</item>
<item>
<title>Ответ, AndreyIl</title>
<description>После внесения изменений по предложенным вариантам парсерный скрипт успешно обработал файл 211 мб без ошибок, хотя раньше отваливался на фале 190-200 мб.

Всем спасибо за советы.</description>
<pubDate>Wed, 16 May 2012 11:28:49 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76869</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76869</guid>
</item>
<item>
<title>спасибо, заработало, сделал с отловом исключения (-), Webnode</title>
<pubDate>Wed, 16 May 2012 09:41:16 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76868</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76868</guid>
</item>
<item>
<title>транзакции -- это здорово, Misha v.3</title>
<description>но я бы не стал грузить миллион записей в живую таблицу в рамках одной транзакции (а кто знает, сколько ещё всего надо загрузить в сопутствующие таблицы).
что commit что rollback будут для сервера очень рессурсоёмкими.</description>
<pubDate>Wed, 16 May 2012 01:50:30 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76867</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76867</guid>
</item>
<item>
<title>+1, Sumo</title>
<description>Полностью согласен — иннодб наиболее качественный и производительный движок для мускуля, тем более, что разработчики СУБД считают его основным. Тем не менее для временных таблиц часто эффективнее использовать майисам, особенно если данных очень много и нет суррогатных ключей. :)</description>
<author>oleg@volchkov.net</author>
<pubDate>Tue, 15 May 2012 16:33:46 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76866</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76866</guid>
</item>
<item>
<title>про транзакции, [MoKo]</title>
<description>[quote]при этом живая БД не будет долгое время находится в непотребном состоянии из-за длительного её апдейта.[/quote]

Ты не первый раз на этом акцент делаешь. :) Хотя innodb и транзакционность никто не отменял, мы для подобных задач активно этим пользуемся.
А с тех пор, как появилась опция innodb_file_per_table, мы стали использовать innodb еще активнее. :)</description>
<author>moko@design.ru</author>
<pubDate>Tue, 15 May 2012 16:28:33 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76865</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76865</guid>
</item>
<item>
<title>+1, Misha v.3</title>
<description>[quote]Рабочие скрипты должны взять информацию из удаленного источника, распарсить, сравнить результаты с тем, что в базе[/quote]

вот сравнение с тем, что есть в БД, лучше делать средствами БД.
Олег предлагает правильный вариант:
1. простой скрипт, который просто готовит данные к загрузки во временные таблицы/БД
2. быстрая загрузка
3. проверки/слияния с использованием SQL запросов. не будет никаких &quot;бесконечных&quot; циклов и огромного количества SQL запросов (как на чтение так и на запись).

при этом живая БД не будет долгое время находится в непотребном состоянии из-за длительного её апдейта. и процесс можно будет прерывать в любой момент на 1 и 2 шаге.</description>
<pubDate>Tue, 15 May 2012 15:05:59 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76864</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76864</guid>
</item>
<item>
<title>Разделите задачи на несколько скриптов..., Sumo</title>
<description>Получите, распарсите данные внешними скриптами, положите в базу (во временную таблицу) через load data или sql-выражения (разбиение на несколько частей и объединение их через конвеер даст еще и существенный рост производительности, поскольку задачи будут разбиты на несколько процессов). А потом спокойно обработайте в Парсере или в самой БД. И архитектура станет гибче и скорость увеличится в разы.</description>
<author>oleg@volchkov.net</author>
<pubDate>Tue, 15 May 2012 13:03:25 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76863</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76863</guid>
</item>
<item>
<title>Ответ, AndreyIl</title>
<description>Не все так просто.

Рабочие скрипты должны взять информацию из удаленного источника, распарсить, сравнить результаты с тем, что в базе, и только потом уже при разных условиях для разных данных сделать какие-либо действия, например, записать результаты в базу.

Вряд ли это можно сделать через ini-файл.</description>
<pubDate>Tue, 15 May 2012 12:54:35 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76862</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76862</guid>
</item>
<item>
<title>а чтобы лучше думалось..., Misha v.3</title>
<description>...подготовьте с помощью замен в вашем любимом редакторе данные для загрузки с помощью load data infile и попробуйте их загрузить. засеките время (если ваш sql клиент вдруг не показывает время выполнения операции).

желание делать иначе с большой долей вероятности отпадёт само собой.</description>
<pubDate>Tue, 15 May 2012 12:50:16 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76861</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76861</guid>
</item>
<item>
<title>Ответ, AndreyIl</title>
<description>Спасибо, буду думать.</description>
<pubDate>Tue, 15 May 2012 12:44:05 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76860</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76860</guid>
</item>
<item>
<title>Ответ, Misha v.3</title>
<description>систематического import-а многомегабайтных файлов быть не должно, т.к. это достаточно долго при любой реализации.

самая быстрая известная мне процедура import-а: прямая загрузка данных в БД с помощью load data [local] infile. существенно быстрее любой другой, опробованной мной. важный момент: во время import-а данных посетители могут видеть на сайте (мы-же про сайты говорим?) полную фигню, т.е. ускорить процедуру import-а данных настолько, насколько это вообще возможно -- важно. исключение -- первичная разовая загрузка данных, но и то, если речь идёт о нескольких часах загрузки, я лучше на perl напишу подготовку данных и проведу загрузку за 5 минут (я ведь знаю, что потом пришлют &quot;подправленные&quot; данные и загрузку надо будет повторить, причем возможно не раз).

если речь идёт о &lt;2 MB входных данных, я тоже буду писать import на парсере (мне так привычнее и быстрее).
если речь идёт о 20+ MB входных данных, я на парсере import даже не начну писать, т.к. это просто потеря времени.
если в промежутке -- возможны варианты. я посмотрю что за данные, что с ними надо сделать, как часто мне придётся их грузить и т.д.

но ваш случай, с моей колокольни -- это однозначно НЕ парсер: слишком много МБ, слишком много строк, слишком сложный процессинг каждой строки.</description>
<pubDate>Tue, 15 May 2012 12:39:30 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76859</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76859</guid>
</item>
<item>
<title>Вариант :) (-), max_rip</title>
<author>maxrip@gmail.com</author>
<pubDate>Tue, 15 May 2012 11:40:24 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76858</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76858</guid>
</item>
<item>
<title>Ответ, AndreyIl</title>
<description>Меня интересуют возможности парсера в работе с большии объемами данных, т.к. приходится на сайте писать импорт данных именно на парсере.
Каждый новый скрипт писать на перле или другом языке займет много времени, которого немного на решение поставленной задачи.

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

Спасибо за советы.</description>
<pubDate>Tue, 15 May 2012 09:46:10 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76857</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76857</guid>
</item>
<item>
<title>вы тратите своё время, imho :), Misha v.3</title>
<description>мне кажется, что данную задачу вы с помощью парсера не решите.
используйте другой инструмент (например perl), это нормальная практика.</description>
<pubDate>Tue, 15 May 2012 03:20:23 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76856</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76856</guid>
</item>
<item>
<title>Ответ, [MoKo]</title>
<description>[quote]Что в вашем понимании &quot;кусочное сохранение&quot;?[/quote]

Мне казалось, достаточно подробно написал здесь: http://www.parser.ru/forum/?id=76816

&gt; Есть какой-нибудь способ передавать любую переменную по ссылке? 

Повторюсь, преобразуйте параметры в хеш, и будет вам счастье.

&lt;code&gt;$params[ $.p1[value1] $.p2[value2]]
^method[$params]
$params.p1 - выведет &quot;value1 modified&quot;

@method[params]
$params.p1[value1 modified]
&lt;/code&gt;</description>
<pubDate>Mon, 14 May 2012 23:10:13 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76855</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76855</guid>
</item>
<item>
<title>Раз продолжаем..., Sumo</title>
<description>... То лучше не парится и добить в сервер еще 32 гига оперативы и памяти хватит наверняка.</description>
<author>sumo@proc.ru</author>
<pubDate>Mon, 14 May 2012 22:29:35 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76854</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76854</guid>
</item>
<item>
<title>Ответ, AndreyIl</title>
<description>[quote]Зачем для обработки части данных копировать данные из таблицы?
Сделали кусочное сохранение рузультата? Если да, то с какой скоростью обрабатываются данные?[/quote]
Если обрабатывать данные исходной таблицы в цикле, то скрипт вылетает из-за переполнения.
Что в вашем понимании &quot;кусочное сохранение&quot;?

[quote]Если hData это хеш, то он и так передается по ссылке. Если sData это строка, она передается по значению. Можно передавать $.value[Data], тогда
это будет тоже хеш.[/quote]
В методы могут передаваться числа, строки, таблицы, хеши и т.д.
Есть какой-нибудь способ передавать любую переменную по ссылке? В некоторых языках для этого используют спецсимволы.</description>
<pubDate>Mon, 14 May 2012 19:58:13 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76853</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76853</guid>
</item>
<item>
<title>Гм., [MoKo]</title>
<description>[quote]Получившуюся таблицу на 1393105 строк не получается сохранить в файл через ^tData.save[tData.txt], не хватает памяти.[/quote]

А зачем, ведь не она является результатом?

[quote]Попробовал сделать по-другому: [/quote]

Зачем для обработки части данных копировать данные из таблицы?

Сделали кусочное сохранение рузультата? Если да, то с какой скоростью обрабатываются данные?

[quote]^process, сильно ли это грузит[/quote]

Да.

[quote]Есть метод @m1[hData;sData][/quote]

Если hData это хеш, то он и так передается по ссылке. Если sData это строка, она передается по значению. Можно передавать $.value[Data], тогда
это будет тоже хеш.</description>
<author>moko@design.ru</author>
<pubDate>Mon, 14 May 2012 19:29:31 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76852</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76852</guid>
</item>
<item>
<title>Ответ, AndreyIl</title>
<description>Вернемся к обсуждению.

Получившуюся таблицу на 1393105 строк не получается сохранить в файл через ^tData.save[tData.txt], не хватает памяти.

Попробовал сделать по-другому:
&lt;code&gt;$iTemp(^math:ceiling(^tData.count[]/250000))
^for[iNum](1;$iTemp){
	$tTemp[^table::create[$tData;
		$.offset(($iNum-1)*250000)
		$.limit(250000)
	]]
	^processData[$tTemp]
}&lt;/code&gt;
В итоге не дождался результата и вырубил скрипт, прошло почти 2 часа.

Вопросы:
1. Есть ли смысл в таком подходе, ведь создание таблицы на основе существующей должно приводить к ее проркутке и вырезанию по указанным параметрам?
2. В методе @processData[] есть вызов в цикле ^process{^^${sMethod}^[$sData^]}, сильно ли это грузит, стоит ли отказаться в пользу вызова конкретного метода (^m1[$a1])?
3. Есть метод @m1[hData;sData]. Как сделать так, чтобы при изменении параметров (hData и sData) внутри этого метода эти переменные менялись после вызова метода?</description>
<pubDate>Mon, 14 May 2012 18:07:09 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76851</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76851</guid>
</item>
<item>
<title>Вы правы, проблема была в базе..., [Максим]</title>
<description>Поиграл с чарсетами и колэйшенами, экспорт-иморт и победа) Спасибо!</description>
<pubDate>Sun, 13 May 2012 16:13:00 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76850</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76850</guid>
</item>
<item>
<title>Похоже на utf-8, который смотрят как однобайтовую кодировку..., [MoKo]</title>
<description>Поэтому может это то, чем вы пытаетесь эти данные смотреть, не поддерживает UTF-8? :)

Безотносительно: то, как парсер работает с базой зависит от кодировки парсерных файлов на диске ($REQUEST:CHARSET) и опций подключения к mysql. Все это задается в cgi/auto.p</description>
<pubDate>Sat, 12 May 2012 21:57:16 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76849</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76849</guid>
</item>
<item>
<title>скрин, как выглядят символы, [Максим]</title>
<description>В прошлом сообщение символы не запостились правильно.

http://postimage.org/image/mljoezn3p/</description>
<pubDate>Sat, 12 May 2012 21:14:45 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76848</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76848</guid>
</item>
<item>
<title>Проблема с базой данных, [Максим]</title>
<description>Приветствую,

Встала задача переделать сайт, написанный на parser3. Основная проблема в кодировке данных в базе — хранится в какой-то битой кодировке. Русские символы в базе выглядят примерно так:
&lt;code&gt;&amp;#208;&amp;#157;&amp;#208;&amp;#190;&amp;#209;‡&amp;#209;&amp;#338;&amp;#209;&amp;#381; &amp;#208;&amp;#178;&amp;#209;‹&amp;#208;&amp;#191;&amp;#208;°&amp;#208;&lt;/code&gt;
При этом на сайте отображаются вполне нормально.
С парсером сам не работал, помогите раскукожить данные обратно, пожалуйста =)

Кодировка таблиц utf8.

MySQL server variables:
------------------------
character_set_client = utf8
character_set_connection = utf8
character_set_database = utf8
character_set_results = utf8
character_set_server = latin1
character_set_system = utf8
collation_connection = utf8_general_ci
collation_database = utf8_unicode_ci
collation_server = latin1_swedish_ci
------------------------</description>
<pubDate>Sat, 12 May 2012 21:07:45 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76847</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76847</guid>
</item>
<item>
<title>Ответ, AndreyIl</title>
<description>За P.P.S. спасибо.:)</description>
<pubDate>Sat, 12 May 2012 09:36:18 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76846</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76846</guid>
</item>
<item>
<title>Ответ, AndreyIl</title>
<description>Не вариант, т.к. на запускаемом компьютере может не быть базы данных.</description>
<pubDate>Sat, 12 May 2012 09:35:36 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76845</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76845</guid>
</item>
<item>
<title>Ответ, AndreyIl</title>
<description>Есть скрипт, который обрабатывает файлы в каталоге.
Скрипт запускается на разных компьютерах, файлы могут быть любые, обрабатывать надо все, при этом исходные файлы должны остаться неизменными.</description>
<pubDate>Sat, 12 May 2012 09:31:48 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76844</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76844</guid>
</item>
<item>
<title>http://www.parser.ru/forum/?id=51560 (-), G_Z</title>
<pubDate>Sat, 12 May 2012 09:12:12 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76843</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76843</guid>
</item>
<item>
<title>http://www.parser.ru/docs/lang/opuntainttaint.htm, Misha v.3</title>
<description>&lt;b&gt;file-spec&lt;/b&gt;
[quote]символы * ?  &quot; &lt; &gt; | 
преобразуются в &quot;_XX&quot;, 
где XX - код символа в шестнадцатеричной форме[/quote]

вы не можете парсером обрабатывать файлы с такими символами в их именах.

P.S. что в этом списке делает символ  я не знаю, возможно он используется по аналогии с кавычками. в любом случа на *nix по моему можно разрешить эти символы путём корректного \-эскейпинга.
P.P.S. мы подумаем, что с этим можно сделать :)</description>
<pubDate>Sat, 12 May 2012 01:47:56 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76842</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76842</guid>
</item>
<item>
<title>а откуда они там берутся, эти файлы?, Александр</title>
<description>возможно, это глюк парсера, да.
Но их ведь кто-то загружает туда? можно на этом этапе изменить имя файла.</description>
<author>mryasov@gmail.com</author>
<pubDate>Sat, 12 May 2012 01:33:15 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76841</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76841</guid>
</item>
<item>
<title>Ответ, AndreyIl</title>
<description>Скрипт не знает, какие имена у файлов, обрабатывает все по расширению в каталоге.</description>
<pubDate>Sat, 12 May 2012 01:04:37 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76840</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76840</guid>
</item>
<item>
<title>зачем апостроф? ) (-), Александр</title>
<author>mryasov@gmail.com</author>
<pubDate>Sat, 12 May 2012 00:20:22 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76839</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76839</guid>
</item>
<item>
<title>^taint[file-spec], AndreyIl</title>
<description>Здравствуйте.
Создал файл 12.txt, написал код:
&lt;code&gt;	$tFiles[^file:list[;^^1.*?\.txt]]
	$fFile[^file::load[binary;^taint[file-spec][$tFiles.name]]]&lt;/code&gt;
Пробовал различные варианты подстановки имени файла:
1. taint, untaint и apply-taint.
2. Заменял апостроф на его код согласно ^taint[file-spec].
3. Вписывал вручную различные варианты имени.

Всегда получаю ошибку об отсутствии файла.
Проверку -f &quot;...&quot; тоже не проходит.

Как решить данную проблему?</description>
<pubDate>Fri, 11 May 2012 17:31:34 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76838</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76838</guid>
</item>
<item>
<title>Ответ, AndreyIl</title>
<description>Дело не в контроле версий, а в возможности компилить, которая есть только дома, а править и тестировать надо дома и на работе.

Насчет работы с двоичными файлами: не раз доводилось делать импорт данных из экселя, но с экселем парсер не работает, а в .csv/.txt народ путается с разделителями в разных версиях.
Наверняка есть и другие примеры, когда понадобится работа с бинарниками для сайта.</description>
<pubDate>Fri, 11 May 2012 14:19:57 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76837</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76837</guid>
</item>
<item>
<title>Ответ, AndreyIl</title>
<description>Возможно, но для правки из разных мест парсер удобнее.

В процессе написания и правки скриптов нахожу что-то новое, что использую в работе.</description>
<pubDate>Fri, 11 May 2012 14:14:11 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76836</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76836</guid>
</item>
<item>
<title>Это все несложно решается..., Sumo</title>
<description>... с помощью систем контроля версий.

Что касается поддержки бинарных данных, то у Парсера концептуально нет работы с байтиками и, надеюсь, никогда и не появится. А для бинарных данных есть языки общего назначения.</description>
<author>oleg@volchkov.net</author>
<pubDate>Fri, 11 May 2012 14:13:06 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76835</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76835</guid>
</item>
<item>
<title>Компилите его на сервере +) (-), max_rip</title>
<author>maxrip@gmail.com</author>
<pubDate>Fri, 11 May 2012 14:06:02 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76834</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76834</guid>
</item>
<item>
<title>Вы стреляете из пистолета по великану, max_rip</title>
<description>Сделайте внешний инструмент, который разберет данные за вас. Все таки Парсер, не для таких целей. Да на нем можно сделать, но и чистой регуляркой можно решать какие-то математические задачи. И они будут работать, но вот эффективность у них будет нулевая.</description>
<author>maxrip@gmail.com</author>
<pubDate>Fri, 11 May 2012 14:04:58 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76833</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76833</guid>
</item>
<item>
<title>Ответ, AndreyIl</title>
<description>Код приходится часто менять как дома, так и на работе, поэтому компил не подходит.
Скрипт должен найти заголовки, определить длины различных данных и только после этого разобрать и переконвертить.

Надеюсь, что парсер когда-нибудь сможет работать с двоичными данными.:)

Все равно спасибо за совет.</description>
<pubDate>Fri, 11 May 2012 13:26:46 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76832</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76832</guid>
</item>
<item>
<title>Возьмите FreePascal..., Sumo</title>
<description>... и напишите простейшую программу, которая читает типизированный (file of record) файл и выдает на консоль записи в текстовом виде. Только не забудьте про выравнивание байтов в записях — FreePascal поддерживает различные варианты PackRecords.

Фактически получите команду cat, но для вашего типа данных, что будет полезно при всяческой отладке. :)

p.s. И с переносимостью особых проблем не будет — соберете бинарничек и будете его передавать вместе с Парсером.</description>
<author>oleg@volchkov.net</author>
<pubDate>Fri, 11 May 2012 13:17:35 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76831</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76831</guid>
</item>
<item>
<title>Ответ, AndreyIl</title>
<description>Раньше писал на Basic, QBasic, Visual Basis, Delphi (немного), но с двоичными файлами не работал, да и на этих языках уже давно не пишу.

Данные из хекса стал доставать сначала вручную, смотря в кодировку файла в Total Commander, потом уже написал функцию для получения данных разных типов.

Дома и на работе из общих языков программирования есть только парсер, поэтому можно править скрипт из разных мест.</description>
<pubDate>Fri, 11 May 2012 13:08:40 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76830</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76830</guid>
</item>
<item>
<title>Ответ, Maxx</title>
<description>Знание про двоичные и данные и hex у вас появились явно не при изучении парсера, значит какой то язык программирования вы наверно изучали раньше. Может написать скрипт на нём?</description>
<pubDate>Fri, 11 May 2012 12:53:13 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76829</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76829</guid>
</item>
<item>
<title>Ответ, AndreyIl</title>
<description>Если бы я знал какой-нибудь питон и т.д.:)

Т.к. по работе пишу все на парсере, то и скрипт получения данных написал тоже на нем.
Кроме того, скрипт должен работать еще у пары человек, поэтому просто загоняю в архив cgi-bin/* и рабочие файлы - работает.</description>
<pubDate>Fri, 11 May 2012 12:40:08 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76828</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76828</guid>
</item>
<item>
<title>Написать внешний скрипт..., Sumo</title>
<description>... на каком-нибудь Питоне, который возьмет двоичные данные и сформирует из них CSV-строки. Потом их можно будет обработать Парсером или просто положить в СУБД, а там уже делать любую обработку с выборками. Работать это будет и быстрее и надежнее.</description>
<author>oleg@volchkov.net</author>
<pubDate>Fri, 11 May 2012 12:33:11 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76827</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76827</guid>
</item>
<item>
<title>Ответ, AndreyIl</title>
<description>Есть двоичный файл с последовательностью пакетов.
Т.к. парсер не умеет работать с двоичными файлами, я перевожу исходник в хекс-вид, после чего регуляркой выдираю пакеты и получаю из них данные.

В регулярке забегание осталось от моего шаблона, т.к. в моем случае подряд могут идти несколько пакетов одного типа.
Если не исключать заголовок, то последующий пакет не будет обработан.

По тем же причинам нельзя залить данные в базе, т.к. сначала надо получить сами пакеты, в которых минимальный размер данных - 2 символа.

Если бы парсер работал с двоичными файлами, то все было бы намного проще, но увы, поэтому приходится переводить файл в хекс-вид, затем разбирать данные и получать из хекса integer, string и single.</description>
<pubDate>Fri, 11 May 2012 11:52:36 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76826</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76826</guid>
</item>
<item>
<title>Ответ, Maxx</title>
<description>я имел ввиду все же кусок реальных данных и более одного паттерна точно.
По вашему примеру кстати не понятно зачем вы в регулярке забегание вперед используете, так:

&lt;code&gt;$tData[^sText.match[START(.+?)END][g]]&lt;/code&gt;

тоже должно работать (и работать быстрее).

Но основная мысль в том, что наверняка у ваших данных есть какие то разделители (в данном случае START и END), т.е. данные структурированы. Тогда их лучше загрузить в базу данных, приблизительно так (что произойдет очень быстро)

&lt;code&gt;LOAD DATA INFILE filename INTO TABLE table
LINES STARTING BY START TERMINATED BY END&lt;/code&gt;

и уже с этой таблицей работать</description>
<pubDate>Fri, 11 May 2012 11:32:51 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76825</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76825</guid>
</item>
<item>
<title>Ответ, AndreyIl</title>
<description>Код в нескольких файлах, т.к. обрабатываю сразу каталог файлов и добываю разные данные.
Вот простой пример:
&lt;code&gt;$sText[START1234567890END]
$tData[^sText.match[START((?!END).+?)END][g]]
^tData.menu{
	...
	^if(^tData.line[] % 1000==0){
		^memory:compact[]
	}
}&lt;/code&gt;</description>
<pubDate>Thu, 10 May 2012 16:49:28 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76823</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76823</guid>
</item>
<item>
<title>а пример данных можно глянуть, вместе с регуляркой? (-)</title>
<pubDate>Thu, 10 May 2012 16:17:53 GMT</pubDate>
<link>http://www.parser.ru/forum/?id=76822</link>
<guid isPermaLink="true">http://www.parser.ru/forum/?id=76822</guid>
</item>
</channel>
</rss>

