<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-36106775</atom:id><lastBuildDate>Wed, 28 Feb 2024 10:13:00 +0000</lastBuildDate><category>firefox</category><category>greasemonkey</category><category>script</category><category>extension</category><category>gamil</category><category>gmail</category><category>google</category><category>translate</category><category>кризис</category><category>почта</category><title>crimsonpoint</title><description>мысли вслух</description><link>http://crimsonpoint.blogspot.com/</link><managingEditor>noreply@blogger.com (crimsonpoint)</managingEditor><generator>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-36106775.post-7038669752537572992</guid><pubDate>Tue, 24 Feb 2009 19:40:00 +0000</pubDate><atom:updated>2009-02-24T22:41:17.463+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gmail</category><title>Gmail лежит</title><description>Gmail лежал сегодня несколько часов. Если-бы это был какой-нибудь mail.ru, то говорить было-бы не о чем. Но Гугл старательно продвигает концепцию интернет-офиса, многие специалисты говорят, что будущее именно за такой схемой - компьютер/браузер/онлайн-сервисы. И вот представьте, что перевели вы свою фирму с MSO на Гугловские сервисы а он как сегодня возьми и вырубись в разгар рабочего дня на несколько часов! И хрен что сделаешь.</description><link>http://crimsonpoint.blogspot.com/2009/02/gmail.html</link><author>noreply@blogger.com (crimsonpoint)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-36106775.post-8023748265404349050</guid><pubDate>Thu, 05 Feb 2009 10:27:00 +0000</pubDate><atom:updated>2009-02-05T15:33:09.796+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">extension</category><category domain="http://www.blogger.com/atom/ns#">firefox</category><category domain="http://www.blogger.com/atom/ns#">google</category><category domain="http://www.blogger.com/atom/ns#">translate</category><title>Расширение фокса для Google Translate</title><description>Очередной полезный экстеншн для фаерфокса - Unofficial Google Translate Firefox extension.&lt;br&gt;
Поскольку сайты на аглийском читать мне приходится часто, проблема словаря/перводчика постоянно вылезала. В качестве словаря меня вполне устраивает бесплатный StarDict а в качестве переводчика Google Translate (до этого долго пользовался альтавистовским баблфишем). Но лазить на сайт гугла за переводом каждый раз не очень удобно. Стал искать расширение для фокса. Перепробовал несколько, критерии отбора - удобный и маленький. Встречайте победителя - &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/6938&quot;&gt;Unofficial Google Translate Firefox extension&lt;/a&gt;. Выделяете нужный текст и щелкаете на нем мышкой с нажатым альтом. Перевод появляется в новом слое (плохо, что слой не таскается мышкой). Направление перевода выбирается в меню по правой кнопте. Размер - 4,4к.
Нереально удобно.&lt;br&gt;
&lt;a href=&quot;http://dump.ru/file/1502285&quot;&gt;Здесь&lt;/a&gt; подправленная мною версия - убрал здоровенный футер, который автор (спасибо ему за работу) зачем-то вставлял в слой с переводом.</description><link>http://crimsonpoint.blogspot.com/2009/02/google-translate.html</link><author>noreply@blogger.com (crimsonpoint)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-36106775.post-5909939638495704264</guid><pubDate>Mon, 02 Feb 2009 11:47:00 +0000</pubDate><atom:updated>2009-02-02T14:51:20.376+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">firefox</category><category domain="http://www.blogger.com/atom/ns#">greasemonkey</category><category domain="http://www.blogger.com/atom/ns#">script</category><title>Продолжение</title><description>Собственно, второй скриптик от предыдущего поста, который добавит на страничке поиска русского гуггла ссылку &quot;Искать в Яндексе&quot;:&lt;br&gt;
&lt;code style=&quot;font-size: 11px;&quot;&gt;
// ==UserScript==&lt;br&gt;
// @name google.ru&lt;br&gt;
// @when Pages Match&lt;br&gt;
// @includes http://www.google.ru/search*&lt;br&gt;
// ==/UserScript==&lt;br&gt;
&lt;br&gt;
var link = findbutton(&#39;input&#39;,&#39;type&#39;,&#39;submit&#39;);&lt;br&gt;
var que = document.location.href;&lt;br&gt;
que = que.substr(que.indexOf(&#39;q=&#39;)+2);&lt;br&gt;
que = que.substr(0,que.indexOf(&#39;&amp;&#39;));&lt;br&gt;
insert(after(link), &#39;&amp;lt;a href=&quot;http://yandex.ru/yandsearch?text=&#39;+que+&#39;&quot;&amp;gt;Search in Yandex&amp;lt;/a&amp;gt;&amp;nbsp;&#39;);&lt;br&gt;
&lt;br&gt;
function findbutton(tag,attr,val)&lt;br&gt;
{&lt;br&gt;
  var b = 0;&lt;br&gt;
  var elements = document.getElementsByTagName(tag);&lt;br&gt;
  for (var i = 0; i &lt; elements.length; i++) {&lt;br&gt;
    if( elements.item(i).getAttribute(attr) == val ) { b = elements.item(i); break; }&lt;br&gt;
  }&lt;br&gt;
  return b;&lt;br&gt;
}&lt;br&gt;


&lt;/code&gt;</description><link>http://crimsonpoint.blogspot.com/2009/02/blog-post.html</link><author>noreply@blogger.com (crimsonpoint)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-36106775.post-7883596123983007182</guid><pubDate>Thu, 29 Jan 2009 14:04:00 +0000</pubDate><atom:updated>2009-02-02T14:51:11.654+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">firefox</category><category domain="http://www.blogger.com/atom/ns#">greasemonkey</category><category domain="http://www.blogger.com/atom/ns#">script</category><title>Два скрипта для Greasemonkey</title><description>Не знаю как вы, а я для поиска в Рунете использую два поисковика - Яндекс и Гугл. Начинаю, обычно, с яндекса, а если на первых страницах нужную информацию найти на удается, то переключаюсь на гугл. Это скриптик для Greasemonkey или Chikenfoot добавляет под строкой поиска Яндекса ссылку &quot;Search in Google&quot; с вашим запросом, просто жмешь ее и всё, не нужно открывать новый таб с гуглом, копировать запрос из яндекса в строку гугла, короче удобно:&lt;br&gt;
&lt;code style=&quot;font-size: 11px;&quot;&gt;
// ==UserScript==&lt;br&gt;
// @name yandex&lt;br&gt;
// @when Pages Match&lt;br&gt;
// @includes http://yandex.ru/yandsearch*&lt;br&gt;
// ==/UserScript==&lt;br&gt;
var link = findbutton(&#39;a&#39;,&#39;id&#39;,&#39;advanced&#39;);&lt;br&gt;
var que = document.location.href;&lt;br&gt;
que = que.substr(que.indexOf(&#39;text=&#39;)+5);&lt;br&gt;
insert(after(link), &#39;&amp;lt;a href=&quot;http://www.google.ru/search?q=&#39;+que+&#39;&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:en-US:official&amp;client=firefox-a&quot;&amp;gt;Search in Google&amp;lt;/a&amp;gt;&amp;nbsp;&#39;);&lt;br&gt;
&lt;br&gt;
function findbutton(tag,attr,val)&lt;br&gt;
{&lt;br&gt;
  var b = 0;&lt;br&gt;
  var elements = document.getElementsByTagName(tag);&lt;br&gt;
  for (var i = 0; i &lt; elements.length; i++) {&lt;br&gt;
    if( elements.item(i).getAttribute(attr) == val ) b = elements.item(i);&lt;br&gt;
  }&lt;br&gt;
  return b;&lt;br&gt;
}&lt;br&gt;
&lt;/code&gt;</description><link>http://crimsonpoint.blogspot.com/2009/01/greasemonkey.html</link><author>noreply@blogger.com (crimsonpoint)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-36106775.post-1504202571811144155</guid><pubDate>Mon, 19 Jan 2009 19:15:00 +0000</pubDate><atom:updated>2009-01-26T22:22:21.948+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">кризис</category><title>Вассерман о кризисе</title><description>Анатолий Вассерман о финансовом кризисе.&lt;br&gt;
Не люблю видеоблоги, информацию в виде текста воспринимаю гораздо легче и быстрее, тем более Вассерман говорит очень медленно, но послушать его все-равно стоит.&lt;br&gt;
&lt;OBJECT width=&quot;470&quot; height=&quot;353&quot;&gt;&lt;PARAM name=&quot;movie&quot; value=&quot;http://video.rutube.ru/d95337225b5984e0ae411ecf64bc6bf8&quot;&gt;&lt;/PARAM&gt;&lt;PARAM name=&quot;wmode&quot; value=&quot;window&quot;&gt;&lt;/PARAM&gt;&lt;PARAM name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/PARAM&gt;&lt;EMBED src=&quot;http://video.rutube.ru/d95337225b5984e0ae411ecf64bc6bf8&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;window&quot; width=&quot;470&quot; height=&quot;353&quot; allowFullScreen=&quot;true&quot; &gt;&lt;/EMBED&gt;&lt;/OBJECT&gt;</description><link>http://crimsonpoint.blogspot.com/2009/01/blog-post_19.html</link><author>noreply@blogger.com (crimsonpoint)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-36106775.post-5719832399315193144</guid><pubDate>Sun, 11 Jan 2009 13:22:00 +0000</pubDate><atom:updated>2009-01-26T17:36:08.566+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gamil</category><category domain="http://www.blogger.com/atom/ns#">почта</category><title>Корпоративная почта без настройки почтового сервера</title><description>Попросил тут меня знакомый настроить ему в оффисе корпоративную почту на его домене. Те кто с этим сталкивался знают, что это дело не на бутылку пива. Во-первых, нужен лицензионный MTA типа MS Exchange, MDaemon, Cerio Mail Server и т.п. который совсем не дешевый (ставить пиратку в конторе сейчас, значит рисковать). Во-вторых, нужно знать/уметь как этот софт настраивать (а вы знаете что такое SPF, gray listing, RBL, PTR lookup?) иначе или вас завалят спамом или вы будете терять письма. В принципе, софт может быть и бесплатным (Linux, BSD), но настраивать его еще сложнее, так что тоже вариант не простой.&lt;br&gt;
Что-же делать - спросите вы, использовать Гугл Апликейшн - отвечу я. К стати, тех, кто хочет получить интерфейс gmail для почтового ящика на собственном домене это тоже касается.&lt;br&gt;
Далее описываю по шагам как это делал я:
&lt;ul&gt;
&lt;li&gt;зарегистрироваться &lt;a href=&quot;http://www.google.com/a/help/intl/ru/admins/editions.html&quot;&gt;здесь&lt;/a&gt;
&lt;li&gt;подтвердить право на домен
&lt;li&gt;настроить для домена DNS-зоны MX, TXT и CNAME&lt;br&gt;
&lt;code style=&quot;font-size: 11px;&quot;&gt;
@  IN  MX 1  ASPMX.L.GOOGLE.COM.&lt;br&gt;
@   IN   MX 2   ALT1.ASPMX.L.GOOGLE.COM.&lt;br&gt;
@  IN  MX 2  ALT2.ASPMX.L.GOOGLE.COM.&lt;br&gt;
@  IN  MX 5  ASPMX2.GOOGLEMAIL.COM.&lt;br&gt;
@  IN  MX 5  ASPMX3.GOOGLEMAIL.COM.&lt;br&gt;
@  IN  MX 5  ASPMX4.GOOGLEMAIL.COM.&lt;br&gt;
@  IN  MX 5  ASPMX5.GOOGLEMAIL.COM.&lt;br&gt;
@  IN  TXT  &quot;v=spf1 a:87.170.100.35 include:aspmx.googlemail.com ~all&quot;&lt;br&gt;
m  IN  CNAME  ghs.google.com.&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
(&lt;b&gt;в параметрах spf указать IP компьютера где будет стоять MTA!!!&lt;/b&gt;)
&lt;li&gt;в админке &lt;i&gt;https://www.google.com/a/cpanel/vash-domen.ru/Dashboard&lt;/i&gt; поменять адрес web-почты на m.domen.com
&lt;li&gt;там-же создать аккаунты пользователей
&lt;li&gt;чтобы активировать аккаунты, придется для каждого аккаунта выполнить вход с веб-морды m.vash-domen.ru и затем ввести капчу
&lt;li&gt;установить MTA который умеет забирать почту из POP3 с SSL, например бесплатный &lt;a href=&quot;http://www.pmail.com&quot;&gt;Mercury/32&lt;/a&gt;
&lt;li&gt;создать в MTA аккаунты пользователей и настроить забирание почты с gmail. Для Mercury это делается так:&lt;br&gt;
&lt;code style=&quot;font-size: 11px;&quot;&gt;
POP3 Client -&gt; Add -&gt; &lt;br&gt;
POP3 Host: pop.gmail.com&lt;br&gt;
Username: user123@domain.com&lt;br&gt;
Local user: user123&lt;br&gt;
TCP/IP Port: 995, SSL encryption using direct connection&lt;br&gt;
&lt;/code&gt;
&lt;/ul&gt;</description><link>http://crimsonpoint.blogspot.com/2009/01/blog-post.html</link><author>noreply@blogger.com (crimsonpoint)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-36106775.post-8742360757024174623</guid><pubDate>Sat, 20 Dec 2008 11:47:00 +0000</pubDate><atom:updated>2009-01-26T15:36:17.247+03:00</atom:updated><title>Реальный кризис</title><description>Пока у нас про кризис только общие разговоры и передачи по зомбиящику, в европе, похоже, все гораздо хуже. Недавно приехала знакомая из Испании, где жила и работала последние три года. Рассказывает, что там работы нет, мелкие и средние фирмешки закрываются десятками ежедневно, на испанские курорты никто не ездит, недвижимость упала в цене уже на 30 процентов и всеравно ее не покупают. Вобщем, полный алес капут. Ждем у нас того-же, а пока закупаемся солью и спичками.</description><link>http://crimsonpoint.blogspot.com/2008/12/blog-post.html</link><author>noreply@blogger.com (crimsonpoint)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-36106775.post-6195756439205017143</guid><pubDate>Sat, 06 Dec 2008 09:42:00 +0000</pubDate><atom:updated>2009-01-26T14:47:35.362+03:00</atom:updated><title>Chikenfoot - убойный экстеншн для Firefox</title><description>Открыл для себя &lt;a href=&quot;http://groups.csail.mit.edu/uid/chickenfoot/&quot;&gt;Chikenfoot&lt;/a&gt;. Это замечательное расширение позволяет записывать и выполнять в фоксе скрипты, автоматизируя рутинные операции, которые приходится выполнять на некоторых сайтах. Ну и кроме того полная поддержка функционала Greasemonkey и совместимость с гризиманковскими скриптами.&lt;br&gt; 
Вот пример простейшего скрипта:&lt;br&gt;
&lt;code style=&quot;font-size: 11px;&quot;&gt;
wait(go(&quot;google.com&quot;));&lt;br&gt;
enter(&quot;crimsonpoint&quot;);&lt;br&gt;
click(&quot;google search&quot;);&lt;br&gt;
&lt;/code&gt;
Все элементарно: открываем в текущей вкладке гугл, вводим в поле поиска &quot;crimsonpoint&quot; и жмем на кнопку поиск! Чувствуете какой потенциал для автоматизации и хуманоэмуляции!&lt;br&gt; 
У меня знакомый играет в текстовую РПГ на одном из российских сайтов. Я ему за пол-часа c помощию chikenfoot бота написал, который автоматом ресурсы копает и скилы прокачивает.&lt;br&gt;
Для сеошников это вообще бомба - автоматизация регистрации, например, или добавления ссылок в каталоги/социалки и т.п.
Вобщем, маст хэв однозначный.</description><link>http://crimsonpoint.blogspot.com/2008/12/chikenfoot-firefox.html</link><author>noreply@blogger.com (crimsonpoint)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-36106775.post-116282382303778886</guid><pubDate>Thu, 06 Nov 2008 11:24:00 +0000</pubDate><atom:updated>2009-01-26T12:32:44.507+03:00</atom:updated><title>модуль ParallelUserAgent</title><description>Неожиданно столкнулся с такой проблемой - в perl под виндой не так просто распараллелить выполнение программы, во всяком случае у меня не получилось. Форки работают не стабильно, т.е. тестовые примеры, когда в форке ни чего не делается выполняются нормально, а стоит там, к примеру создать объект lwp и все сразу вылетает. А триды у меня вообще не заработали - мой активстейтовский перл v5.6.1 говорит что не поддерживает Thread.pm. Наверное можно как-то это победить, но хотелось все сделать побыстрее, без курения манов и я полез на &lt;a href=&quot;http://search.cpan.org/&quot;&gt;cpan&lt;/a&gt; и быстро нашел там то, что мне было нужно. Если ваша задача это получение данных из интернет то вам поможет &lt;a href=&quot;http://search.cpan.org/CPAN/authors/id/M/MA/MARCLANG/ParallelUserAgent-2.57.tar.gz&quot;&gt;ParallelUserAgent&lt;/a&gt;.
Там все просто, вот например:&lt;br&gt;
&lt;code style=&quot;font-size: 11px;&quot;&gt;
#!/usr/bin/perl&lt;br&gt;
use strict;&lt;br&gt;
use LWP::Parallel::UserAgent;&lt;br&gt;
&lt;br&gt;
my $DEBUG=1;&lt;br&gt;
my $ua = new LWP::Parallel::UserAgent;&lt;br&gt;
my $req;&lt;br&gt;
my $res;&lt;br&gt;
&lt;br&gt;
$ua-&gt;in_order (0); # handle requests in order of registration&lt;br&gt;
$ua-&gt;duplicates(0); # ignore duplicates&lt;br&gt;
$ua-&gt;timeout (30); # in seconds&lt;br&gt;
$ua-&gt;max_req (3); # max number of threads per victim site&lt;br&gt;
$ua-&gt;max_hosts (3); # number of threads !!!!!!!&lt;br&gt;
my %url = (&lt;br&gt;
&#39;http://crimsonpoint.blogspot.com/atom.xml&#39;=&gt;&#39;atom.xml&#39;,&lt;br&gt;
&#39;http://crimsonpoint.blogspot.com/rss.xml&#39;=&gt;&#39;rss2.xml&#39;,&lt;br&gt;
&#39;http://search.cpan.org/&#39;=&gt;&#39;cpan.html&#39;&lt;br&gt;
);&lt;br&gt;
&lt;br&gt;
$ua-&gt;initialize;&lt;br&gt;
foreach my $i (keys %url) {&lt;br&gt;
 $req = new HTTP::Request GET =&gt; $i;&lt;br&gt;
 print &quot;\tRegistering &#39;&quot;.$req-&gt;url.&quot;&#39;\n&quot; if $DEBUG;&lt;br&gt;
 if ( $res = $ua-&gt;register ($req) ) {&lt;br&gt;
  print $res-&gt;error_as_HTML;&lt;br&gt;
  last;&lt;br&gt;
 } &lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
my $entries = $ua-&gt;wait();&lt;br&gt;
foreach (keys %$entries) {&lt;br&gt;
 $res = $entries-&gt;{$_}-&gt;response;&lt;br&gt;
 my $url = $res-&gt;request-&gt;url;&lt;br&gt;
&lt;br&gt;
 print &quot;Answer for $url was \&quot;&quot;, $res-&gt;code,&quot;: &quot;, $res-&gt;message,&quot;\&quot;\n&quot; if $DEBUG;&lt;br&gt;
&lt;br&gt;
 if( $res-&gt;is_success ) {&lt;br&gt;
  open(OUT, &quot;&gt;&quot;.$url{$url}) or die;&lt;br&gt;
  print OUT $res-&gt;content;&lt;br&gt;
  close(OUT);&lt;br&gt;
 }&lt;br&gt;
}&lt;br&gt;
&lt;/code&gt;</description><link>http://crimsonpoint.blogspot.com/2006/11/paralleluseragent.html</link><author>noreply@blogger.com (crimsonpoint)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-36106775.post-116213967679856853</guid><pubDate>Wed, 29 Oct 2008 16:26:00 +0000</pubDate><atom:updated>2009-01-26T12:32:29.685+03:00</atom:updated><title>еще доки</title><description>Еще документация на русском по популярным перловским модулям: &lt;a href=&quot;http://www.myfilestash.com/userfiles/perl/LWP-spec.pdf&quot;&gt;LWP&lt;/a&gt; и &lt;a href=&quot;http://www.myfilestash.com/userfiles/perl/cgi-ref.pdf&quot;&gt;CGI&lt;/a&gt;. Спецификация на LWP поможет вам разобраться в коде прокси сервера из предыдущего поста.</description><link>http://crimsonpoint.blogspot.com/2006/10/blog-post_29.html</link><author>noreply@blogger.com (crimsonpoint)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-36106775.post-116194035572489449</guid><pubDate>Mon, 27 Oct 2008 08:25:00 +0000</pubDate><atom:updated>2009-01-26T12:32:18.077+03:00</atom:updated><title>экономим трафик - прокси на perl</title><description>Для тех, кто выходит в интернет через gprs или просто живет не в Москве или Питере и не имеет дешевой безлимитки, короче для всех, кто вынужден экономить трафик.&lt;br&gt;
До вчерашнего дня я выходил в интернет через связку HandyCache + CProxy. HandyCache - это кэширующий прокси, который к тому-же можно настроить на резку банеров или другого нежелательного контента, мне он экономит около 25 процентов трафика. CProxy - это программа-клиент чешского бесплатного сервиса позволяющего уменьшить трафик за счет сжатия (если вам это ни о чем не говорит, сходите &lt;a href=&quot;http://www.sozhmi.net.ru/&quot;&gt;сюда&lt;/a&gt;). CProxy эконимит мне еще около 70 процентов от того, что пропускает HandyCache.&lt;br&gt; Беда только в том, что бесплатные сервисы типа CProxy очень тормозные. Лучший вариант - поднять свой собственный жмущий прокси, например &lt;a href=&quot;http://ziproxy.sourceforge.net/&quot;&gt;ziproxy&lt;/a&gt;. Но поскольку я искал быстрое решение и заморачиваться с компиляцией ziproxy мне не хотелось, я решил поискать тоже-самое на perl. Долго искать не пришлось, на первой-же позиции в гугле оказалось &lt;a href=&quot;http://www.google.ru/search?hs=3H2&amp;hl=ru&amp;client=firefox-a&amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;q=perl+proxy+server+gzip&amp;btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&amp;lr=&quot;&gt;то что надо&lt;/a&gt;. Правда, сразу у меня скрипт вылетал с ошибкой, но после небольшой доработки все заработало. Теперь наслаждаюсь скоростью по сравнению с CProxy, даже на тормозном firstvds.ru.&lt;br&gt;
Нужно будет еще установить степень сжатия на максимальную и сделать возможным доступ только с определенного списка IP.&lt;br&gt;
&lt;code style=&quot;font-size: 11px;&quot;&gt;
#!/usr/bin/perl -Tw&lt;br&gt;
use strict;&lt;br&gt;
$ENV{PATH} = join &quot;:&quot;, qw(/usr/ucb /bin /usr/bin);&lt;br&gt;
$|++;&lt;br&gt;
&lt;br&gt;
my $VERSION_ID = q$Id: proxy,v 1.21 1998/xx/xx xx:xx:xx merlyn Exp $;&lt;br&gt;
my $VERSION = (qw$Revision: 1.21 $ )[-1];&lt;br&gt;
&lt;br&gt;
## Copyright (c) 1996, 1998 by Randal L. Schwartz&lt;br&gt;
## This program is free software; you can redistribute it&lt;br&gt;
## and/or modify it under the same terms as Perl itself.&lt;br&gt;
&lt;br&gt;
### debug management&lt;br&gt;
sub prefix {&lt;br&gt;
  my $now = localtime;&lt;br&gt;
&lt;br&gt;
  join &quot;&quot;, map { &quot;[$now] [${$}] $_\n&quot; } split /\n/, join &quot;&quot;, @_;&lt;br&gt;
}&lt;br&gt;
$SIG{__WARN__} = sub { warn prefix @_ };&lt;br&gt;
$SIG{__DIE__} = sub { die prefix @_ };&lt;br&gt;
&amp;setup_signals();&lt;br&gt;
&lt;br&gt;
### logging flags&lt;br&gt;
my $LOG_PROC = 0;               # begin/end of processes&lt;br&gt;
my $LOG_TRAN = 0;               # begin/end of each transaction&lt;br&gt;
my $LOG_REQ_HEAD = 0;           # detailed header of each request&lt;br&gt;
my $LOG_REQ_BODY = 0;           # header and body of each request&lt;br&gt;
my $LOG_RES_HEAD = 0;           # detailed header of each response&lt;br&gt;
my $LOG_RES_BODY = 0;           # header and body of each response&lt;br&gt;
&lt;br&gt;
### configuration&lt;br&gt;
my $HOST = &#39;localhost&#39;;&lt;br&gt;
my $PORT = 8080;                # pick next available user-port&lt;br&gt;
my $SLAVE_COUNT = 8;            # how many slaves to fork&lt;br&gt;
my $MAX_PER_SLAVE = 20;         # how many transactions per slave&lt;br&gt;
&lt;br&gt;
### main&lt;br&gt;
warn(&quot;running version &quot;, $VERSION);&lt;br&gt;
               &lt;br&gt;
&amp;main();&lt;br&gt;
exit 0;&lt;br&gt;
&lt;br&gt;
### subs&lt;br&gt;
sub main {                      # return void&lt;br&gt;
  use HTTP::Daemon;&lt;br&gt;
  my %kids;&lt;br&gt;
&lt;br&gt;
  my $master = HTTP::Daemon-&gt;new(LocalPort =&gt; $PORT, LocalAddr =&gt; $HOST)&lt;br&gt;
      or die &quot;Cannot create master: $!&quot;;&lt;br&gt;
  warn(&quot;master is &quot;, $master-&gt;url);&lt;br&gt;
  ## fork the right number of children&lt;br&gt;
  for (1..$SLAVE_COUNT) {&lt;br&gt;
    $kids{&amp;fork_a_slave($master)} = &quot;slave&quot;;&lt;br&gt;
  }&lt;br&gt;
  {                             # forever:&lt;br&gt;
    my $pid = wait;&lt;br&gt;
    my $was = delete ($kids{$pid}) || &quot;?unknown?&quot;;&lt;br&gt;
    warn(&quot;child $pid ($was) terminated status $?&quot;) if $LOG_PROC;&lt;br&gt;
    if ($was eq &quot;slave&quot;) {      # oops, lost a slave&lt;br&gt;
      sleep 1;                  # don&#39;t replace it right away (avoid thrash)&lt;br&gt;
      $kids{&amp;fork_a_slave($master)} = &quot;slave&quot;;&lt;br&gt;
    }&lt;br&gt;
  } continue { redo };          # semicolon for cperl-mode&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
sub setup_signals {             # return void&lt;br&gt;
&lt;br&gt;
  setpgrp;                      # I *am* the leader&lt;br&gt;
  $SIG{HUP} = $SIG{INT} = $SIG{TERM} = sub {&lt;br&gt;
    my $sig = shift;&lt;br&gt;
    $SIG{$sig} = &#39;IGNORE&#39;;&lt;br&gt;
    kill $sig, 0;               # death to all-comers&lt;br&gt;
    die &quot;killed by $sig&quot;;&lt;br&gt;
  };&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
sub fork_a_slave {              # return int (pid)&lt;br&gt;
  my $master = shift;           # HTTP::Daemon&lt;br&gt;
&lt;br&gt;
  my $pid;&lt;br&gt;
  defined ($pid = fork) or die &quot;Cannot fork: $!&quot;;&lt;br&gt;
  &amp;child_does($master) unless $pid;&lt;br&gt;
  $pid;&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
sub child_does {                # return void&lt;br&gt;
  my $master = shift;           # HTTP::Daemon&lt;br&gt;
&lt;br&gt;
  my $did = 0;                  # processed count&lt;br&gt;
&lt;br&gt;
  warn(&quot;child started&quot;) if $LOG_PROC;&lt;br&gt;
  {&lt;br&gt;
    flock($master, 2);          # LOCK_EX&lt;br&gt;
    warn(&quot;child has lock&quot;) if $LOG_TRAN;&lt;br&gt;
    my $slave = $master-&gt;accept or die &quot;accept: $!&quot;;&lt;br&gt;
    warn(&quot;child releasing lock&quot;) if $LOG_TRAN;&lt;br&gt;
    flock($master, 8);          # LOCK_UN&lt;br&gt;
    my @start_times = (times, time);&lt;br&gt;
    $slave-&gt;autoflush(1);&lt;br&gt;
    warn(&quot;connect from &quot;, $slave-&gt;peerhost) if $LOG_TRAN;&lt;br&gt;
    &amp;handle_one_connection($slave); # closes $slave at right time&lt;br&gt;
    if ($LOG_TRAN) {&lt;br&gt;
      my @finish_times = (times, time);&lt;br&gt;
      for (@finish_times) {&lt;br&gt;
        $_ -= shift @start_times; # crude, but effective&lt;br&gt;
      }&lt;br&gt;
      warn(sprintf &quot;times: %.2f %.2f %.2f %.2f %d\n&quot;, @finish_times);&lt;br&gt;
    }&lt;br&gt;
&lt;br&gt;
  } continue { redo if ++$did &lt; $MAX_PER_SLAVE };&lt;br&gt;
  warn(&quot;child terminating&quot;) if $LOG_PROC;&lt;br&gt;
  exit 0;&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
sub handle_one_connection {     # return void&lt;br&gt;
  use HTTP::Request;&lt;br&gt;
  my $handle = shift;           # HTTP::Daemon::ClientConn&lt;br&gt;
&lt;br&gt;
  my $request = $handle-&gt;get_request;&lt;br&gt;
  defined($request) or die &quot;bad request&quot;; # XXX&lt;br&gt;
&lt;br&gt;
  my $response = &amp;fetch_request($request);&lt;br&gt;
  warn(&quot;response: &lt;&lt;&lt;\n&quot;, $response-&gt;headers_as_string, &quot;\n&gt;&gt;&gt;&quot;)&lt;br&gt;
    if $LOG_RES_HEAD and not $LOG_RES_BODY;&lt;br&gt;
  warn(&quot;response: &lt;&lt;&lt;\n&quot;, $response-&gt;as_string, &quot;\n&gt;&gt;&gt;&quot;)&lt;br&gt;
    if $LOG_RES_BODY;&lt;br&gt;
  $handle-&gt;send_response($response);&lt;br&gt;
  close $handle;&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
sub fetch_request {             # return HTTP::Response&lt;br&gt;
  use HTTP::Response;&lt;br&gt;
  my $request = shift;          # HTTP::Request&lt;br&gt;
&lt;br&gt;
  ## XXXX needs policy here&lt;br&gt;
  my $url = $request-&gt;url;&lt;br&gt;
  warn(&quot;processing url is $url&quot;) if $LOG_TRAN;&lt;br&gt;
  &amp;fetch_validated_request($request);&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
BEGIN {                         # local static block&lt;br&gt;
  my $agent;                    # LWP::UserAgent&lt;br&gt;
&lt;br&gt;
  sub fetch_validated_request { # return HTTP::Response&lt;br&gt;
    my $request = shift;                # HTTP::Request&lt;br&gt;
&lt;br&gt;
    $agent ||= do {&lt;br&gt;
      use LWP::UserAgent;&lt;br&gt;
      my $agent = LWP::UserAgent-&gt;new;&lt;br&gt;
      $agent-&gt;agent(&quot;Mozilla/5.0&quot;);&lt;br&gt;
      $agent-&gt;env_proxy;&lt;br&gt;
      $agent;&lt;br&gt;
    };&lt;br&gt;
&lt;br&gt;
 $request-&gt;header(&#39;accept-encoding&#39;=&gt;&#39;gzip,deflate&#39;);&lt;br&gt;
    &lt;br&gt;
    warn(&quot;fetch: &lt;&lt;&lt;\n&quot;, $request-&gt;headers_as_string, &quot;\n&gt;&gt;&gt;&quot;)&lt;br&gt;
      if $LOG_REQ_HEAD and not $LOG_REQ_BODY;&lt;br&gt;
    warn(&quot;fetch: &lt;&lt;&lt;\n&quot;, $request-&gt;as_string, &quot;\n&gt;&gt;&gt;&quot;)&lt;br&gt;
      if $LOG_REQ_BODY;&lt;br&gt;
 &lt;br&gt;
    my $response = $agent-&gt;simple_request($request);&lt;br&gt;
&lt;br&gt;
    my $content = $response-&gt;content;&lt;br&gt;
    if ($response-&gt;is_success and&lt;br&gt;
        $response-&gt;content_type =~ /(text|plain|html|javascript)/ and&lt;br&gt;
        not ($response-&gt;content_encoding || &quot;&quot;) =~ /\S/ and&lt;br&gt;
        length($content)&gt;100 and&lt;br&gt;
        ($request-&gt;header(&quot;accept-encoding&quot;) || &quot;&quot;) =~ /gzip/) {&lt;br&gt;
      require Compress::Zlib;&lt;br&gt;
      my $new_content = Compress::Zlib::memGzip($content);&lt;br&gt;
      if (defined $new_content) {&lt;br&gt;
        $response-&gt;content($new_content);&lt;br&gt;
        $response-&gt;content_length(length $new_content);&lt;br&gt;
        $response-&gt;content_encoding(&quot;gzip&quot;);&lt;br&gt;
        warn(&quot;gzipping content from &quot;.&lt;br&gt;
             (length $content).&quot; to &quot;.&lt;br&gt;
             (length $new_content)) if $LOG_TRAN;&lt;br&gt;
      }&lt;br&gt;
    }&lt;br&gt;
&lt;br&gt;
    $response;&lt;br&gt;
  }&lt;br&gt;
}&lt;br&gt;
&lt;/code&gt;</description><link>http://crimsonpoint.blogspot.com/2006/10/perl_27.html</link><author>noreply@blogger.com (crimsonpoint)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-36106775.post-116179885808370169</guid><pubDate>Sat, 25 Oct 2008 17:18:00 +0000</pubDate><atom:updated>2009-01-26T12:36:04.381+03:00</atom:updated><title>появился релиз FireFox 3.0</title><description>На сайте мозиллы официально представлен релиз второй версии mozilla firefox. Но я пожалуй подожду версию 3.1, заодно пока и расширения все под новую версию переделают.&lt;br&gt;
А вот, проверенный временем список расширений, которые у меня установлены:
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Tab Mix Plus&lt;/b&gt; - ну это все знают - навороченное управление табами и сохранение сессий. Без него Фоксом пользоваться не очень удобно.
&lt;li&gt;&lt;b&gt;ImgLikeOpera&lt;/b&gt; - расширенное управление загрузкой картинок, тот кто считает трафик - must have.
&lt;li&gt;&lt;b&gt;CookieCuller&lt;/b&gt; - очень полезное расширение, позволяет ставить блок на нужные вам куки и защищать их от удаления. Таким образом почистив в очередной раз кукисы вам не нужно будет рыться в почтовых ящиках и  искать пароли ко всем форумам, где вы были зарегистрированы.
&lt;li&gt;&lt;b&gt;Super DrugAndGo&lt;/b&gt; - позволяет посредством grug-and-drop выделенного текста открывать урлы не оформленные ссылками или выполнять поиск.
&lt;li&gt;&lt;b&gt;Paste Email&lt;/b&gt; - простой помошник в заполнения форм - щелкаешь в поле формы правой кнопкой мыши и выбираешь из меню то что заранее туда вписал. Удобно для хранения, паролей, емайлов и т.п.
&lt;li&gt;&lt;b&gt;Add Bookmark Here&lt;/b&gt; - с ним гораздо удобнее добавлять закладки сразу в нужную папку.
&lt;li&gt;&lt;b&gt;Bookmark Sync and Sort&lt;/b&gt; - позволяет обмениваться букмарками через ftp. С этим расширением у меня всегда одинаковые закладки на работе и дома. 
&lt;/ul&gt;</description><link>http://crimsonpoint.blogspot.com/2006/10/firefox-20.html</link><author>noreply@blogger.com (crimsonpoint)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-36106775.post-116161177434456512</guid><pubDate>Thu, 23 Oct 2008 12:13:00 +0000</pubDate><atom:updated>2009-01-26T12:33:51.793+03:00</atom:updated><title>регулярные выражения в perl</title><description>Доки по regexp на русском: хорошая статья по &lt;a href=&quot;http://www.myfilestash.com/userfiles/perl/regexp.pdf&quot;&gt;регулярным выражениям в perl&lt;/a&gt; с примерами, вторая то-же про &lt;a href=&quot;http://www.myfilestash.com/userfiles/perl/regexp2-ref.pdf&quot;&gt;регэкспы&lt;/a&gt; покороче, как справочник. Все в формате pdf. 
Для тех, кто не в курсе - в perl всего штук пять функций для работы со строками, между тем это один из самых мощных языков по обработке текста. А все потому, что встроены регулярные выражения. Не просто доступны через библиотечные функции, а встроенны и доведены до совершенства. Пример красоты и мощи - узнал недавно про модификатор &quot;e&quot;, который позволяет использовать в качестве подстановки исполняемый код. Вот как можно в тексте заменить каждое третье слово left на right:&lt;br&gt;
&lt;code style=&quot;font-size: 11px;&quot;&gt;
$num = 0;&lt;br&gt;
$text =~ s/(left).*?/if((++$num%3)== 0){&#39;right&#39;}else{$1}/igex;&lt;br&gt;
&lt;/code&gt;
Вот за это я люблю perl.</description><link>http://crimsonpoint.blogspot.com/2006/10/perl.html</link><author>noreply@blogger.com (crimsonpoint)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-36106775.post-116137910957481046</guid><pubDate>Mon, 20 Oct 2008 20:46:00 +0000</pubDate><atom:updated>2009-01-26T12:33:30.702+03:00</atom:updated><title>Функциональное программирование</title><description>Попалась тут переводная статья, объясняющая принципы функционального программирования на примере Питона. Всем кто занимается программированием профессионально и нет, и не в курсе что такое FP советую зачитать - &lt;a href=&quot;http://www.iso.ru/journal/articles/75.html&quot;&gt;Функциональное программирование на языке Python&lt;/a&gt;. Статья написана доступно и я думаю будет полезна даже тем кто Питон не использует, как я, например. Не согласен только с двумя вещами:
&lt;ol&gt;
&lt;li&gt;Автор обидел мой любимый perl, записав его в компанию языков лишенных возможности писать в стиле FP. На самом деле в perl есть все что он описывает в статье, а в рекомендациях по хорошему стилю программирования на perl всячески рекомендуют этим пользоваться, там где уместно. Большинство так и делает - 99 процентов программеров на perl напишут:&lt;br&gt;
&lt;code style=&quot;font-size: 11px;&quot;&gt;
open(IN,&quot;&amp;lt;filename&quot;) or die;&lt;/code&gt;&lt;br&gt;
вместо&lt;br&gt;
&lt;code style=&quot;font-size: 11px;&quot;&gt;
unless(open(IN,&quot;&amp;lt;filename&quot;)) { 
&amp;nbsp;die;
}
&lt;/code&gt;
&lt;li&gt;Помоему, FP использовать нужно только там, где это делает код короче и читабельней. Злоупотреблять им явно не стоит. А то что функциональный подход стоит использовать для уменьшения количества ошибок в программе, это просто бред. Сравните примеры из статьи.&lt;br&gt;
императивный код:&lt;br&gt;
&lt;code style=&quot;font-size: 11px;&quot;&gt;
xs = (1,2,3,4)&lt;br&gt;
ys = (10,15,3,22)&lt;br&gt;
bigmuls = []&lt;br&gt;
#...прочий код...&lt;br&gt;
for x in xs:&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for y in ys:&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #...прочий код...&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if x*y &amp;gt; 25:&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bigmuls.append((x,y))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #...прочий
код...&lt;br&gt;
#...прочий код...&lt;br&gt;
print bigmuls
&lt;/code&gt;&lt;br&gt;
функциональный код:&lt;br&gt;
&lt;code style=&quot;font-size: 11px;&quot;&gt;
bigmuls = lambda xs,ys: filter(lambda (x,y):x*y &gt; 25, combine(xs,ys))&lt;br&gt;
combine = lambda xs,ys: map(None, xs*len(ys), dupelms(ys,len(xs)))&lt;br&gt;
dupelms = lambda lst,n: reduce(lambda s,t:s+t, map(lambda l,n=n: [l]*n, lst))&lt;br&gt;
print bigmuls((1,2,3,4),(10,15,3,22))
&lt;/code&gt;&lt;br&gt;
Просто очевидно какой вариант читабельней, проще пишется и проще отлаживается.
&lt;/ol&gt;</description><link>http://crimsonpoint.blogspot.com/2006/10/blog-post_21.html</link><author>noreply@blogger.com (crimsonpoint)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-36106775.post-116124524160473035</guid><pubDate>Sun, 19 Oct 2008 07:27:00 +0000</pubDate><atom:updated>2009-01-26T12:33:16.195+03:00</atom:updated><title>купил ноутбук</title><description>Всем кто задумался о покупке дешевого ноутбука для серфинга, печати и программирования (не gamedev) рекомендую - HP nx6310 модель EY503ES. Характеристики такие - CPU Intel CM 410 (1,46GHz, 1MB L2 cash, 533MHz FSB), 15.0 XGA (1024x768), RAM 256MB DDR2 533MHz, HDD 60GB 5400rpm, DVD+/-RW, 56K Modem, 802.11b/g, OS Free DOS. Цена в Москве дешевле 700$. 
Поясняю - новый целик, пишущий DVD, WiFi, приличная матрица и все это дешевле 20 тысяч. Работать за ним очень приятно - не шумит, не греется, раскладка клавиатуры приближена к десктопной, ни где не скрипит, ни чего не болтается. Кроме того это все-таки HP, это вам не Acer и тем более не Rover и iRu. Минус - винды нет, нужно ставить самому, причем оказалось там есть кое-какие тонкости; диска с драйверами тоже нет. Пришлось немножко &lt;a href=&quot;http://www.google.com/search?q=%D0%B4%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80%D0%B0+EY503ES+site%3Aforum.ixbt.com&amp;start=0&amp;ie=utf-8&amp;oe=utf-8&amp;client=firefox-a&amp;rls=org.mozilla:en-US:official&quot;&gt;погуглить&lt;/a&gt;, и за вечер я все настроил.&lt;br&gt;
ИМХО лучший по соотношению цена/качество бюджетный ноутбук. Вообще-то покупал я его жене, но похоже работать за ним буду сам :)</description><link>http://crimsonpoint.blogspot.com/2006/10/blog-post_19.html</link><author>noreply@blogger.com (crimsonpoint)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-36106775.post-116100590999216970</guid><pubDate>Thu, 16 Oct 2008 13:05:00 +0000</pubDate><atom:updated>2009-01-26T12:32:02.564+03:00</atom:updated><title>пятница, тринадцатое</title><description>В прошлую пятницу, тринадцатого числа случилась неприятность. Сам не знаю зачем, я выгрузил фаервол (Outpost 2.0), чего никогда не делаю, потом про это благополучно забыл и вышел в интернет. Через полчаса я заметил что все как-то странно подтормаживает, и на модеме не гаснет лампочка SEND... Короче, за пол-часа в интернете я нацеплял штук 10 троянов и фиг его знает чего они успели за это время у меня стянуть. Вот тут я порадовался, что месяца два назад поставил TrueCrypt и перенес на криптованный диск базу с паролями от почтовых ящиков, аськи, вебмани, хостинга и т.п. А вот Касперский разочаровал - с только-что обновленными базами и высоким уровнем безопасности всех троянов он отловить не смог, остались два, запустившиеся как виндовые сервисы - дочищал за ним руками.&lt;br&gt;
Выводы:
&lt;ol&gt;
&lt;li&gt;Agnitum Outpost Firewall - вполне надежная стенка, хотя во всех обзорах по надежности стоит где-то в середине списка. 
&lt;li&gt;Антивирус Касперского нужно или менять на что-то другое (многие хвалят NOD32), или ставить кроме KAV еще что-то типа Лавасофт Адваре.
&lt;li&gt;Как бы хорошо ваш комп не был защищен, всю приватную информацию нужно &lt;span style=&quot;font-weight:bold;&quot;&gt;обязательно&lt;/span&gt; держать в криптованном виде. Здесь лучшее и к тому-же бесплантое решение - &lt;a href=&quot;http://truecrypt.sourceforge.net&quot;&gt;TrueCrypt&lt;/a&gt;.
&lt;li&gt;в пятницу тринадцатого не пользуйтесь компьютером :)
&lt;/ol&gt;</description><link>http://crimsonpoint.blogspot.com/2006/10/blog-post.html</link><author>noreply@blogger.com (crimsonpoint)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-36106775.post-116099126360337791</guid><pubDate>Thu, 16 Oct 2008 09:32:00 +0000</pubDate><atom:updated>2009-01-26T12:31:32.910+03:00</atom:updated><title>test</title><description>&lt;b&gt;test&lt;/b&gt;</description><link>http://crimsonpoint.blogspot.com/2006/10/test.html</link><author>noreply@blogger.com (crimsonpoint)</author><thr:total>0</thr:total></item></channel></rss>