<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Андрей Костенко &#187; Web2</title>
	<atom:link href="http://kostenko.name/category/web2/feed/" rel="self" type="application/rss+xml" />
	<link>http://kostenko.name</link>
	<description>&#38;gugu;</description>
	<lastBuildDate>Wed, 09 May 2012 13:11:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>DNS для самых маленьких</title>
		<link>http://kostenko.name/2010/12/21/dns-first-steps/</link>
		<comments>http://kostenko.name/2010/12/21/dns-first-steps/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 22:27:15 +0000</pubDate>
		<dc:creator>Андрей Костенко</dc:creator>
				<category><![CDATA[Web2]]></category>

		<guid isPermaLink="false">http://kostenko.name/?p=1041</guid>
		<description><![CDATA[В силу некоторых обстоятельств мне приходится часто работать с DNS. Документации (кроме манов по bind и rfc) я практически не нашёл, разбирался ручками. Поэтому я сначала расскажу, как всё работает. Кому-то это будет интересно, а кто-то меня поправит. Так, у нас есть доменное имя. При его регистрации у нас попросят указать два адреса DNS-сервера, которые <a href='http://kostenko.name/2010/12/21/dns-first-steps/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>В силу некоторых обстоятельств мне приходится часто работать с DNS.</p>
<p>Документации (кроме манов по bind и rfc) я практически не нашёл, разбирался ручками. Поэтому я сначала расскажу, как всё работает. Кому-то это будет интересно, а кто-то меня поправит.</p>
<p>Так, у нас есть доменное имя. При его регистрации у нас попросят указать два адреса DNS-сервера, которые будут отдавать всю информацию о домене. Если вы регистрируете домен example.com, то у вас есть два варианта &ndash; дать адрес nameserverов в другом домене, который уже работает (например, ns1.kostenko.name и ns2.kostenko.name) и настроить их. Во втором варианте &ndash; при вводе ns1.example.com и ns2.example.com вам нужно будет указать их IP.</p>
<p>Теперь основное:</p>
<p>Для вашего домена вам потребуется указать записи SOA и A (или AAAA для IPv6). SOA &#8211; start of authority содержит базовую информацию о доменном имени. A &#8211; IPv4 адрес</p>

<div class="wp_syntax"><div class="code"><pre class="bind" style="font-family:monospace;">example.com.    SOA ns1.example.com. ns2.example.com. your_email.google.com.
example.com.    A   89.115.99.125
ns1             A   89.115.99.125
ns2             A   89.115.99.125</pre></div></div>

<p>Домен должен заработать. Обратите внимание на точки в конце. Они означают в bind, что это корневой домен. Домен без точки в конце &#8211; поддомен нашего example.com. @ &#8211; это alias для example.com.</p>
<p>Теперь о том, что вы можете сделать.<br />
<span id="more-1041"></span></p>
<h2>Почта</h2>
<p>Если вы хотите получать почту на этот домен, а почтовый сервер находится на другом сервере, то мы прописываем такие<br />
строчки:</p>
<pre>
example.com.    MX  aspmx.google.com.   10 ;(for example)
example.com.    MX  aspmx2.google.com.  20 ; 20 - это приоритет, по порядку приоритета SMTP-сервера будут пытаться
отправлять сообщения.
</pre>
<h2>Поддомены</h2>
<p>Опять ситуация. У вас есть домен greate.st, на котором вы рассказываете о том, какой вы охуенный. Вы хотите создать<br />
домен wikileaks.greate.st, на котором захостить зеркало пока ещё живого Wikileaks. Если это у вас тот же IP, то<br />
нужно создать запись</p>
<pre>
wikileaks    CNAME   greate.st.   ;wikileaks - это alias на greate.st
</pre>
<p>Если другой IP, то пишем</p>
<pre>
wikileaks    A       4.82.18.192
</pre>
<p>Если хотите отправить все поддомены куда-то, то для этого вместо имени поддомена пишем *</p>
<pre>
*            CNAME      buynow.only.for.4.99.dollars.greate.st.
*            A          127.0.0.1; так тоже можно))
</pre>
<h2>Всякая хуита</h2>
<p>Много для чего полезно использовать DNS (SPF, подписывание писем, XMPP&#8230;). Можно даже войну и мир там в транслите<br />
хранить. Авторам RFC было впадлу переписывать RFC под<br />
каждого, поэтому есть ещё TXT записи, которые используются под всякую фигню.</p>
<p>90% DNS серверов используют ISC Bind. Он старый, а значит &#8211; надёжный и стабильный. Но насколько же он уёбищен&#8230;<br />
Документации нормальной нет. Та, что есть &#8211; неправильна. Статическая линковка, которая выебала мне весь мозг при<br />
подключении DLZ. Поэтому я хочу рассказать о DNS-сервере, с которым работать куда приятней.</p>
<h2>PowerDNS</h2>
<pre>apt-get install pdns-server pdns-backend-bind pdns-backend-pgsql</pre>
<p>Чем он отличается от bind? Он младше моего дедушки. И это главное.</p>
<p>Из второстепенных &#8211; у него есть веб-интерфейс статистики, динамическая линковка, которая позволяет вам в binary-based<br />
дистрибутивах поставить поддержку postgreSQL/MySQL без перекомпиляции, более приятный интерфейс.</p>
<p>Свой велосипед в powerdns изобретать не стали, поэтому вы можете переехать с bind на powerdns без правки конфигов. Если<br />
у вас всё уже лежит в bind. Если хотите положить настройки в базу и дать доступ к ним из админки &#8211; пожалуйста. </p>
<pre>zone2sql /etc/bind/named.conf | mysql</pre>
<p>Скрипт для создания базы записей выглядит так:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> domains <span style="color: #66cc66;">&#40;</span>
 id		 SERIAL <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">,</span>
 name		 <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
 master		 <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">128</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
 last_check	 <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
 <span style="color: #993333; font-weight: bold;">TYPE</span>		 <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">6</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
 notified_serial <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span> 
 account         <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">40</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #993333; font-weight: bold;">NULL</span>
<span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">UNIQUE</span> <span style="color: #993333; font-weight: bold;">INDEX</span> name_index <span style="color: #993333; font-weight: bold;">ON</span> domains<span style="color: #66cc66;">&#40;</span>name<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> records <span style="color: #66cc66;">&#40;</span>
        id              SERIAL <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">,</span>
        domain_id       <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
        name            <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
        <span style="color: #993333; font-weight: bold;">TYPE</span>            <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">6</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
        content         <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
        ttl             <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
        prio            <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
        change_date     <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span> 
        <span style="color: #993333; font-weight: bold;">CONSTRAINT</span> domain_exists 
        <span style="color: #993333; font-weight: bold;">FOREIGN</span> <span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">&#40;</span>domain_id<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">REFERENCES</span> domains<span style="color: #66cc66;">&#40;</span>id<span style="color: #66cc66;">&#41;</span>
        <span style="color: #993333; font-weight: bold;">ON</span> <span style="color: #993333; font-weight: bold;">DELETE</span> CASCADE
<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">INDEX</span> rec_name_index <span style="color: #993333; font-weight: bold;">ON</span> records<span style="color: #66cc66;">&#40;</span>name<span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">INDEX</span> nametype_index <span style="color: #993333; font-weight: bold;">ON</span> records<span style="color: #66cc66;">&#40;</span>name<span style="color: #66cc66;">,</span><span style="color: #993333; font-weight: bold;">TYPE</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">INDEX</span> domain_id <span style="color: #993333; font-weight: bold;">ON</span> records<span style="color: #66cc66;">&#40;</span>domain_id<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> supermasters <span style="color: #66cc66;">&#40;</span>
	  ip <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">25</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span> 
	  nameserver <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span> 
	  account <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">40</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #993333; font-weight: bold;">NULL</span>
<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #993333; font-weight: bold;">GRANT</span> <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">ON</span> supermasters <span style="color: #993333; font-weight: bold;">TO</span> pdns;
<span style="color: #993333; font-weight: bold;">GRANT</span> <span style="color: #993333; font-weight: bold;">ALL</span> <span style="color: #993333; font-weight: bold;">ON</span> domains <span style="color: #993333; font-weight: bold;">TO</span> pdns;
<span style="color: #993333; font-weight: bold;">GRANT</span> <span style="color: #993333; font-weight: bold;">ALL</span> <span style="color: #993333; font-weight: bold;">ON</span> domains_id_seq <span style="color: #993333; font-weight: bold;">TO</span> pdns;
<span style="color: #993333; font-weight: bold;">GRANT</span> <span style="color: #993333; font-weight: bold;">ALL</span> <span style="color: #993333; font-weight: bold;">ON</span> records <span style="color: #993333; font-weight: bold;">TO</span> pdns;
<span style="color: #993333; font-weight: bold;">GRANT</span> <span style="color: #993333; font-weight: bold;">ALL</span> <span style="color: #993333; font-weight: bold;">ON</span> records_id_seq <span style="color: #993333; font-weight: bold;">TO</span> pdns;</pre></div></div>

<h2>Клиентский софт</h2>
<p>Ну настроили мы всё. А как проверить? Про стандартную nslookup знают все. Показывается &#8220;резолвится/не резолвится&#8221;.</p>
<p>Для более детальной информации есть команда dig из bind-utils. Попробуйте, например &#8220;dig mx rambler.ru&#8221;</p>
<p>Ну а для поиска косяков есть <a href="http://intodns.com/">IntoDNS</a>.<br />
Вот так выглядит обзор моего <a href="http://www.intodns.com/greate.st">greate.st</a>, а так &ndash;  <a href="http://www.intodns.com/rambler.ru">нормальный сайт</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://kostenko.name/2010/12/21/dns-first-steps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ускоряем свой HTTP-сервер</title>
		<link>http://kostenko.name/2009/11/05/accept-filters/</link>
		<comments>http://kostenko.name/2009/11/05/accept-filters/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 19:17:38 +0000</pubDate>
		<dc:creator>Андрей Костенко</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[Web2]]></category>
		<category><![CDATA[Рамблер]]></category>

		<guid isPermaLink="false">http://kostenko.name/?p=633</guid>
		<description><![CDATA[Для начала расскажу, как обычно работают сервера: Создаётся сокет, который слушает порт Вызывается системный вызов accept, который берёт первого клиента из очереди соединений, а если его нет &#8211; то блокирует приложение до тех пор, пока он не появится Приложение что-то делает с этим клиентом и в конце концов с ним прощается goto пункт два nginx <a href='http://kostenko.name/2009/11/05/accept-filters/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Для начала расскажу, как обычно работают сервера:</p>
<ol>
<li>Создаётся сокет, который слушает порт</li>
<li>Вызывается системный вызов accept, который берёт первого клиента из очереди соединений, а если его нет &#8211; то блокирует приложение до тех пор, пока он не появится</li>
<li>Приложение что-то делает с этим клиентом и в конце концов с ним прощается</li>
<li>goto пункт два</li>
</ol>
<p>nginx и lighttpd использует вместо accept функции select/kevent/epoll, которые позволяют работать со многими клиентами одновременно, но это уже отдельная история (к асинхронным веб-серверам accept-фильтры применимяются точно так же)</p>
<p>Accept-фильтры &#8211; это модули ядра FreeBSD, которые не говорят, что сокет готов до тех пор, пока не выполнится какое-то условие. Я нашёл только два фильтра:</p>
<ul>
<li><b>dataready</b> &#8211; accept блокирует сокет до тех пор, пока в него прийдут данные. Когда мы получаем сокет, мы уже точно можем из него что-то считать</li>
<li><b>httpready</b> &#8211; сокет блокируется до тех пор, пока не прийдёт полный GET/HEAD запрос. Соответственно, нам не надо тратить время на переключение контекста, если запрос ещё не собрался.</li>
</ul>
<h3>Остановимся на фильтре httpready</h3>
<p>Буферизирует он только GET и HEAD запросы, так как в POST/PUT может прийти 600мегабайтный <a href="http://mirrors.kernel.org/gentoo/releases/amd64/autobuilds/current-iso/install-amd64-minimal-20091029.iso">порнофильм</a>.<br />
Итак, подключаем модуль accf_http:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">    kldload accf_http
    echo 'accf_http_load=”YES”' &gt;&gt; /boot/loader.conf</pre></div></div>

<p>Далее нужно изменить работу с сокетом &mdash; установить опцию httpready:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">        <span style="color: #993333;">struct</span> accept_filter_arg afa<span style="color: #339933;">;</span>
        bzero<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>afa<span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>afa<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        strcpy<span style="color: #009900;">&#40;</span>afa.<span style="color: #202020;">af_name</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;httpready&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        setsockopt<span style="color: #009900;">&#40;</span>sok<span style="color: #339933;">,</span> SOL_SOCKET<span style="color: #339933;">,</span> SO_ACCEPTFILTER<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>afa<span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>afa<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>Результаты тестов</h3>
<p>Так как существует мнение, что accept-фильтры бесполезны, мы решили провести тестирование. Веб-сервер был выбран AnyEvent::HTTPD, клиент &#8211; ab. Итак, результаты:</p>
<ol>
<li>локальная машина, 10000 запросов, concurrency = 4: httpready даёт прирост в 10%</li>
<li>локальная сеть, 10000 запросов, concurrency=1000: httpready даёт прирост в 10%</li>
<li>локальная сеть, 10000 запросов, concurrency = 4: прирост в 25%</li>
<li>локальная сеть, 1000 запросов, concurrency = 1: в два раза!</li>
</ol>
<p>В боевых условиях, при наличии GPRS, 256k и прочего позора цивилизации, скорость ещё увеличится.</p>
<h3>Настройка веб-серверов</h3>
<p>В apache 1.3+ и nginx accept-фильтры поддерживаются.</p>
<p>Apache под FreeBSD изначально содержит такую конфигурацию:</p>

<div class="wp_syntax"><div class="code"><pre class="none" style="font-family:monospace;"> AcceptFilter http httpready
 AcceptFilter https dataready</pre></div></div>

<p>и менять её не стоит.<br />
А вот в настройках сервера nginx стоит добавить опцию</p>

<div class="wp_syntax"><div class="code"><pre class="none" style="font-family:monospace;">    accept_filter &quot;httpready&quot;;</pre></div></div>

<h3>Ссылки</h3>
<ul>
<li><a href="http://sysoev.ru/freebsd/accept-filters.html">статья Игоря Сысоева</a></li>
<li>man accf_http</li>
<li>man accf_data</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://kostenko.name/2009/11/05/accept-filters/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Вышел wordpress 2.8</title>
		<link>http://kostenko.name/2009/06/13/%d0%b2%d1%8b%d1%88%d0%b5%d0%bb-wordpress-2-8/</link>
		<comments>http://kostenko.name/2009/06/13/%d0%b2%d1%8b%d1%88%d0%b5%d0%bb-wordpress-2-8/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 06:30:07 +0000</pubDate>
		<dc:creator>Андрей Костенко</dc:creator>
				<category><![CDATA[Web2]]></category>

		<guid isPermaLink="false">http://kostenko.name/2009/06/13/%d0%b2%d1%8b%d1%88%d0%b5%d0%bb-wordpress-2-8/</guid>
		<description><![CDATA[Из новшеств замечено только одно &#8211; админка перестала работать под IE6. В остальном всё так же. Настоятельно советую обновиться лишь тем, кому совсем нехер делать PD: обновился)]]></description>
			<content:encoded><![CDATA[<p>Из новшеств замечено только одно &#8211; админка перестала работать под IE6. В остальном всё так же. Настоятельно советую обновиться лишь тем, кому совсем нехер делать</p>
<p>PD: обновился)</p>
]]></content:encoded>
			<wfw:commentRss>http://kostenko.name/2009/06/13/%d0%b2%d1%8b%d1%88%d0%b5%d0%bb-wordpress-2-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Новый релиз калькулятора</title>
		<link>http://kostenko.name/2009/03/13/new-calculator-release/</link>
		<comments>http://kostenko.name/2009/03/13/new-calculator-release/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 08:53:35 +0000</pubDate>
		<dc:creator>Андрей Костенко</dc:creator>
				<category><![CDATA[Web2]]></category>
		<category><![CDATA[calculator]]></category>

		<guid isPermaLink="false">http://kostenko.name/?p=368</guid>
		<description><![CDATA[Из изменений: Собственный парсер результата. Сейчас правильно показывается степень, подсвечиваются неизвестные. Правильно понимаются валюты. У них отображается название, научился понимать знак $ При наборе подсказка не только парсит и расставляет функции, а ещё и показывает помощь по аргументам Поправил мелкие баги, связанные с показом несуществующих ошибок]]></description>
			<content:encoded><![CDATA[<p>Из изменений:</p>
<ul>
<li>Собственный парсер результата. Сейчас правильно показывается степень, подсвечиваются неизвестные.</li>
<li>Правильно понимаются валюты. У них отображается название, научился понимать знак $</li>
<li>При наборе подсказка не только парсит и расставляет функции, а ещё и показывает помощь по аргументам</li>
<li>Поправил мелкие баги, связанные с показом несуществующих ошибок</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://kostenko.name/2009/03/13/new-calculator-release/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress 2.7 beta1</title>
		<link>http://kostenko.name/2008/11/04/wordpress-27-beta1/</link>
		<comments>http://kostenko.name/2008/11/04/wordpress-27-beta1/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 02:57:34 +0000</pubDate>
		<dc:creator>Андрей Костенко</dc:creator>
				<category><![CDATA[Web2]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://kostenko.name/?p=226</guid>
		<description><![CDATA[это первый пост, который я пишу из WP-2.7beta1. Изменился весь дизайн админки. Она стала лучше с точки зрения юзабилити (всё перед глазами, а добавить пост можно вообще в один клик), но дизайн стал каким-то серым и угрюмым. Есть много замечательных людей, которые и без дизайна мне настроение портят. Не хватало ещё, чтобы WordPress этим занимался. <a href='http://kostenko.name/2008/11/04/wordpress-27-beta1/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>это первый пост, который я пишу из WP-2.7beta1.</p>
<p>Изменился весь дизайн админки. Она стала лучше с точки зрения юзабилити (всё перед глазами, а добавить пост можно вообще в один клик), но дизайн стал каким-то серым и угрюмым. Есть много замечательных людей, которые и без дизайна мне настроение портят. Не хватало ещё, чтобы WordPress этим занимался.</p>
<p><a href="http://kostenko.name/wp-content/uploads/2008/11/admin.png"><img class="alignnone size-medium wp-image-227" title="Админка вордпресса" src="http://kostenko.name/wp-content/uploads/2008/11/admin-300x187.png" alt="Админка вордпресса" width="300" height="187" /></a></p>
<p>Так же ворпресс научился самообновлять ядро. Система такая же, как и с плагинами.</p>
<p>Пока это всё что я заметил.</p>
<p>Для тех, кто не знает, что такое WordPress, объяснение <a href="http://absurdopedia.wikia.com/wiki/%D0%9C%D0%B0%D1%82%D1%87%D0%B0%D1%81%D1%82%D1%8C_(%D0%BA%D1%83%D0%BB%D1%8C%D1%82)">здесь</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kostenko.name/2008/11/04/wordpress-27-beta1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Наборы иконок</title>
		<link>http://kostenko.name/2008/11/02/icons-sets/</link>
		<comments>http://kostenko.name/2008/11/02/icons-sets/#comments</comments>
		<pubDate>Sun, 02 Nov 2008 12:30:28 +0000</pubDate>
		<dc:creator>Андрей Костенко</dc:creator>
				<category><![CDATA[Web2]]></category>
		<category><![CDATA[famfamfam]]></category>
		<category><![CDATA[fugue]]></category>
		<category><![CDATA[icons]]></category>
		<category><![CDATA[iconset]]></category>

		<guid isPermaLink="false">http://kostenko.name/?p=215</guid>
		<description><![CDATA[Как правило для сайтов нужен какой-то однообразный набор иконок для базовых событий &#8211; добавление, удаление чего-то итд итп Так вот. Я знаю уже два набора иконок, которые пригодятся при веб-разработке Silk icons (http://famfamfam.com) Fugue icons (http://www.pinvoke.com/)]]></description>
			<content:encoded><![CDATA[<p>Как правило для сайтов нужен какой-то однообразный набор иконок для базовых событий &#8211; добавление, удаление чего-то итд итп</p>
<p>Так вот. Я знаю уже два набора иконок, которые пригодятся при веб-разработке</p>
<ol>
<li>Silk icons (<a href="http://famfamfam.com">http://famfamfam.com</a>)</li>
<li>Fugue icons (<a href="http://www.pinvoke.com/">http://www.pinvoke.com/</a>)</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://kostenko.name/2008/11/02/icons-sets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flock</title>
		<link>http://kostenko.name/2008/10/29/flock/</link>
		<comments>http://kostenko.name/2008/10/29/flock/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 13:25:26 +0000</pubDate>
		<dc:creator>Андрей Костенко</dc:creator>
				<category><![CDATA[Web2]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[flock]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://kostenko.name/2008/10/29/flock/</guid>
		<description><![CDATA[Для тех, кому я ещё не проел мозги рассказами про этот замечательный браузер. Это &#8211; социальный браузер на основе Firefox. Умеет из которобки работать с: соцсетями (список друзей, оповещения итд итп) блогами (WordPress, Blogger, Twitter, LJ) фотовидеогаллереями (Picasa, Flickr, Youtube) вебпочтой (Gmail, AOL, Yahoo) закладочными сервисами (Delicious) Все сервисы флока &#8211; это простые JS-файлы. И <a href='http://kostenko.name/2008/10/29/flock/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Для тех, кому я ещё не проел мозги рассказами про этот замечательный браузер.<br />
Это &#8211; социальный браузер на основе Firefox. Умеет из которобки работать с:</p>
<ul>
<li>соцсетями (список друзей, оповещения итд итп)
</li>
<li>блогами (WordPress, Blogger, Twitter, LJ)
</li>
<li>фотовидеогаллереями (Picasa, Flickr, Youtube)
</li>
<li>вебпочтой (Gmail, AOL, Yahoo)
</li>
<li>закладочными сервисами (Delicious)</li>
</ul>
<p>Все сервисы флока &#8211; это простые JS-файлы. И можно без проблем дописать поддержку понравившегося.</p>
<p>Расширения к нему подходят те же, что и к Firefox 3.</p>
<p>Полгода назад я пользовался только Flock-ом. С выходом Firefox 3 перешёл на неё. И мечтал о Flock-е на движке 3-го Firefox. Мечта идиота свершилась &#8211; навую версию можно скачать с</p>
<p><a href="http://flock.com/">Сайт Flock-а</a></p>
<div class="flockcredit" style="text-align: right; color: #CCC; font-size: x-small;">Blogged with the <a href="http://www.flock.com/blogged-with-flock" style="color: #999; font-weight: bold;" target="_new" title="Flock Browser">Flock Browser</a></div>
]]></content:encoded>
			<wfw:commentRss>http://kostenko.name/2008/10/29/flock/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FriendFeed скоро прикрутит реалтаймовый API</title>
		<link>http://kostenko.name/2008/10/18/friendfeed-realtime-api/</link>
		<comments>http://kostenko.name/2008/10/18/friendfeed-realtime-api/#comments</comments>
		<pubDate>Sat, 18 Oct 2008 07:32:34 +0000</pubDate>
		<dc:creator>Андрей Костенко</dc:creator>
				<category><![CDATA[Web2]]></category>
		<category><![CDATA[friendfeed]]></category>
		<category><![CDATA[realtime api]]></category>

		<guid isPermaLink="false">http://kostenko.name/?p=191</guid>
		<description><![CDATA[Посмотрим, что из этого получится. Только этот API должны начать поддерживать. Хотя довольно прикольно &#8211; ты сидишь, пыришься в ленту, а тебе в реалтайме подкружаются новые посты и комменты к ним. Тонкий намёк на http://friends.rambler.ru]]></description>
			<content:encoded><![CDATA[<p>Посмотрим, что из этого получится.</p>
<p>Только этот API должны начать поддерживать. Хотя довольно прикольно &#8211; ты сидишь, пыришься в ленту, а тебе в реалтайме подкружаются новые посты и комменты к ним.</p>
<p>Тонкий намёк на <a href="http://friends.rambler.ru">http://friends.rambler.ru</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kostenko.name/2008/10/18/friendfeed-realtime-api/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

