<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:bacek</id>
  <title>Старое криведко</title>
  <subtitle>Старое криведко</subtitle>
  <author>
    <name>Старое криведко</name>
  </author>
  <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom"/>
  <updated>2009-12-20T07:27:03Z</updated>
  <lj:journal userid="147539" username="bacek" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://bacek.livejournal.com/data/atom" title="Старое криведко"/>
  <link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:352375</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/352375.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=352375"/>
    <title>А давайте я чего-нить про Parrot напишу.</title>
    <published>2009-12-20T07:27:03Z</published>
    <updated>2009-12-20T07:27:03Z</updated>
    <category term="sux"/>
    <category term="parrot"/>
    <category term="rulez"/>
    <category term="tech"/>
    <content type="html">В 2-х словах - GC в Parrot'е ужасен. Нет, даже не так. ЧУДОВИЩЕН. Никто не хочет помочь с написанием нормального Generational GC with bells and whistles?&lt;br /&gt;&lt;br /&gt;(Да, пока нормального GC нет, приходится управляться "в ручную". Я тут замутил мелкий бранч в котором сильно уменьшил количество мусора на каждом вызове функций. Типа ~15% ускорения за несколько часов работы)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:352059</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/352059.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=352059"/>
    <title>О! Пока не забыл. История про обработку гигабайтных XMLек в 8-и килобайтах памяти.</title>
    <published>2009-11-17T11:55:15Z</published>
    <updated>2009-11-17T11:55:15Z</updated>
    <category term="xml"/>
    <category term="tech"/>
    <content type="html">Предистория - пару лет назад я работал над XQuery. Очень красивый язык, для запросов по XMLю. Чуток оверинжиниред, но это обходимо. В кратце - некий декларативно-функциональный язык, без сайд-эффектов, заточеный на обработку древовидных структур. Так как целевой платформой был "embedded linux" (fsvo "embedded") то приходилось экономить на всём. Самая большая проблема - память. Ибо несмотря на свою раздутость, распарсенное XML дерево (например DOM) в пямяти занимает в 4-5 раз больше места, чем его тектовое представление.&lt;br /&gt;&lt;br /&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;br /&gt;Откуда получается "4-5 раз"? Очень просто - возьмём скажем классическую структуру для представления одной ноды:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
struct XMLNode {
  char *local_name;
  char *namespace;
  char *namespace_prefix;
  XMLNode *first_child;
  XMLNode *next_child;
  XMLNode *previous;
  XMLNode *next;
  char *content; // for attributes/text/cdata
};
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;(Это примерно соответсвует тому, что есть в libxml2/xerces/etc). Итого 8 указателей. На 32-х битной архитектуре это 32 байта. Тег "&amp;lt;tag/&amp;gt;" занимает 6 байт... Да, конечно, такое представление каждой ноды не оптимально, но позволяет легко ходить по всему дереву (что в XQuery и требуется). С другой стороны - есть классическое "табличное" представление того же самого дерева в виде массива кортежей вида:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;(tagname, pre-order, post-order, depth, elementType, content)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;где pre-order и post-order порядок узла в depth-first traversal. Для примера дерево (foo (bar (@baz "blah"))) может быть представлено в виде&lt;br /&gt;&lt;br /&gt;foo, 1, 5, 1, tag, null&lt;br /&gt;bar, 2, 4, 2, tag, null&lt;br /&gt;baz, 3, 3, 3, attribute, "blah"&lt;br /&gt;&lt;br /&gt;Итого: 12 байт на имя, 4 pre-order, 4 post-order, 4 depth, 4 elementType, 4 content. Те же 32 байта, но с неким полем для манёвра. А далее мы начинаем применять некое количество хаков и ограничений для ужимания каждой ноды в 8 байт.&lt;br /&gt;&lt;br /&gt;1. Засовываем все эти кортежи в массив. Понимаем, что pre-order нам хранить не нужно, ибо он соответсвует индексу в массиве. Ещё -4 байта.&lt;br /&gt;&lt;br /&gt;2. Одно из основных понятий в XML 1.1/XQuery это QName. Тег+неймспейс+неймспейс_префикс.  Т.е. у &amp;lt;foo:bar xmlns:foo="#uri"&amp;gt; QName будет примерно таким:&lt;br /&gt;&lt;br /&gt;name: bar&lt;br /&gt;ns:   #uri&lt;br /&gt;prefix: bar&lt;br /&gt;&lt;br /&gt;Естественное движение - засовываем это всё в какой-нибудь QNameDictionary и храним один индекс вместо 3-х указателей. Итого - -8 байт.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Начинаем считать биты.&lt;br /&gt; а) Типов элементов у нас 7 (tag, attribute, text, comment, cdata, processing-instruction, namespace-node). 3-х бит достаточно.&lt;br /&gt; б) Количество различных QName даже в самых развевистых XMLях достаточно мало. Ну скажем 64к. (Опять же - ембедщина, нам не то, что бы нужно обрабатывать "сферический xml в вакууме). Итого - 16 бит.&lt;br /&gt; в) Глубина дерева тоже не так, чтобы большая. Сурово лимитируем её на 4096. Итого 12 бит.&lt;br /&gt;&lt;br /&gt;В сумме - 31 бит. Описываем с битовой длинной, задаём прагму, что бы компилятор не умничал - профит. Ещё минус 12 байт.&lt;br /&gt;&lt;br /&gt;На текущий момент структура выглядит примерно так:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
struct XMLNode {
  QName_t name:16;
  int     elementType:3;
  int     depth:7;        // total 4 bytes
  size_t  post_order;     // index in array
  char   *content;
};
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Последний "финт ушами" - pre-order имеет значение только для element'ов, но у них нет указателя на content. У всех остальных нод не может быть "детей", только content. Засовываем их в один union! Итого:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
struct XMLNode {
  QName_t name:16;
  int     elementType:3;
  int     depth:7;        // total 4 bytes
  union {
    size_t  post_order;   // index in array
    char   *content;
  } data;                 // 4 bytes
};
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;И таки ужали эту всю марахайку в 8 байт :)&lt;br /&gt;&lt;br /&gt;А дальше уже совсем просто: вместо "стандартного" vector&amp;lt;XMLNode&amp;gt; делаем свой, с &lt;s&gt;блекджеком и шлюхами&lt;/s&gt; со страничной организацией (скажем в 4 килобайта), берём mmap и пишем сваппинг на диск неиспользуемых страниц. Для увеличения скорости храним в памяти только текущую и предыдущую страницу. Итого - 8 килобайт на хранение структуры. &lt;br /&gt;&lt;br /&gt;Применяем тот же приём для хранения content'а - аллокируем всё через StringFactory и храним айдишники вместо указателей. У StringFactory внутри "неонка" с "mmap"ом и пейджингом (чуть более сложная, чем первая. Ибо могут понаботится строки больше 4-х килобайт).&lt;br /&gt;&lt;br /&gt;Step 3 - Profit! У нас в памяти живёт 8 килобайт на структуру, примерно 8 килобайт на строки, словарь QName'ов (в реальной жизни достаточно мелкий). При парсинге мы скидываем страницы на диск, при обработке - подчитываем их обратно. В большинстве случаев - одни раз.&lt;br /&gt;&lt;br /&gt;Вот как-то так. Обработать гигабайтные xml-и в минимуме памяти можно. И даже достаточно быстро. А учитывая особенности аллокации, то даже быстрее, чем в "классическом" древовидном представлении, ибо локальность нод в памяти просто чудовищная :)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:351830</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/351830.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=351830"/>
    <title>Журнал "закрыт" (дубль "два")</title>
    <published>2009-11-17T09:40:41Z</published>
    <updated>2009-11-17T09:40:41Z</updated>
    <content type="html">Итого - сабж. Мне просто больше нечего сюда больше присать.&lt;br /&gt;&lt;br /&gt;Про "технологии" - не хочется. Есть много людей которые пишут лучше и больше чем я.&lt;br /&gt;&lt;br /&gt;Про "жизнь" - тем более. Оно нафиг не нужно. Ни мне, ни вам.&lt;br /&gt;&lt;br /&gt;Если есть какие-то вопросы - задавайте в комментариях тут. Обещаю ответить предельно честно, если это не задевает личную жизнь других людей.&lt;br /&gt;&lt;br /&gt;"Театр закрывается, нас всех тошнит"</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:351732</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/351732.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=351732"/>
    <title>Parrot 1.6.0 released!</title>
    <published>2009-09-15T14:09:57Z</published>
    <updated>2009-09-15T14:09:57Z</updated>
    <category term="parrot"/>
    <category term="tech"/>
    <content type="html">Parrot 1.6.0 released. FSVO. It's tagged in svn. And I already broke trunk...&lt;br /&gt;&lt;br /&gt;A lot of major refactorings and improvements were made:&lt;br /&gt;&lt;br /&gt;- Last crappy bit about using refcounts was removed.&lt;br /&gt;- Profiling was rebuilt from scratch and fully functional.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:351373</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/351373.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=351373"/>
    <title>It's alive!</title>
    <published>2009-09-06T08:07:46Z</published>
    <updated>2009-09-06T08:07:46Z</updated>
    <category term="parrot"/>
    <category term="rulez"/>
    <category term="tech"/>
    <content type="html">&lt;a href="http://fotki.yandex.ru/users/bacek/view/172092/"&gt;&lt;img src="http://img-fotki.yandex.ru/get/3700/bacek.d/0_2a03c_d9b8a479_L.jpg" width="500" height="313" title="" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Profiling for Parrot is mostly done!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:351174</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/351174.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=351174"/>
    <title>bacek @ 2009-09-04T19:36:00</title>
    <published>2009-09-04T09:37:49Z</published>
    <updated>2009-09-04T09:37:49Z</updated>
    <content type="html">Эта... А прошлогодний GSoC проект по отрыванию GC из Apache Harmony в отдельную библиотеку так и не случился? Или я просто его нагуглить не могу?</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:350744</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/350744.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=350744"/>
    <title>bacek @ 2009-09-03T23:18:00</title>
    <published>2009-09-03T13:21:44Z</published>
    <updated>2009-09-03T13:21:44Z</updated>
    <category term="parrot"/>
    <category term="tech"/>
    <content type="html">&lt;a href="https://trac.parrot.org/parrot/changeset/40958/trunk"&gt;https://trac.parrot.org/parrot/changeset/40958/trunk&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Зафигачил нефиговую фигню в паррот. &amp;gt;7500 строк в диффе. Таки убил последнее место, где использовались реф-каунты.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:350648</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/350648.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=350648"/>
    <title>Юбилейчик</title>
    <published>2009-09-02T13:42:49Z</published>
    <updated>2009-09-02T13:42:49Z</updated>
    <category term="parrot"/>
    <category term="fun"/>
    <category term="tech"/>
    <content type="html">&lt;a href="http://irclog.perlgeek.de/parrot/2009-09-02#i_1457708"&gt;http://irclog.perlgeek.de/parrot/2009-09-02#i_1457708&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Приблизительно соответсвует количеству коммитов в Parrot :)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:350326</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/350326.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=350326"/>
    <title>bacek @ 2009-08-31T20:47:00</title>
    <published>2009-08-31T10:48:18Z</published>
    <updated>2009-08-31T10:48:18Z</updated>
    <content type="html">&lt;a href="http://dz.livejournal.com/516337.html"&gt;http://dz.livejournal.com/516337.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Интересно, а сколько вариантов GC знает dz?</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:350148</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/350148.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=350148"/>
    <title>Ура!</title>
    <published>2009-08-31T05:31:43Z</published>
    <updated>2009-08-31T05:31:43Z</updated>
    <content type="html">Тёмыч народил сына!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:349718</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/349718.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=349718"/>
    <title>bacek @ 2009-08-26T22:48:00</title>
    <published>2009-08-26T12:51:36Z</published>
    <updated>2009-08-26T12:51:36Z</updated>
    <content type="html">&lt;a href="http://brighte.livejournal.com/11697.html"&gt;http://brighte.livejournal.com/11697.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Чёрт... Хочется написать много слов, но все они будут совершенно не те...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:349520</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/349520.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=349520"/>
    <title>Давайте я тоже напишу про статическую "компиляцию" Perl5.</title>
    <published>2009-08-17T12:09:09Z</published>
    <updated>2009-08-17T12:09:09Z</updated>
    <category term="perl"/>
    <category term="tech"/>
    <content type="html">"Все побежали и я побежал" (с) Василий Алибабаевич.&lt;br /&gt;&lt;br /&gt;1. Боян. Оригинальному посту на (прошу заметить) Perl Monks уже года полтора. Заметка на LtU появилась дня три назад. Охренительная оперативность.&lt;br /&gt;&lt;br /&gt;2. &lt;b&gt;Любой&lt;/b&gt; динамический язык с поддержкой eval невозможно &lt;b&gt;скомпилировать&lt;/b&gt; статически полностью.&lt;br /&gt;&lt;br /&gt;3. Perl5 невозможно спарсить статически. И что? Зато это даёт возможно писать что-то вроде &lt;br /&gt;&lt;pre&gt;
sub foo(&amp;@);

foo { ... } @array;
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;4. Невозможность статического парсинга не отменят статического анализа и оптимизации. Попробуйте что-нибудь вида &lt;tt&gt;perl -MO=Deparse -e 'print 2+2'&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;5. В Perl6 всё ещё "хуже". Там парсер вообще на каждый чих может перестраиваться. Смотреть &lt;a href="http://bacek.livejournal.com/345648.html"&gt;http://bacek.livejournal.com/345648.html&lt;/a&gt; в качестве примера. Ну и что, что перестраивается?</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:349408</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/349408.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=349408"/>
    <title>Идея кулинарного стартапа</title>
    <published>2009-08-09T05:37:22Z</published>
    <updated>2009-08-09T05:37:22Z</updated>
    <content type="html">"Еда мужская. Полкило". Сборник рецептов для холостяков. Не более 3-х ингридиентов + мясо. Время готовки - не более получаса.&lt;br /&gt;&lt;br /&gt;Life sux.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:349032</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/349032.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=349032"/>
    <title>Я окончательно для себя осознал причину моего занятия всяческим опенсорсом.</title>
    <published>2009-08-04T12:57:13Z</published>
    <updated>2009-08-04T12:57:13Z</updated>
    <content type="html">Карму чищу.&lt;br /&gt;&lt;br /&gt;(Все долгие объяснения урезаны нафиг)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:348785</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/348785.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=348785"/>
    <title>Эффект плацебо?</title>
    <published>2009-08-02T12:35:07Z</published>
    <updated>2009-08-02T12:35:07Z</updated>
    <content type="html">Купил тут по случаю на свой цивег 205/45R16. Как-то он совершенно по-другому рулится стал. Ощущения такие, что в поворот его кто-то "втягивает".</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:348458</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/348458.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=348458"/>
    <title>Читал parrot/CREDITS</title>
    <published>2009-08-01T05:08:01Z</published>
    <updated>2009-08-01T05:08:01Z</updated>
    <category term="fux"/>
    <category term="parrot"/>
    <category term="perl"/>
    <content type="html">&lt;pre&gt;
N: Bryan C. Warnock
D: The First Perl 6 Summarizer
D: Little things here and there in pre-Parrot days.
D: And, yes, {sigh}, *that* Warnock.
E: bwarnock@raba.com
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Гы-гы-гы, евпочя :)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:348241</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/348241.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=348241"/>
    <title>-Ofun</title>
    <published>2009-07-07T14:32:45Z</published>
    <updated>2009-07-07T14:32:45Z</updated>
    <category term="parrot"/>
    <category term="perl"/>
    <category term="rulez"/>
    <category term="tech"/>
    <content type="html">&lt;pre&gt;

# ws handles whitespace, pod and perl and C comments
token ws {
  [
  | \s+
  | '#' \N*
  | ^^ '=' .*? \n '=cut'
  | '/*' .*? '*/'
  ]*
}

&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I love this language :)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:347973</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/347973.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=347973"/>
    <title>bacek @ 2009-07-06T21:06:00</title>
    <published>2009-07-06T11:08:49Z</published>
    <updated>2009-07-06T11:08:49Z</updated>
    <category term="sux"/>
    <category term="tech"/>
    <content type="html">Други,&lt;br /&gt;&lt;br /&gt;а как мне нахер отключить в Debian/Lenny i386 все эти новомодндые Stack protector, ASLR и т.п.? А то оно мне тут сильно мешает отлаживать проезды по памяти...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:347731</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/347731.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=347731"/>
    <title>bacek @ 2009-07-02T21:25:00</title>
    <published>2009-07-02T11:27:39Z</published>
    <updated>2009-07-02T11:27:39Z</updated>
    <category term="sux"/>
    <category term="tech"/>
    <content type="html">&lt;a href="http://www.csd.uwo.ca/~magi/personal/humour/Computer_Audience/The Parable of the Two Programmers.html"&gt;http://www.csd.uwo.ca/~magi/personal/humour/Computer_Audience/The Parable of the Two Programmers.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;85-й год... Иногда хочется просто застрелиться от того, что нихера в этом мире не меняется...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:347621</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/347621.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=347621"/>
    <title>bacek @ 2009-06-25T21:58:00</title>
    <published>2009-06-25T12:01:32Z</published>
    <updated>2009-06-25T12:01:32Z</updated>
    <category term="sux"/>
    <category term="tech"/>
    <content type="html">Я прям как на яву вижу, как девелоперы ЖЖ рвут волосы из жопы, что у них накрылась мастер-база мыскла на которой жил блог &lt;span class='ljuser ljuser-name_drugoi' lj:user='drugoi' style='white-space: nowrap;'&gt;&lt;a href='http://drugoi.livejournal.com/profile'&gt;&lt;img src='http://l-stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /&gt;&lt;/a&gt;&lt;a href='http://drugoi.livejournal.com/'&gt;&lt;b&gt;drugoi&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:347139</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/347139.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=347139"/>
    <title>Wag the dog</title>
    <published>2009-06-05T13:17:35Z</published>
    <updated>2009-06-05T13:17:35Z</updated>
    <category term="parrot"/>
    <category term="rulez"/>
    <category term="fun"/>
    <category term="tech"/>
    <content type="html">&lt;a href="http://nopaste.snit.ch/16791"&gt;http://nopaste.snit.ch/16791&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ну типа так. Ещё один шажок к тому, чтобы parrot мог компилировать сам себя :)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:346993</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/346993.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=346993"/>
    <title>Оказывается...</title>
    <published>2009-05-27T12:22:42Z</published>
    <updated>2009-05-27T12:22:42Z</updated>
    <category term="sux"/>
    <category term="tech"/>
    <content type="html">... что если в Цивеге на заднем сиденьи сидит кто-то тяжёлый, дорога чуток мокрая, а ты пытаешься ехать также, как раньше, то лучше этого не делать...&lt;br /&gt;&lt;br /&gt;Возврашался сегодня в контору с ланча. Вёз трёх человек. Так эта дурацкая желязяка, при полностью вывернутом руле, продалжала подпрыгивая ехать прямо и отказывалась поворачивать совсем. Ладно скорость была мелкая и мы таки уткнулись в поребрик...&lt;br /&gt;&lt;br /&gt;(Да, а заднеприводные хетчи кто-нить делает?)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:346848</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/346848.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=346848"/>
    <title>bacek @ 2009-05-25T23:10:00</title>
    <published>2009-05-25T12:14:58Z</published>
    <updated>2009-05-25T12:14:58Z</updated>
    <category term="web"/>
    <category term="tech"/>
    <content type="html">Сходил в Яху на open day про Blah-blah Web Speed blah-blah improvements. Впечатления двойственные:&lt;br /&gt;&lt;br /&gt;1. Узнал некоторое количество новых фишек. Это хорошо.&lt;br /&gt;2. 90% информации (для меня) - очевидные вещи. Это вроде нормально, ибо опыт не пропьёшь.&lt;br /&gt;3. 90% слушателей про эти 90% информации слышали впервые. И это плохо и грустно...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:346455</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/346455.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=346455"/>
    <title>Wearing a chromatic's hat</title>
    <published>2009-05-23T13:25:15Z</published>
    <updated>2009-05-23T13:25:15Z</updated>
    <category term="parrot"/>
    <content type="html">&lt;pre&gt;
bacek@icering:~/src/parrot$ /usr/bin/perl t/harness t/benchmark/*.t
t/benchmark/benchmarks....ok     
All tests successful.
Files=1, Tests=36, 111 wallclock secs ( 0.01 usr  0.00 sys + 95.26 cusr  2.63 csys = 97.90 CPU)
Result: PASS

bacek@icering:~/src/parrot-svn$ /usr/bin/perl t/harness t/benchmark/*.t
t/benchmark/benchmarks....ok     
All tests successful.
Files=1, Tests=36, 561 wallclock secs ( 0.03 usr  0.01 sys + 501.54 cusr  3.09 csys = 504.67 CPU)
Result: PASS
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;First benchmark from my branch. Second - from trunk.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:bacek:346267</id>
    <link rel="alternate" type="text/html" href="http://bacek.livejournal.com/346267.html"/>
    <link rel="self" type="text/xml" href="http://bacek.livejournal.com/data/atom/?itemid=346267"/>
    <title>bacek @ 2009-05-19T08:55:00</title>
    <published>2009-05-18T22:56:15Z</published>
    <updated>2009-05-18T22:56:15Z</updated>
    <category term="parrot"/>
    <content type="html">1. 4 days of frustrations.&lt;br /&gt;2. &lt;a href="https://trac.parrot.org/parrot/changeset/38917"&gt;Single commit&lt;/a&gt;&lt;br /&gt;...&lt;br /&gt;4. Profit!</content>
  </entry>
</feed>
