<?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>U.F.M&#039;s Homepage &#187; erlang</title>
	<atom:link href="http://blog.ufm.su/archives/tag/erlang/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.ufm.su</link>
	<description>Очередной кошмарный блог на WordPress</description>
	<lastBuildDate>Thu, 28 Apr 2011 13:58:53 +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>Что-ж это было-то</title>
		<link>http://blog.ufm.su/archives/1035</link>
		<comments>http://blog.ufm.su/archives/1035#comments</comments>
		<pubDate>Thu, 21 Oct 2010 09:45:31 +0000</pubDate>
		<dc:creator>Fyodor Ustinov</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=1035</guid>
		<description><![CDATA[Ну ответ на это очень простой &#8212; это древовидное представление 192.168.2.1. То, что это дерево, угадал Тоботрас &#8212; на то он и великий. А уж то, что кому-то не лень будет ветки считать я и не расчитываю. :) Я тут просто классический велосипед реализовываю  &#8212; попадание адреса в список масок (да-да, стандартная задача: локальное/мир/всё остальное).]]></description>
			<content:encoded><![CDATA[<p>Ну ответ на <a href="http://blog.ufm.su/archives/1030/trackback">это</a> очень простой &#8212; это древовидное представление 192.168.2.1. То, что это дерево, угадал Тоботрас &#8212; на то он и великий. А уж то, что кому-то не лень будет ветки считать я и не расчитываю. :)</p>
<p>Я тут просто классический велосипед реализовываю  &#8212; попадание адреса в список масок (да-да, стандартная задача: локальное/мир/всё остальное).</p>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1035" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/1035/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Что это</title>
		<link>http://blog.ufm.su/archives/1030</link>
		<comments>http://blog.ufm.su/archives/1030#comments</comments>
		<pubDate>Wed, 20 Oct 2010 21:19:06 +0000</pubDate>
		<dc:creator>Fyodor Ustinov</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=1030</guid>
		<description><![CDATA[кто догадается? :) [[],[[],[[[[[[[[],[[[],[[[],[[[[[[[[[[[],[[[[[[[[[[],[nil,nil]],[]],[]],[]],[]],[]],[]],[]],[]]],[]],[]],[]],[]],[]],[]],[]],[]],[]]],[]]],[]]],[]],[]],[]],[]],[]],[]]]]]]></description>
			<content:encoded><![CDATA[<p>кто догадается? :)</p>
<p>[[],[[],[[[[[[[[],[[[],[[[],[[[[[[[[[[[],[[[[[[[[[[],[nil,nil]],[]],[]],[]],[]],[]],[]],[]],[]]],[]],[]],[]],[]],[]],[]],[]],[]],[]]],[]]],[]]],[]],[]],[]],[]],[]],[]]]]</p>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1030" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/1030/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Психи</title>
		<link>http://blog.ufm.su/archives/933</link>
		<comments>http://blog.ufm.su/archives/933#comments</comments>
		<pubDate>Wed, 01 Sep 2010 15:16:19 +0000</pubDate>
		<dc:creator>Fyodor Ustinov</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=933</guid>
		<description><![CDATA[Решил выяснить, откуда на свежеустановленной Ubuntu 10.04/Desktop взялся установленный ерланг. Вскрытие показало, что автоматом ставится gwibber. Это такая приблуда для микроблоггинга. Которая написана на Питоне и, похоже, испоьзует python-desktopcouch. Который, понятно дело, использует desktopcouch. Которая использует couchdb-bin. Которая написана на ерланге. И эти люди вынесли из стандартной установки Gimp со смехотворной мотивацией, что он много [...]]]></description>
			<content:encoded><![CDATA[<p>Решил выяснить, откуда на свежеустановленной Ubuntu 10.04/Desktop взялся установленный ерланг.<br />
Вскрытие показало, что автоматом ставится <a href="http://gwibber.com/">gwibber</a>. Это такая приблуда для микроблоггинга.<br />
Которая написана на Питоне и, похоже, испоьзует python-desktopcouch.<br />
Который, понятно дело, использует desktopcouch.<br />
Которая использует couchdb-bin.<br />
Которая написана на ерланге.</p>
<p>И эти люди вынесли из стандартной установки Gimp со смехотворной мотивацией, что он много места занимает&#8230;</p>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=933" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/933/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aho–Corasick string matching algorithm</title>
		<link>http://blog.ufm.su/archives/915</link>
		<comments>http://blog.ufm.su/archives/915#comments</comments>
		<pubDate>Sat, 28 Aug 2010 13:19:45 +0000</pubDate>
		<dc:creator>Fyodor Ustinov</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=915</guid>
		<description><![CDATA[Потребовалось тут &#8212; реализовал. Причем оно, на самом деле, на строки не завязано. ahocorasik:match([[{1,2,3}],[{3,2,1}], [{3,3,3},{1,2,3}]],[{1,2,3},4,5,6,7,8,{3,3,3},{1,2,3}]). [{[{1,2,3}],[1,8]},{[{3,3,3},{1,2,3}],[7]}]]]></description>
			<content:encoded><![CDATA[<p>Потребовалось тут &#8212; реализовал.</p>
<p>Причем оно, на самом деле, на строки не завязано.</p>
<p>ahocorasik:match([[{1,2,3}],[{3,2,1}], [{3,3,3},{1,2,3}]],[{1,2,3},4,5,6,7,8,{3,3,3},{1,2,3}]).<br />
[{[{1,2,3}],[1,8]},{[{3,3,3},{1,2,3}],[7]}]</p>
<p><span id="more-915"></span><br />
<script src="http://gist.github.com/557884.js"> </script></p>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=915" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/915/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Расстояние Левенштейна</title>
		<link>http://blog.ufm.su/archives/910</link>
		<comments>http://blog.ufm.su/archives/910#comments</comments>
		<pubDate>Thu, 26 Aug 2010 19:21:57 +0000</pubDate>
		<dc:creator>Fyodor Ustinov</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=910</guid>
		<description><![CDATA[Хорошая реализация. Главное &#8212; быстрая. А то я тут &#171;в лоб&#187; написал было. Всё хорошо, но на 1000 элементах мой вариант ушёл в несознанку. Еще-бы&#8230; Только это не чистый Левенштейн, это Дамерау — Левенштейн. Спёр себе, что-б было.]]></description>
			<content:encoded><![CDATA[<p>Хорошая реализация. Главное &#8212; быстрая. А то я тут &#171;в лоб&#187; написал было. Всё хорошо, но на 1000 элементах мой вариант ушёл в несознанку. Еще-бы&#8230;</p>
<p>Только это не чистый Левенштейн, это Дамерау — Левенштейн.<br />
Спёр себе, что-б было.<br />
<span id="more-910"></span><br />
<script src="http://gist.github.com/552029.js"> </script></p>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=910" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/910/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>dict vs lists</title>
		<link>http://blog.ufm.su/archives/904</link>
		<comments>http://blog.ufm.su/archives/904#comments</comments>
		<pubDate>Tue, 24 Aug 2010 11:08:48 +0000</pubDate>
		<dc:creator>Fyodor Ustinov</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=904</guid>
		<description><![CDATA[Стало интересно, в какой момент имеет переходить с простых списков на dict. Проверил. Из за того, что timer:tc точнее 1 микросекунды не считает, пришлось для каждого варианта считать время выполнения 100 одинаковых операций. Каждая такая итерация делалась 100000 раз и бралось среднее. dict:find: при любом размере время выполнения 50-70 микросекунд (напоминаю, это на 100 подряд [...]]]></description>
			<content:encoded><![CDATA[<p>Стало интересно, в какой момент имеет переходить с простых списков на dict.</p>
<p>Проверил.</p>
<p>Из за того, что timer:tc точнее 1 микросекунды не считает, пришлось<br />
для каждого варианта считать время выполнения 100 одинаковых операций.<br />
Каждая такая итерация делалась 100000 раз и бралось среднее.</p>
<p>dict:find: при любом размере время выполнения 50-70 микросекунд<br />
(напоминаю, это на 100 подряд вызовах, т.е. один вызов &#8212; где-то 0,5 -<br />
0,7).</p>
<p>lists:keyfind:<br />
номер элемента &#8212; время (здесь тоже помним про 100 вызовов).<br />
1   &#8212; 4<br />
10  &#8212; 8<br />
20  &#8212; 12<br />
30  &#8212; 15<br />
100 &#8212; 46<br />
150 &#8212; 67<br />
200 &#8212; 87<br />
300 &#8212; 130</p>
<p>Вобщем, где-то начиная с 300 элементов в списке имеет смысл переходить<br />
на dict (если, конечно, нам не нужен постоянно последний элемент).</p>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=904" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/904/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Откуда у хлопца испанская грусть</title>
		<link>http://blog.ufm.su/archives/899</link>
		<comments>http://blog.ufm.su/archives/899#comments</comments>
		<pubDate>Tue, 17 Aug 2010 19:19:06 +0000</pubDate>
		<dc:creator>Fyodor Ustinov</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=899</guid>
		<description><![CDATA[Я попытаюсь объяснить что именно меня заставляет постоянно испытывать когнитивный диссонанс при написании на ерланге. И пример из &#171;Erlang programming&#187; очень для этого подходит: Допустим мы пишем функцию возвращающую номер месяца по его имени: month('January') -> 1; month('February') -> 2; ... month('December') -> 12. Что произойдёт, если вызвать эту функцию с &#171;неправильным&#187; параметром? Процесс упадёт, [...]]]></description>
			<content:encoded><![CDATA[<p>Я попытаюсь объяснить что именно меня заставляет постоянно испытывать когнитивный диссонанс при написании на ерланге. И пример из &#171;Erlang programming&#187; очень для этого подходит:</p>
<p>Допустим мы пишем функцию возвращающую номер месяца по его имени:
<pre>
month('January') -> 1;
month('February') -> 2;
...
month('December') -> 12.
</pre>
<p>Что произойдёт, если вызвать эту функцию с &#171;неправильным&#187; параметром? Процесс упадёт, так как Ерланг не найдёт подходящей функции. А дальше у меня возникает &#171;естественное&#187; желание это отловить. Варианта три:<br />
Совсем неправильный вариант &#8212; дописать
<pre>
month(_other) -> {error, badmonth}.</pre>
<p>Чуть менее неправильный вариант &#8212; переписать всё вот так:
<pre>
month('January') -> {ok, 1};
month('February') -> {ok, 2};
...
month('December') -> {ok, 12};
month(_other) -> {error, badmonth}.</pre>
<p>Особо изощренный неправильный вариант:
<pre>
try
    M = month(MonthName)
catch
    _:_ -> ....
end</pre>
<p>Есть еще варианты, но это, на самом деле, не важно. Потому что в этом месте ловить эту ошибку не нужно. Совсем не нужно. Оно должно упасть и пусть себе падает, всё равно никакого другого разумного выхода из этой ситуации нет, кроме как упасть и перезапуститься.<br />
А почему приходится себя <b>заставлять</b> не делать эти проверки &#8212; это как раз &#171;тяжелое наследие C/Pascal и иже с ним&#187;. Когда в течение многих лет приходилось помнить, что malloc может вернуть не только указатель, что fopen может вернуть не только хендл файла, когда неправильные параметры могут привести к <b>не предсказуемым</b> результатам.</p>
<p>Впрочем, я думаю, что у людей, которые начинали с чего-то более адекватного, хотя-бы с C++, я уж молчу про всякие Явы, нет такой проблемы. Они изначально знают, что функция или вернет что просят, или вывалится.</p>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=899" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/899/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Распечатать и повесить на стену.</title>
		<link>http://blog.ufm.su/archives/897</link>
		<comments>http://blog.ufm.su/archives/897#comments</comments>
		<pubDate>Mon, 16 Aug 2010 23:52:59 +0000</pubDate>
		<dc:creator>Fyodor Ustinov</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=897</guid>
		<description><![CDATA[Do not future-proof your code. Don’t try to write code that will be able to deal with every possible eventuality as the system evolves. It will make your code harder to un- derstand and maintain, adding unnecessary complexity. Но писать после этого на &#171;обычных&#187; языках становится немного сложно.]]></description>
			<content:encoded><![CDATA[<blockquote><p>Do not future-proof your code. Don’t try to write code that will be able to deal with<br />
every possible eventuality as the system evolves. It will make your code harder to un-<br />
derstand and maintain, adding unnecessary complexity.</p></blockquote>
<p>Но писать после этого на &#171;обычных&#187; языках становится немного сложно.</p>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=897" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/897/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Старый стал</title>
		<link>http://blog.ufm.su/archives/882</link>
		<comments>http://blog.ufm.su/archives/882#comments</comments>
		<pubDate>Fri, 13 Aug 2010 21:40:46 +0000</pubDate>
		<dc:creator>Fyodor Ustinov</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[lytdybr]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=882</guid>
		<description><![CDATA[30 строк кода в день &#8212; маловато как-то. С другой стороны &#8212; иногда оно вот такое: parse_task_info(Data) -&#62; {_, Dict} = parse_task_info(Data, #s{dict = dict:new()}), Dict . parse_task_info([], S) -&#62; {[], S#s.dict}; parse_task_info([$" &#124;T], S)    when S#s.s =:= kquote    -&#62; parse_task_info(T, S#s{token = [$"&#124;S#s.token], s = kvalue}); parse_task_info([$" &#124;T], S)    when S#s.s =:= nquote    -&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>30 строк кода в день &#8212; маловато как-то.<br />
С другой стороны &#8212; иногда оно вот такое:</p>
<pre><span id="more-882"></span></pre>
<p>parse_task_info(Data) -&gt;<br />
{_, Dict} = parse_task_info(Data, #s{dict = dict:new()}),<br />
Dict<br />
.</p>
<p>parse_task_info([], S) -&gt; {[], S#s.dict};</p>
<p>parse_task_info([$" |T], S)    when S#s.s =:= kquote    -&gt; parse_task_info(T, S#s{token = [$"|S#s.token], s = kvalue});<br />
parse_task_info([$" |T], S)    when S#s.s =:= nquote    -&gt; parse_task_info(T, S#s{token = [$"|S#s.token], s = nvalue});<br />
parse_task_info([H  |T], S)    when S#s.s =:= kquote orelse S#s.s =:= nquote    -&gt; parse_task_info(T, S#s{token = [H|S#s.token]});<br />
parse_task_info([$  |T], S)                                 -&gt; parse_task_info(T, S);<br />
parse_task_info([$= |T], S)    when S#s.s =:= start    -&gt; parse_task_info(T, S#s{key = lists:reverse(S#s.token), token = &#171;&#187;, s = kvalue});<br />
parse_task_info([$( |T], S)    when S#s.s =:= start    -&gt; parse_task_info(T, S#s{token = &#171;&#187;, s = name});<br />
parse_task_info([$( |T], S) when S#s.s =:= kvalue    -&gt;<br />
{Tn, Dict} = parse_task_info(T, S#s{root = sjoin(S#s.root, S#s.key), token = &#171;&#187;, s = name}),<br />
parse_task_info(Tn, S#s{dict = Dict, s = start, token=&#187;"})<br />
;<br />
parse_task_info([$) |T], S) when S#s.s =:= name        -&gt; parse_task_info(T, S#s{key = lists:reverse(S#s.token), token = &#171;&#187;, s = nvalue});<br />
parse_task_info([$" |T], S)    when S#s.s =:= kvalue     -&gt; parse_task_info(T, S#s{token = [$"|S#s.token], s = kquote});<br />
parse_task_info([$" |T], S)    when S#s.s =:= nvalue    -&gt; parse_task_info(T, S#s{token = [$"|S#s.token], s = nquote});<br />
parse_task_info([$, |T], S)    when S#s.s =:= start    -&gt;<br />
{T, S#s.dict}<br />
;<br />
parse_task_info([$, |T], S)    when S#s.s =:= kvalue    -&gt;<br />
Dict = dict:store(sjoin(S#s.root,S#s.key), lists:reverse(S#s.token), S#s.dict),<br />
parse_task_info(T, S#s{dict = Dict, token = &#171;&#187;, s = start})<br />
;<br />
parse_task_info([$,|T], S)        when S#s.s =:= nvalue    -&gt;<br />
Dict = dict:store(sjoin(S#s.root,S#s.key), lists:reverse(S#s.token), S#s.dict),<br />
{T, Dict}<br />
;<br />
parse_task_info([$}|T], S)        when S#s.s =:= start    -&gt;<br />
{T, S#s.dict}<br />
;<br />
parse_task_info([${|T], S)        when S#s.s =:= nvalue    -&gt;<br />
{Tn, Dict} = parse_task_info(T, S#s{root = sjoin(S#s.root, S#s.key), token = &#171;&#187;, s = start}),<br />
parse_task_info(Tn, S#s{dict = Dict, s = start, token=&#187;"})<br />
;<br />
parse_task_info([H|T], S)                                -&gt; parse_task_info(T, S#s{token = [H|S#s.token]})<br />
.</p>
<p>sjoin(&#171;&#187;, &#171;&#187;) -&gt; &#171;&#187;;<br />
sjoin(&#171;&#187;, N2) -&gt; N2;<br />
sjoin(N1, &#171;&#187;) -&gt; N1;<br />
sjoin(N1, N2) -&gt; N1 ++ &#171;.&#187; ++ N2.</p>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=882" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/882/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Очень не хватает</title>
		<link>http://blog.ufm.su/archives/867</link>
		<comments>http://blog.ufm.su/archives/867#comments</comments>
		<pubDate>Sat, 07 Aug 2010 02:50:22 +0000</pubDate>
		<dc:creator>Fyodor Ustinov</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=867</guid>
		<description><![CDATA[языка программирования с транзакциями. Что бы можно было для функции написать три &#171;тела&#187; &#8212; что делать в обычном случае, что делать в случае &#171;отката&#187; и что делать в случае &#171;откат не удался&#187;. Приходится писать настолько феерически некрасиво и многословно, отрабатывая на каждом шагу каждый чих, что в результате основной алгоритм теряется в нагромождении if/case/try. Впрочем, [...]]]></description>
			<content:encoded><![CDATA[<p>языка программирования с транзакциями.</p>
<p>Что бы можно было для функции написать три &#171;тела&#187; &#8212; что делать в обычном случае, что делать в случае &#171;отката&#187; и что делать в случае &#171;откат не удался&#187;. Приходится писать настолько феерически некрасиво и многословно, отрабатывая на каждом шагу каждый чих, что в результате основной алгоритм теряется в нагромождении if/case/try.</p>
<p>Впрочем, ерланговый подход &#171;дай ему умереть&#187; помогает с этим не то что бы справиться, но, по крайней мере, как-то упорядочить. Особенно если придерживаться еще одного правила &#8212; &#171;молчи, если не спрашивают&#187; (т.е. функция set(some, value) не должна ничего возвращать никогда).</p>
<p>Попутно задумался о применимости dz-товского фантома. Может я, конечно, чего-то не понимаю, но по моим ощущениям применимость идеи фантома ограничена случаем &#171;нечто в себе с очень ограниченным взаимодействием со внешним миром&#187;. Ну т.е. настолько редкий и мизерный выигрыш от пресловутой persistence, что даже не смешно.</p>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=867" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/867/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>На сколько, всё таки, выразительный язык, да.</title>
		<link>http://blog.ufm.su/archives/656</link>
		<comments>http://blog.ufm.su/archives/656#comments</comments>
		<pubDate>Sun, 20 Sep 2009 20:52:29 +0000</pubDate>
		<dc:creator>Fyodor Ustinov</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[гыгы]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=656</guid>
		<description><![CDATA[case S#s.status of [_&#124;_] -&#62; send_error(S);]]></description>
			<content:encoded><![CDATA[<pre>case S#s.status of
    [_|_] -&gt;
         send_error(S);</pre>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=656" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/656/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Непонятка</title>
		<link>http://blog.ufm.su/archives/630</link>
		<comments>http://blog.ufm.su/archives/630#comments</comments>
		<pubDate>Thu, 10 Sep 2009 14:10:53 +0000</pubDate>
		<dc:creator>Fyodor Ustinov</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=630</guid>
		<description><![CDATA[Есть для меня в эрланге один момент, который я до сих пор понять не могу. А именно &#8212; если есть списки, зачем вводить в язык еще одну сущность &#8212; кортежи? Ну или наоборот, если сначала сделали кортежи, то зачем потом добавляли списки? Нет, я понимаю чем работа с ними отличается в эрланге в принципе, только [...]]]></description>
			<content:encoded><![CDATA[<p>Есть для меня в эрланге один момент, который я до сих пор понять не могу. А именно &#8212; если есть списки, зачем вводить в язык еще одну сущность &#8212; кортежи? Ну или наоборот, если сначала сделали кортежи, то зачем потом добавляли списки? Нет, я понимаю чем работа с ними отличается в эрланге в принципе, только такое ощущение, что убрать это различие &#8212; несколько переписанных BIF. </p>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=630" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/630/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://blog.ufm.su/archives/620</link>
		<comments>http://blog.ufm.su/archives/620#comments</comments>
		<pubDate>Thu, 03 Sep 2009 15:17:21 +0000</pubDate>
		<dc:creator>Fyodor Ustinov</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=620</guid>
		<description><![CDATA[К чему тяжело привыкнуть в эрланге, это к принципу &#171;дай ему умереть&#187;. P.S. А вобще этопросто проверка кросспоста в FB.]]></description>
			<content:encoded><![CDATA[<p>К чему тяжело привыкнуть в эрланге, это к принципу &#171;дай ему умереть&#187;.</p>
<p>P.S. А вобще этопросто проверка кросспоста в FB.</p>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=620" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/620/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DETS &amp; BLOB</title>
		<link>http://blog.ufm.su/archives/617</link>
		<comments>http://blog.ufm.su/archives/617#comments</comments>
		<pubDate>Tue, 01 Sep 2009 07:19:28 +0000</pubDate>
		<dc:creator>ufm</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=617</guid>
		<description><![CDATA[Далее интересно только тем, кто пишет на эрланге. Хочу просто предупредить тех, кто пользуется DETS и/или  Mnesia на 32-х битных системах и у кого размеры DAT приближаются к 2Г &#8212; оно умеет портить DAT файлы. Вот пример, там всё видно.: ufm@imac:~/src$ erl Erlang R13B01 (erts-5.7.2) [source] [smp:2:2] [rq:2] [async-threads:0] [kernel-poll:false] Eshell V5.7.2  (abort with ^G) [...]]]></description>
			<content:encoded><![CDATA[<p>Далее интересно только тем, кто пишет на эрланге.</p>
<p><span id="more-617"></span><br />
Хочу просто предупредить тех, кто<br />
пользуется DETS и/или  Mnesia на 32-х битных системах и у кого размеры<br />
DAT приближаются к 2Г &#8212; оно умеет портить DAT файлы. Вот пример, там<br />
всё видно.:</p>
<p>ufm@imac:~/src$ erl<br />
Erlang R13B01 (erts-5.7.2) [source] [smp:2:2] [rq:2] [async-threads:0]<br />
[kernel-poll:false]</p>
<p>Eshell V5.7.2  (abort with ^G)<br />
1&gt; BigL = lists:seq(1,2000000).<br />
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,<br />
23,24,25,26,27,28,29|...]<br />
2&gt; dets:open_file(tab,[{type,set}]).<br />
{ok,tab}<br />
3&gt; dets:info(tab).<br />
[{type,set},<br />
{keypos,1},<br />
{size,0},<br />
{file_size,5432},<br />
{filename,"tab"}]<br />
4&gt; lists:foreach(fun(X) -&gt; dets:insert(tab,{X,BigL}) end, lists:seq<br />
(1,50)).<br />
ok<br />
5&gt; dets:info<br />
(tab).<br />
[{type,set},<br />
{keypos,1},<br />
{size,50},<br />
{file_size,848861394},<br />
{filename,"tab"}]<br />
6&gt; dets:close(tab).<br />
ok<br />
7&gt; dets:open_file(tab,<br />
[{type,set}]).<br />
{ok,tab}<br />
8&gt; dets:info<br />
(tab).<br />
[{type,set},<br />
{keypos,1},<br />
{size,50},<br />
{file_size,848861666},<br />
{filename,"tab"}]<br />
9&gt; lists:foreach(fun(X) -&gt; dets:insert(tab,{X,BigL}) end, lists:seq<br />
(50,200)).<br />
ok<br />
10&gt; dets:info<br />
(tab).<br />
[{type,set},<br />
{keypos,1},<br />
{size,126},<br />
{file_size,2066820196},<br />
{filename,"tab"}]<br />
11&gt; dets:close<br />
(tab).<br />
{error,{{bad_object,read_buckets},&#187;tab&#187;}}<br />
12&gt; dets:close<br />
(tab).<br />
{error,not_owner}<br />
13&gt; dets:info<br />
(tab).<br />
undefined<br />
14&gt; dets:open_file(tab,<br />
[{type,set}]).<br />
dets: file &#171;tab&#187; not properly closed, repairing &#8230;<br />
{error,{no_more_space_on_file,&#187;tab.TMP&#187;}}<br />
15&gt;</p>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=617" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/617/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Но все равно не аккуратненько</title>
		<link>http://blog.ufm.su/archives/614</link>
		<comments>http://blog.ufm.su/archives/614#comments</comments>
		<pubDate>Thu, 27 Aug 2009 18:31:53 +0000</pubDate>
		<dc:creator>ufm</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=614</guid>
		<description><![CDATA[ufm@imac:~$ erl Erlang (BEAM) emulator version 5.6.5 [source] [smp:2] [async-threads:0] [kernel-poll:false] Eshell V5.6.5 (abort with ^G) 1&#62; A=[255&#124;&#124;X&#60;-lists:seq(1,20000000)],ok. ok 2&#62; B=list_to_binary(A). &#60;&#60;&#187;\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377&#8243;&#8230;&#62;&#62; 3&#62; 3&#62; byte_size(B). 20000000 4&#62; byte_size(B). 20000000 5&#62; byte_size(B). 20000000 Crash dump was written to: erl_crash.dump eheap_alloc: Cannot allocate 912262800 bytes of memory (of type &#171;heap&#187;). Aborted]]></description>
			<content:encoded><![CDATA[<p>ufm@imac:~$ erl<br />
Erlang (BEAM) emulator version 5.6.5 [source] [smp:2] [async-threads:0] [kernel-poll:false]</p>
<p>Eshell V5.6.5  (abort with ^G)<br />
1&gt; A=[255||X&lt;-lists:seq(1,20000000)],ok.<br />
ok<br />
2&gt; B=list_to_binary(A).<br />
&lt;&lt;&#187;\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377&#8243;&#8230;&gt;&gt;<br />
3&gt;<br />
3&gt; byte_size(B).<br />
20000000<br />
4&gt; byte_size(B).<br />
20000000<br />
5&gt; byte_size(B).<br />
20000000</p>
<p>Crash dump was written to: erl_crash.dump<br />
eheap_alloc: Cannot allocate 912262800 bytes of memory (of type &#171;heap&#187;).<br />
Aborted</p>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=614" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/614/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Буратино был тупой</title>
		<link>http://blog.ufm.su/archives/611</link>
		<comments>http://blog.ufm.su/archives/611#comments</comments>
		<pubDate>Thu, 27 Aug 2009 18:17:22 +0000</pubDate>
		<dc:creator>ufm</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=611</guid>
		<description><![CDATA[L=lists:seq(1,256). Ага. Список. От 1 до 256. И как я 256 собрался в binary переводить?]]></description>
			<content:encoded><![CDATA[<p>L=lists:seq(1,256).</p>
<p>Ага. Список. От 1 до 256. И как я 256 собрался в binary переводить?</p>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=611" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/611/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как все плохо-то, оказывается, в эрланге с памятью.</title>
		<link>http://blog.ufm.su/archives/609</link>
		<comments>http://blog.ufm.su/archives/609#comments</comments>
		<pubDate>Thu, 27 Aug 2009 12:45:29 +0000</pubDate>
		<dc:creator>ufm</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=609</guid>
		<description><![CDATA[Но что прям так плохо будет &#8212; не ожидал. L=lists:seq(1,20000000) &#8212; выжирает память как не в себя. Вот это &#8212; тоже весело: 1&#62; L=lists:seq(1,256). [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22, 23,24,25,26,27,28,29&#124;...] 2&#62; B=list_to_binary(L). ** exception error: bad argument in function list_to_binary/1 called as list_to_binary([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22, 23,24,25,26,27,28&#124;...]) ну и напоследок: 34&#62; f(). ok 35&#62; L=lists:seq(1,256). [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22, 23,24,25,26,27,28,29&#124;...] Crash dump was written to: [...]]]></description>
			<content:encoded><![CDATA[<p>Но что прям так плохо будет &#8212; не ожидал.<br />
L=lists:seq(1,20000000) &#8212; выжирает память как не в себя.</p>
<p>Вот это &#8212; тоже весело:</p>
<blockquote><p>1&gt; L=lists:seq(1,256).<br />
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,<br />
23,24,25,26,27,28,29|...]<br />
2&gt; B=list_to_binary(L).<br />
** exception error: bad argument<br />
in function  list_to_binary/1<br />
called as list_to_binary([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,<br />
23,24,25,26,27,28|...])</p></blockquote>
<p>ну и напоследок:</p>
<blockquote><p>34&gt; f().<br />
ok<br />
35&gt; L=lists:seq(1,256).<br />
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,<br />
23,24,25,26,27,28,29|...]</p>
<p>Crash dump was written to: erl_crash.dump<br />
eheap_alloc: Cannot allocate 1425410620 bytes of memory (of type &#171;heap&#187;).<br />
Aborted</p></blockquote>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=609" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/609/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Что-то мне подсказывает</title>
		<link>http://blog.ufm.su/archives/607</link>
		<comments>http://blog.ufm.su/archives/607#comments</comments>
		<pubDate>Thu, 27 Aug 2009 06:56:57 +0000</pubDate>
		<dc:creator>ufm</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=607</guid>
		<description><![CDATA[что самая распространенная ошибка при программировании на erlang &#8212; передача в функцию не того параметра. Ну по крайней мере эта ошибка распространена сейчас среди меня. Что я имею в виду: допустим обрабатываем по цепочке данные. Как бы я это писал на Цэ: tmt = 5; tmt = fun1(tmt); tmt = fun2(tmt); tmt = fun3(tmt); Как [...]]]></description>
			<content:encoded><![CDATA[<p>что самая распространенная ошибка при программировании на erlang &#8212; передача в функцию не того параметра. Ну по крайней мере эта ошибка распространена сейчас среди меня. Что я имею в виду: допустим обрабатываем по цепочке данные. Как бы я это писал на Цэ:</p>
<blockquote><p>tmt = 5;<br />
tmt = fun1(tmt);<br />
tmt = fun2(tmt);<br />
tmt = fun3(tmt);</p></blockquote>
<p>Как это приходится писать на эрланге</p>
<blockquote><p>Tmt = 5,<br />
Tmt1 = fun1(Tmt),<br />
Tmt2 = fun2(Tmt1),<br />
Tmt3 = fun3(Tmt2).</p></blockquote>
<p>В результате достаточно в третьей строчке ошибиться и написать Tmt (при копипейстинге из другого места, реорганизации кода или просто опечататься) и ловить эту ошибку придется достаточно долго. Особенно когда переменная Tmt1 используется между функциями fun1 и fun2 &#8212; компилятор даже предупреждения не даст, что переменная нигде не используется.<br />
Хотя, конечно, возможно это просто у меня с непривычки.</p>
<p>P.S. А постоянное слежение за тем, когда писать &#8216;,&#8217; когда &#8216;;&#8217; а когда вобще ничего &#8212; это отдельная песня. :)</p>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=607" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/607/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Развлекушечки&#8230;</title>
		<link>http://blog.ufm.su/archives/594</link>
		<comments>http://blog.ufm.su/archives/594#comments</comments>
		<pubDate>Fri, 21 Aug 2009 17:02:15 +0000</pubDate>
		<dc:creator>ufm</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=594</guid>
		<description><![CDATA[Erlang (BEAM) emulator version 5.6.5 [source] [smp:2] [async-threads:0] [kernel-poll:false] Eshell V5.6.5 (abort with ^G) 1&#62; c(&#171;/home/ufm/src/tmt&#187;, [{outdir, "/home/ufm/src/"}]). {ok,tmt} 2&#62; tmt:pow(2,16). 65536 3&#62; tmt:pow(2,2). 4 4&#62; tmt:pow(1024,1024). 352497141210838265713481483980028154643914213439664710603913826057310702768547493650483 302964736638624569681553952983739732590494759431136198883386731161336668147068707652719 076562056460186083699855587212676703217390319386338332818891926201584265318069231442392 697268763999519611919803480232917034723057637824103945897589345856311110781204353030326 888187514464352913713571717556327753629326947950763134366874696380043276893902467353218 558306108568659249137608267637760032658517165573342106422773434757577997804990215598224 124342750870843172934551295704067075900020717046731355275335432173559875681076975779467 857964124560483600729656168710248662446500810590681830381345185142229871868373945980198 595129936003792361901975768389050807333599890946870089994162477220200619925599314018723 573797084885850036669659306097304307741074074940180653658450770943205347006923544001698 241315783891536569167546822524255627428950268220861122361857689319404333240786923864636 423780292915823845509040122842652771246674528169856593374975809915925102014797665008774 278345666191563143881075857435462890675510524340756781953453733639195713232101136226155 117651343296272079557936053768928759383576728708813056793055212933599754278019219975348 914740908681134673577843597833830910857171008072284250312267769851973643594046830415066 139436466661994548993636858018487767296858378032282161138338547424434092214804502325631 304177096253207949716727377373859839755200477399781651249069168579319609024073978415366 576503787580124091572059395130853242824392901089090690365154306903599631529865877499305 168806703261450369876070529616967815564185509662018228218579780200625368240156976209572 227380655388321870974098595026691965890259611994487589973737929731917233355497723948788 740508545327859224758228364037939866231931740209314323814184370227604126822763829893548 396254532412898071082609051342346791309548675704473545497601746910070785284527450279949 438532294805445123688313787611196816167193276373081423151051205287046835151820383202250 786653139117317493642556212844343049454372146094060086405209720295099554355680948888157 014704194108891565239711821728144232741409554280705943283816670482867719728577034355258 035447078345677740272066141434199824101092619306983110108578748668407438514728576453309 291695484037510844947258937293554504737710599868010583420219027353676279009748723681378 389963973798981614548259709107328582027812829739376428479733818386729806933990394293426 [...]]]></description>
			<content:encoded><![CDATA[<p>Erlang (BEAM) emulator version 5.6.5 [source] [smp:2] [async-threads:0] [kernel-poll:false]</p>
<p>Eshell V5.6.5  (abort with ^G)<br />
1&gt; c(&#171;/home/ufm/src/tmt&#187;, [{outdir, "/home/ufm/src/"}]).</p>
<p>{ok,tmt}</p>
<p>2&gt; tmt:pow(2,16).<br />
65536</p>
<p>3&gt; tmt:pow(2,2).<br />
4</p>
<p>4&gt; tmt:pow(1024,1024).<br />
352497141210838265713481483980028154643914213439664710603913826057310702768547493650483<br />
302964736638624569681553952983739732590494759431136198883386731161336668147068707652719<br />
076562056460186083699855587212676703217390319386338332818891926201584265318069231442392<br />
697268763999519611919803480232917034723057637824103945897589345856311110781204353030326<br />
888187514464352913713571717556327753629326947950763134366874696380043276893902467353218<br />
558306108568659249137608267637760032658517165573342106422773434757577997804990215598224<br />
124342750870843172934551295704067075900020717046731355275335432173559875681076975779467<br />
857964124560483600729656168710248662446500810590681830381345185142229871868373945980198<br />
595129936003792361901975768389050807333599890946870089994162477220200619925599314018723<br />
573797084885850036669659306097304307741074074940180653658450770943205347006923544001698<br />
241315783891536569167546822524255627428950268220861122361857689319404333240786923864636<br />
423780292915823845509040122842652771246674528169856593374975809915925102014797665008774<br />
278345666191563143881075857435462890675510524340756781953453733639195713232101136226155<br />
117651343296272079557936053768928759383576728708813056793055212933599754278019219975348<br />
914740908681134673577843597833830910857171008072284250312267769851973643594046830415066<br />
139436466661994548993636858018487767296858378032282161138338547424434092214804502325631<br />
304177096253207949716727377373859839755200477399781651249069168579319609024073978415366<br />
576503787580124091572059395130853242824392901089090690365154306903599631529865877499305<br />
168806703261450369876070529616967815564185509662018228218579780200625368240156976209572<br />
227380655388321870974098595026691965890259611994487589973737929731917233355497723948788<br />
740508545327859224758228364037939866231931740209314323814184370227604126822763829893548<br />
396254532412898071082609051342346791309548675704473545497601746910070785284527450279949<br />
438532294805445123688313787611196816167193276373081423151051205287046835151820383202250<br />
786653139117317493642556212844343049454372146094060086405209720295099554355680948888157<br />
014704194108891565239711821728144232741409554280705943283816670482867719728577034355258<br />
035447078345677740272066141434199824101092619306983110108578748668407438514728576453309<br />
291695484037510844947258937293554504737710599868010583420219027353676279009748723681378<br />
389963973798981614548259709107328582027812829739376428479733818386729806933990394293426<br />
130015951489680820100160610223162428423676727412654054345531072966235596044133263521405<br />
296181711754506578842550993346187227316979201855824371823913976733011681606825166392147<br />
065669814659617313748089491317423647529930783263677141170014042109302515381324422193350<br />
726720968651846913030271569624397770537072865839497640551512918164025464624527191347971<br />
790992102335775962779256460318241722748740845621134400433973951910654736207171042506860<br />
408965809287008425939191732838445314709522056008744823024885238670745329077812649908653<br />
518446848070122080391082875645348545004863915388760636114766656202302948114683518353740<br />
72060530215907909311281816131942219776</p>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=594" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/594/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Зря разработчики остановились</title>
		<link>http://blog.ufm.su/archives/578</link>
		<comments>http://blog.ufm.su/archives/578#comments</comments>
		<pubDate>Tue, 11 Aug 2009 18:22:07 +0000</pubDate>
		<dc:creator>ufm</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[гыгы]]></category>

		<guid isPermaLink="false">http://blog.ufm.su/?p=578</guid>
		<description><![CDATA[Надо было по мимо &#171;равно&#187; (==), &#171;строго равно&#187; (=:=), &#171;не равно&#187; (/=) и &#171;строго не равно&#187; (=/=) ввести еще &#171;мамой клянусь равно&#187;, &#171;что-то типа&#187;, &#171;даже рядом не лежало с&#187; и &#171;в общем то по барабану&#187;.]]></description>
			<content:encoded><![CDATA[<p>Надо было по мимо &#171;равно&#187; (==), &#171;строго равно&#187; (=:=), &#171;не равно&#187; (/=) и &#171;строго не равно&#187; (=/=) ввести еще</p>
<p>&#171;мамой клянусь равно&#187;, &#171;что-то типа&#187;, &#171;даже рядом не лежало с&#187; и &#171;в общем то по барабану&#187;.</p>
 <img src="http://blog.ufm.su/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=578" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ufm.su/archives/578/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

