<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Интернет-страничка инженера</title>
	<atom:link href="http://mbeloshitsky.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mbeloshitsky.wordpress.com</link>
	<description>Ещё один блог на этом хостинге</description>
	<lastBuildDate>Thu, 15 Dec 2011 19:55:03 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='mbeloshitsky.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Интернет-страничка инженера</title>
		<link>http://mbeloshitsky.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://mbeloshitsky.wordpress.com/osd.xml" title="Интернет-страничка инженера" />
	<atom:link rel='hub' href='http://mbeloshitsky.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Послевыборное политичное</title>
		<link>http://mbeloshitsky.wordpress.com/2011/12/15/%d0%bf%d0%be%d1%81%d0%bb%d0%b5%d0%b2%d1%8b%d0%b1%d0%be%d1%80%d0%bd%d0%be%d0%b5-%d0%bf%d0%be%d0%bb%d0%b8%d1%82%d0%b8%d1%87%d0%bd%d0%be%d0%b5/</link>
		<comments>http://mbeloshitsky.wordpress.com/2011/12/15/%d0%bf%d0%be%d1%81%d0%bb%d0%b5%d0%b2%d1%8b%d0%b1%d0%be%d1%80%d0%bd%d0%be%d0%b5-%d0%bf%d0%be%d0%bb%d0%b8%d1%82%d0%b8%d1%87%d0%bd%d0%be%d0%b5/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 19:52:59 +0000</pubDate>
		<dc:creator>Michel Beloshitsky</dc:creator>
				<category><![CDATA[Заметки]]></category>
		<category><![CDATA[об окружающем]]></category>

		<guid isPermaLink="false">http://mbeloshitsky.wordpress.com/?p=613</guid>
		<description><![CDATA[Хотел проголосовать за Единую Россию, да, к сожалению, на выборы не попал, пришлось срочно слететь-съездить в пару-тройку мест. А пойти не знаю куда и взять открепительное удостоверение меня не хватило, да и времени особо не было. И дело даже не в том, что я считаю ЕР и правда лучшим выбором и чем-то достойным для подражания. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=613&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Хотел проголосовать за Единую Россию, да, к сожалению, на выборы не попал, пришлось срочно слететь-съездить в пару-тройку мест. А пойти не знаю куда и взять открепительное удостоверение меня не хватило, да и времени особо не было.</p>
<p>И дело даже не в том, что я считаю ЕР и правда лучшим выбором и чем-то достойным для подражания. Не совсем так. Просто нельзя выключать старое работающее, не включив и не проверив работоспособнойть нового. Как функционировать, если старое уже выключено, а новое еще не может работать?</p>
<p>Когда-то в школе один из учителей говорил о том, что ЕР &#8211; это попытка реставрации системы власти СССР. И вот в 2011 году я вижу, что он был прав. Потому что другой работающей системы у нас нету. А подход &laquo;но надо же что-то делать, давайте например разрушим имеющуюся коррумпированную систему и посмотрим что из этого выйдет&raquo; &#8211; это что-то сильно далекое от реальности. </p>
<p>Если оппозиция так хороша, то где ее система? Почему у нее нет инфраструктуры, нету капитала, нету хозяйствующих руководителей (или есть но их отчего-то не видно)? А если и действительно нету, то как собственно она собирается управляться с тем чего не знает? Как оппозиция собралась править страной без штанов? Наверное у меня хочет отобрать. Почему, в конце-концов, вместо вышеперечисленного машина хайпа, флеш-мобов и медиавирусов &#8211; есть? Скептицизм.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mbeloshitsky.wordpress.com/613/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mbeloshitsky.wordpress.com/613/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mbeloshitsky.wordpress.com/613/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mbeloshitsky.wordpress.com/613/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mbeloshitsky.wordpress.com/613/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mbeloshitsky.wordpress.com/613/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mbeloshitsky.wordpress.com/613/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mbeloshitsky.wordpress.com/613/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mbeloshitsky.wordpress.com/613/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mbeloshitsky.wordpress.com/613/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mbeloshitsky.wordpress.com/613/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mbeloshitsky.wordpress.com/613/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mbeloshitsky.wordpress.com/613/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mbeloshitsky.wordpress.com/613/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=613&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mbeloshitsky.wordpress.com/2011/12/15/%d0%bf%d0%be%d1%81%d0%bb%d0%b5%d0%b2%d1%8b%d0%b1%d0%be%d1%80%d0%bd%d0%be%d0%b5-%d0%bf%d0%be%d0%bb%d0%b8%d1%82%d0%b8%d1%87%d0%bd%d0%be%d0%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ec71a3b16e734a0b4d0bba4b98e7eaf7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">mbeloshitsky</media:title>
		</media:content>
	</item>
		<item>
		<title>Иллюстрации в книгах</title>
		<link>http://mbeloshitsky.wordpress.com/2011/07/21/books-illustrations/</link>
		<comments>http://mbeloshitsky.wordpress.com/2011/07/21/books-illustrations/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 16:03:21 +0000</pubDate>
		<dc:creator>Michel Beloshitsky</dc:creator>
				<category><![CDATA[Заметки]]></category>
		<category><![CDATA[на полях]]></category>
		<category><![CDATA[литература]]></category>

		<guid isPermaLink="false">http://mbeloshitsky.wordpress.com/?p=602</guid>
		<description><![CDATA[Что-то неправильное есть в рисовании иллюстраций в художественные книжки. Я понимаю иллюстрировать что-нибудь легкое, ненавязчивое, журнал, газетную заметку, но Братьев Карамазовых. В произведение, куда надо вникать, над которым надо думать. Ну вот, вник, подумал выстроил некоторую картину у себя в голове, невольно появились образы главных и второстепенных героев. И потом нагло, на 500 странице начинаются [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=602&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Что-то неправильное есть в рисовании иллюстраций в художественные книжки. Я понимаю иллюстрировать что-нибудь легкое, ненавязчивое, журнал, газетную заметку, но Братьев Карамазовых. В произведение, куда надо вникать, над которым надо думать. Ну вот, вник, подумал выстроил некоторую картину у себя в голове, невольно появились образы главных и второстепенных героев.</p>
<p>И потом нагло, на 500 странице начинаются иллюстрации, которые сбивают, которые рушат все созданные моим сознанием образы. Ладно бы еще иллюстрации красивые были, а то ведь это какая-то невразумительная мазня шариковой ручкой двоечника художественного училища, проходящая по категории дадаизм и получившая в ней тройку.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mbeloshitsky.wordpress.com/602/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mbeloshitsky.wordpress.com/602/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mbeloshitsky.wordpress.com/602/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mbeloshitsky.wordpress.com/602/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mbeloshitsky.wordpress.com/602/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mbeloshitsky.wordpress.com/602/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mbeloshitsky.wordpress.com/602/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mbeloshitsky.wordpress.com/602/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mbeloshitsky.wordpress.com/602/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mbeloshitsky.wordpress.com/602/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mbeloshitsky.wordpress.com/602/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mbeloshitsky.wordpress.com/602/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mbeloshitsky.wordpress.com/602/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mbeloshitsky.wordpress.com/602/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=602&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mbeloshitsky.wordpress.com/2011/07/21/books-illustrations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ec71a3b16e734a0b4d0bba4b98e7eaf7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">mbeloshitsky</media:title>
		</media:content>
	</item>
		<item>
		<title>Как я научил WMP 12 играть MP4 с внешними субтитрами</title>
		<link>http://mbeloshitsky.wordpress.com/2010/11/05/disable-msmpeg2vdec/</link>
		<comments>http://mbeloshitsky.wordpress.com/2010/11/05/disable-msmpeg2vdec/#comments</comments>
		<pubDate>Fri, 05 Nov 2010 19:20:35 +0000</pubDate>
		<dc:creator>Michel Beloshitsky</dc:creator>
				<category><![CDATA[anime]]></category>
		<category><![CDATA[ПО]]></category>
		<category><![CDATA[codecs]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://mbeloshitsky.wordpress.com/?p=595</guid>
		<description><![CDATA[Глянул графэдитом на то, как рендерятся mp4 и обнаружил, что рендерятся они через микрософтовский кодек MSDTV-DVD или как-то так. И в этом вся проблема &#8211; когда рендеринг идет через него, DirectVobSub почему-то не цепляется и субтитры не кажет. Проблемка решается следующим образом: смените владельца файла msmpeg2vdec.dll (в директории C:\Windows\system32) на себя и переименуйте его в [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=595&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Глянул графэдитом на то, как рендерятся mp4 и обнаружил, что рендерятся они через микрософтовский кодек MSDTV-DVD или как-то так. И в этом вся проблема &#8211; когда рендеринг идет через него, DirectVobSub почему-то не цепляется и субтитры не кажет.</p>
<p>Проблемка решается следующим образом: смените владельца файла msmpeg2vdec.dll (в директории C:\Windows\system32) на себя и переименуйте его в msmpeg2vdec.dll.bak.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mbeloshitsky.wordpress.com/595/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mbeloshitsky.wordpress.com/595/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mbeloshitsky.wordpress.com/595/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mbeloshitsky.wordpress.com/595/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mbeloshitsky.wordpress.com/595/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mbeloshitsky.wordpress.com/595/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mbeloshitsky.wordpress.com/595/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mbeloshitsky.wordpress.com/595/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mbeloshitsky.wordpress.com/595/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mbeloshitsky.wordpress.com/595/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mbeloshitsky.wordpress.com/595/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mbeloshitsky.wordpress.com/595/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mbeloshitsky.wordpress.com/595/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mbeloshitsky.wordpress.com/595/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=595&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mbeloshitsky.wordpress.com/2010/11/05/disable-msmpeg2vdec/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ec71a3b16e734a0b4d0bba4b98e7eaf7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">mbeloshitsky</media:title>
		</media:content>
	</item>
		<item>
		<title>jQuery relaxed Each</title>
		<link>http://mbeloshitsky.wordpress.com/2010/10/06/jquery-relaxed-each/</link>
		<comments>http://mbeloshitsky.wordpress.com/2010/10/06/jquery-relaxed-each/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 17:24:27 +0000</pubDate>
		<dc:creator>Michel Beloshitsky</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://mbeloshitsky.wordpress.com/?p=584</guid>
		<description><![CDATA[Возникла тут у меня на практике интересная пограничная ситуация. Есть некоторое количество записей чего-нибудь там, по которому необходимо организовать поиск. Количество этих записей не такое уж и маленькое, чтобы обычный яваскрипт не тормозил, и, с другой стороны, не такое уж большое, чтобы организовывать поиск на сервере. Offtop: В идеальном случае, конечно всегда следует организовывать поиск [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=584&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Возникла тут у меня на практике интересная пограничная ситуация. Есть некоторое количество записей чего-нибудь там, по которому необходимо организовать поиск. Количество этих записей не такое уж и маленькое, чтобы обычный яваскрипт не тормозил, и, с другой стороны, не такое уж большое, чтобы организовывать поиск на сервере. <span id="more-584"></span></p>
<blockquote><p>
Offtop: В идеальном случае, конечно всегда следует организовывать поиск на сервере, и каким-нибудь сфинксом, а не доморощенными решениями. Но иногда делать эти ощутимые усилия не хочется, не хочется размазывать функцонал по звеньям, хочется чего-то клиентового.</p></blockquote>
<p> Короче говоря, у меня оказалось 1000-2000 штук и судя по задаче количество их не особо вырастет в будущем.  Поэтому поиск на сервере я делать не стал, а придумал мой расслабленный итератор.</p>
<p>Смысл его достаточно прост:</p>
<pre>
<font color="#708070">/* </font><font color="#7f9f7f">Asynchronous iterator */</font>
<font color="#f0dfaf"><b>function</b></font> <font color="#f0dfaf">next</font>(<font color="#f0dfaf">i</font>) {
   <font color="#f0dfaf"><b>if</b></font> (i &lt; collection.length)
      <font color="#f0dfaf"><b>return</b></font>
   handler.apply(collection[i], [])
   <font color="#f0dfaf"><b>if</b></font> (i % dutyCycle == 0) {
      setTimeout(<font color="#f0dfaf"><b>function</b></font> () { next (i + 1) }, 0)
   } <font color="#f0dfaf"><b>else</b></font> {
      next(i + 1)
   }
}

next(0) <font color="#708070">/* </font><font color="#7f9f7f">Run it */</font></pre>
<p>Да и вообще ничего выдающегося, кусочек достаточно легок. Но зато он так хорошо мне помог, что решил зарелизить. Тем более, что с гитхабом это делать стало очень легко.</p>
<p>Репозиторий: <a href="http://github.com/mbeloshitsky/jQuery.reeach">http://github.com/mbeloshitsky/jQuery.reeach</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mbeloshitsky.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mbeloshitsky.wordpress.com/584/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mbeloshitsky.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mbeloshitsky.wordpress.com/584/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mbeloshitsky.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mbeloshitsky.wordpress.com/584/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mbeloshitsky.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mbeloshitsky.wordpress.com/584/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mbeloshitsky.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mbeloshitsky.wordpress.com/584/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mbeloshitsky.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mbeloshitsky.wordpress.com/584/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mbeloshitsky.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mbeloshitsky.wordpress.com/584/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=584&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mbeloshitsky.wordpress.com/2010/10/06/jquery-relaxed-each/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ec71a3b16e734a0b4d0bba4b98e7eaf7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">mbeloshitsky</media:title>
		</media:content>
	</item>
		<item>
		<title>Туннельный синдром</title>
		<link>http://mbeloshitsky.wordpress.com/2010/09/28/%d1%82%d1%83%d0%bd%d0%bd%d0%b5%d0%bb%d1%8c%d0%bd%d1%8b%d0%b9-%d1%81%d0%b8%d0%bd%d0%b4%d1%80%d0%be%d0%bc/</link>
		<comments>http://mbeloshitsky.wordpress.com/2010/09/28/%d1%82%d1%83%d0%bd%d0%bd%d0%b5%d0%bb%d1%8c%d0%bd%d1%8b%d0%b9-%d1%81%d0%b8%d0%bd%d0%b4%d1%80%d0%be%d0%bc/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 17:03:47 +0000</pubDate>
		<dc:creator>Michel Beloshitsky</dc:creator>
				<category><![CDATA[Заметки]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[me]]></category>
		<category><![CDATA[туннельный синдром]]></category>
		<category><![CDATA[rsi]]></category>

		<guid isPermaLink="false">https://mbeloshitsky.wordpress.com/2010/09/28/%d1%82%d1%83%d0%bd%d0%bd%d0%b5%d0%bb%d1%8c%d0%bd%d1%8b%d0%b9-%d1%81%d0%b8%d0%bd%d0%b4%d1%80%d0%be%d0%bc/</guid>
		<description><![CDATA[Ничего сильно большого в своей жизни я еще не написал (ну почти), однако зачатки RSI уже дают о себе знать. Прежде всего на правой руке &#8212; той, которой я мышку держу. Внезапно стало понятно, зачем в емаксе все эти комбинации C-b, C-f и тому подобные. Сижу сейчас изучаю http://lionet.livejournal.com/71005.html и http://en.wikipedia.org/wiki/Repetitive_strain_injury. Заодним ищу нормальный Spatial [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=583&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ничего сильно большого в своей жизни я еще не написал (ну почти), однако зачатки RSI уже дают о себе знать. Прежде всего на правой руке &#8212; той, которой я мышку держу.</p>
<p>Внезапно стало понятно, зачем в емаксе все эти комбинации C-b, C-f и тому подобные. Сижу сейчас изучаю <a href="http://lionet.livejournal.com/71005.html">http://lionet.livejournal.com/71005.html</a> и <a href="http://en.wikipedia.org/wiki/Repetitive_strain_injury">http://en.wikipedia.org/wiki/Repetitive_strain_injury</a>.</p>
<p>Заодним ищу нормальный Spatial Navigation для chrome. Да даже надо ставить не его а какой-нибудь из vimperator’ов. Стрелочками тоже больно тыкать.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mbeloshitsky.wordpress.com/583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mbeloshitsky.wordpress.com/583/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mbeloshitsky.wordpress.com/583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mbeloshitsky.wordpress.com/583/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mbeloshitsky.wordpress.com/583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mbeloshitsky.wordpress.com/583/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mbeloshitsky.wordpress.com/583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mbeloshitsky.wordpress.com/583/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mbeloshitsky.wordpress.com/583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mbeloshitsky.wordpress.com/583/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mbeloshitsky.wordpress.com/583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mbeloshitsky.wordpress.com/583/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mbeloshitsky.wordpress.com/583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mbeloshitsky.wordpress.com/583/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=583&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mbeloshitsky.wordpress.com/2010/09/28/%d1%82%d1%83%d0%bd%d0%bd%d0%b5%d0%bb%d1%8c%d0%bd%d1%8b%d0%b9-%d1%81%d0%b8%d0%bd%d0%b4%d1%80%d0%be%d0%bc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ec71a3b16e734a0b4d0bba4b98e7eaf7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">mbeloshitsky</media:title>
		</media:content>
	</item>
		<item>
		<title>Екатеринбургская biennale</title>
		<link>http://mbeloshitsky.wordpress.com/2010/09/12/biennale/</link>
		<comments>http://mbeloshitsky.wordpress.com/2010/09/12/biennale/#comments</comments>
		<pubDate>Sun, 12 Sep 2010 10:04:24 +0000</pubDate>
		<dc:creator>Michel Beloshitsky</dc:creator>
				<category><![CDATA[Заметки]]></category>
		<category><![CDATA[на полях]]></category>
		<category><![CDATA[выставки]]></category>

		<guid isPermaLink="false">http://mbeloshitsky.wordpress.com/?p=576</guid>
		<description><![CDATA[Ездил я тут на первую Екатеринбургскую Bienalle. Ощущения от нее &#8211; ни в сказке сказать, ни пером описать. Выглядят конечно художники в наших краях странно, контрастно и необычно, потому что Урал в основе своей состоит из рабочих заводов, торговцев, бывших заключенных многочисленных колоний. Есть конечно и другие слои населения, но они немногочисленны и встречаются редко. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=576&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ездил я тут на первую Екатеринбургскую Bienalle. Ощущения от нее &#8211; ни в сказке сказать, ни пером описать. Выглядят конечно художники в наших краях странно, контрастно и необычно, потому что Урал в основе своей состоит из рабочих заводов, торговцев, бывших заключенных многочисленных колоний. </p>
<p>Есть конечно и другие слои населения, но они немногочисленны и встречаются редко. А тут такое художественное мероприятие.</p>
<p><a href="http://mbeloshitsky.files.wordpress.com/2010/09/24_09_2007_0268379001190637954_leonid_tishkov_i_boris_bendikov.jpg"><img src="http://mbeloshitsky.files.wordpress.com/2010/09/24_09_2007_0268379001190637954_leonid_tishkov_i_boris_bendikov.jpg?w=500" alt="" title="24_09_2007_0268379001190637954_leonid_tishkov_i_boris_bendikov"   class="aligncenter size-full wp-image-577" /></a><span id="more-576"></span></p>
<p>Я узнал много нового о современном искусстве, только почему-то все это &laquo;множество нового&raquo; сводилось к тому, что современный художник произведением искусства делает свою жизнь и не стоит ждать от него каких-либо результатов. Сильно пахло разпиздяйством, более того, по всем работам было видно, что создатель их не особо старался. Но я все-таки склонен думать, что это просто я не смог разглядеть. Где-то там, в глубинах их жизней художники тоже трудятся и, возможно, даже более лихо чем все мы, вместе взятые. Только это спрятано.</p>
<p>Трудно сказать, что именно помешало восприятию, то ли собачий холод, то ли формат проведения: если в типографии мы еще ходили сами, то по заводам нас уже водил экскурсовод. С одной стороны его присутствие было необходимо, потому что завод большой, а арт-объекты маленькие, легко заблудиться. С другой стороны экскурсовод был старательный и объяснял смысл каждого арт-объекта, а для меня это плохо: меня пронимает только тогда, когда я сам додумаюсь. В-третьих  на каждом из объектов мы находились не долее 2-3 минут (см. собачий холод), а для того чтобы понять самому времени требуется больше &#8211; с полчаса, наверное.</p>
<p>Не обошлось на биенале без политики: были опять какие-то  социальные работы про политику, наркотики и все-такое прочее. Как будто у нас ни у кого под боком нету мощной пропагандисткой машины, которая пытается кормить этим делом каждый божий день.</p>
<p>Но. Поворчать на такое мероприятие, особенно проводящееся в первый раз, конечно хорошо, но с другой стороны это самый легкий путь въехать в тему современного искусства какое бы оно ни было.</p>
<p>PS На картинке вверху: фотография одного из проектов &laquo;Частная луна&raquo;. Ребята соорудили луну и возят ее по всему миру. С помощью они регулярно превращают самые неромантические места в романтические. У нас они установили ее в одной неработающей градирне. Тоже стало романтично &#8211; лунная дорожка на воде, и вообще похоже.  (<a href="http://2photo.ru/2007/09/24/quotchastnaja_lunaquot_i_quotvizit_k_zvezdequot_fotografy_leonid_tishkov_i_boris_bendikov.html">больше картинок</a>)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mbeloshitsky.wordpress.com/576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mbeloshitsky.wordpress.com/576/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mbeloshitsky.wordpress.com/576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mbeloshitsky.wordpress.com/576/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mbeloshitsky.wordpress.com/576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mbeloshitsky.wordpress.com/576/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mbeloshitsky.wordpress.com/576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mbeloshitsky.wordpress.com/576/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mbeloshitsky.wordpress.com/576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mbeloshitsky.wordpress.com/576/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mbeloshitsky.wordpress.com/576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mbeloshitsky.wordpress.com/576/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mbeloshitsky.wordpress.com/576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mbeloshitsky.wordpress.com/576/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=576&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mbeloshitsky.wordpress.com/2010/09/12/biennale/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ec71a3b16e734a0b4d0bba4b98e7eaf7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">mbeloshitsky</media:title>
		</media:content>

		<media:content url="http://mbeloshitsky.files.wordpress.com/2010/09/24_09_2007_0268379001190637954_leonid_tishkov_i_boris_bendikov.jpg" medium="image">
			<media:title type="html">24_09_2007_0268379001190637954_leonid_tishkov_i_boris_bendikov</media:title>
		</media:content>
	</item>
		<item>
		<title>Пара слов о емаксе под windows 7</title>
		<link>http://mbeloshitsky.wordpress.com/2010/09/05/emacs-win/</link>
		<comments>http://mbeloshitsky.wordpress.com/2010/09/05/emacs-win/#comments</comments>
		<pubDate>Sun, 05 Sep 2010 17:44:45 +0000</pubDate>
		<dc:creator>Michel Beloshitsky</dc:creator>
				<category><![CDATA[ПО]]></category>
		<category><![CDATA[bells&whistles]]></category>
		<category><![CDATA[emacs]]></category>

		<guid isPermaLink="false">http://mbeloshitsky.wordpress.com/?p=548</guid>
		<description><![CDATA[Если установить емакс в w7 и закрепить его в супербаре, при повторном запуске из супербара появляется мерзкое консольное окошко. runemacs.exe тут не поможет, так как если мы закрепим в супербаре его &#8211; открытый emacs.exe будет висеть отдельным квадратиком. Тоже некрасиво. Чтобы сделать красиво надо пропатчить emacs.exe с помощью pe tools. Процесс выглядит примерно так. Кстати, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=548&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Если установить емакс в w7 и закрепить его в супербаре, при повторном запуске из супербара появляется мерзкое консольное окошко.</p>
<p>runemacs.exe тут не поможет, так как если мы закрепим в супербаре его &#8211; открытый emacs.exe будет висеть отдельным квадратиком. Тоже некрасиво. </p>
<p>Чтобы сделать красиво надо пропатчить emacs.exe с помощью pe tools. Процесс выглядит примерно так. </p>
<p><a href="http://mbeloshitsky.files.wordpress.com/2010/09/1.png"><img src="http://mbeloshitsky.files.wordpress.com/2010/09/1.png?w=500" alt="" title="1"   class="aligncenter size-full wp-image-549" /></a></p>
<p>Кстати, если емакс у вас лежит в Program Files PE Tools просто сделает серыми кнопочки Ok ничего не сказав по поводу того, что ему не хватает доступа. Имейте ввиду.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mbeloshitsky.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mbeloshitsky.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mbeloshitsky.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mbeloshitsky.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mbeloshitsky.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mbeloshitsky.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mbeloshitsky.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mbeloshitsky.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mbeloshitsky.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mbeloshitsky.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mbeloshitsky.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mbeloshitsky.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mbeloshitsky.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mbeloshitsky.wordpress.com/548/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=548&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mbeloshitsky.wordpress.com/2010/09/05/emacs-win/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ec71a3b16e734a0b4d0bba4b98e7eaf7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">mbeloshitsky</media:title>
		</media:content>

		<media:content url="http://mbeloshitsky.files.wordpress.com/2010/09/1.png" medium="image">
			<media:title type="html">1</media:title>
		</media:content>
	</item>
		<item>
		<title>Некое подобие &#171;use strict&#187; для node.js</title>
		<link>http://mbeloshitsky.wordpress.com/2010/08/27/node-js-strict/</link>
		<comments>http://mbeloshitsky.wordpress.com/2010/08/27/node-js-strict/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 20:11:18 +0000</pubDate>
		<dc:creator>Michel Beloshitsky</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[strict]]></category>

		<guid isPermaLink="false">http://mbeloshitsky.wordpress.com/?p=526</guid>
		<description><![CDATA[Недавно в группе node.js был поднят вопрос о том, когда же появится обещаемый спецификацией ECMAScript 5 режим "use strict". Проблема конечно насущная, учитывая особенностями обращения яваскрипта с глобальными переменными и использования прототипной модели. С другой стороны это как раз что-то из разряда &#171;за что ненавидим, за то и любим&#187;. И насколько эта проблема насущная, настолько [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=526&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Недавно в группе node.js был <a href="http://groups.google.com/group/nodejs/browse_thread/thread/be33d9549053c4ad">поднят вопрос</a> о том, когда же появится обещаемый спецификацией ECMAScript 5 режим <code>"use strict"</code>.</p>
<p>Проблема конечно насущная, учитывая особенностями обращения яваскрипта с глобальными переменными и использования прототипной модели. С другой стороны это как раз что-то из разряда &laquo;за что ненавидим, за то и любим&raquo;.</p>
<p>И насколько эта проблема насущная, настолько же и трудноразрешимая, потому что по этому поводу надо теребить разработчиков v8, а у них роадмап не располагает.</p>
<blockquote><p>2010 &#8211; Q2 &#8211; Make V8 faster<br />
2010 &#8211; Q3 &#8211; Make V8 faster<br />
2010 &#8211; Q4 &#8211; Make V8 faster<br />
2011 &#8211; Q1 &#8211; Make V8 faster<br />
2011 &#8211; Q2 &#8211; Make V8 faster<br />
2011 &#8211; Q3 &#8211; Release quantum entanglement device<br />
2011 &#8211; Q4 &#8211; Make V8 faster<br />
(<a href="http://groups.google.com/group/v8-users/browse_thread/thread/bc8742cae8598558/693dccca3e9a86a4?show_docid=693dccca3e9a86a4">источник</a>)</p></blockquote>
<p>У меня есть решение, в принципе выполняющее то, что от него нужно:</p>
<pre>
<font color="#f0dfaf"><b>function</b></font> <font color="#f0dfaf">strict</font> (<font color="#f0dfaf">fun</font>) {
   <font color="#f0dfaf"><b>var</b></font> <font color="#f0dfaf">sandbox</font> = {}, <font color="#f0dfaf">err</font> = <font color="#dca3a3"><b>null</b></font>

   process.binding(<font color="#cc9393">'evals'</font>).Script
        .runInNewContext(<font color="#cc9393">'('</font>+fun.toString()+<font color="#cc9393">')()'</font>,sandbox);

   <font color="#708070">/* </font><font color="#7f9f7f">Check sandbox for new members. Each of them is an error */</font>
   <font color="#f0dfaf"><b>for</b></font> (err <font color="#f0dfaf"><b>in</b></font> sandbox)
      console.error(<font color="#cc9393">'Undeclarated variable: '</font>+ err)
   <font color="#f0dfaf"><b>if</b></font> (err)
      <font color="#f0dfaf"><b>throw</b></font> <font color="#cc9393">'Strict mode violation'</font>
}</pre>
<p>Основную задачу &#8211; изоляцию кода от глобальных переменных он выполняет. Однако с недостатками:
<ol>
<li>как видно из исходника проверка на объявление глобальных переменных осуществляется только после того, как весь код отработает. Вообще в асинхронном окружении node.js, где любой кусок кода должен выполняться за миллисекунды это не проблема. Но тем не менее, возможно это не достаточно надежно для конструкции языка, которая не должна закладываться на синхронность-асинхронность.</li>
<li> 2) некие проблемы с взаимодействием с внешним кодом. Очень уж <code>strict</code> выходит.</li>
</ol>
<p>Есть еще одно <a href="http://groups.google.com/group/nodejs/browse_thread/thread/6269065669c17e79?hl=en">решение </a>- мониторить объект global по таймеру в рантайме. Такое же, что и мое: не совсем академично (даже возможно забавно &#8211; по таймеру чекать глобалсы), но оно работает.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mbeloshitsky.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mbeloshitsky.wordpress.com/526/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mbeloshitsky.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mbeloshitsky.wordpress.com/526/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mbeloshitsky.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mbeloshitsky.wordpress.com/526/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mbeloshitsky.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mbeloshitsky.wordpress.com/526/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mbeloshitsky.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mbeloshitsky.wordpress.com/526/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mbeloshitsky.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mbeloshitsky.wordpress.com/526/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mbeloshitsky.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mbeloshitsky.wordpress.com/526/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=526&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mbeloshitsky.wordpress.com/2010/08/27/node-js-strict/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ec71a3b16e734a0b4d0bba4b98e7eaf7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">mbeloshitsky</media:title>
		</media:content>
	</item>
		<item>
		<title>B+ Tree на Javascript</title>
		<link>http://mbeloshitsky.wordpress.com/2010/08/21/b-tree-js/</link>
		<comments>http://mbeloshitsky.wordpress.com/2010/08/21/b-tree-js/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 19:42:22 +0000</pubDate>
		<dc:creator>Michel Beloshitsky</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[map-reduce]]></category>

		<guid isPermaLink="false">http://mbeloshitsky.wordpress.com/?p=517</guid>
		<description><![CDATA[/** * btree.js - plain javascript b+tree implementation. * * 2010, Michel Belohshitsky * * Placed in public domain. */ function btree(order) { /* Our tree basic structure. */ var tree = {node:[{leaf:[]}]} /* Insert value (k-v) in the node or lead "n". Return null or new k-v pair which we need to insert in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=517&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<pre>
<font color="#add8e6">/**</font><font color="#add8e6">
 * btree.js - plain javascript b+tree implementation.
 *
 * 2010, Michel Belohshitsky
 *
 * Placed in public domain.
 */</font></pre>
<p><span id="more-517"></span>
<pre>
<font color="#afeeee"><b>function</b></font> <font color="#7fffd4"><b>btree</b></font>(<font color="#40e0d0"><b>order</b></font>) {

   <font color="#add8e6">/* </font><font color="#add8e6">Our tree basic structure. */</font>
   <font color="#afeeee"><b>var</b></font> <font color="#40e0d0"><b>tree</b></font> = {node:[{leaf:[]}]}

   <font color="#add8e6">/* </font><font color="#add8e6">Insert value (k-v) in the node or lead "n". Return null or new
      k-v pair which we need to insert in parent node. */</font>
   <font color="#afeeee"><b>function</b></font> <font color="#7fffd4"><b>insAtomic</b></font> (<font color="#40e0d0"><b>n</b></font>, <font color="#40e0d0"><b>k</b></font>, <font color="#40e0d0"><b>v</b></font>) {
      <font color="#afeeee"><b>var</b></font> <font color="#40e0d0"><b>pos</b></font>, <font color="#40e0d0"><b>retval</b></font>, <font color="#40e0d0"><b>arr</b></font> = n.leaf || n.node, <font color="#40e0d0"><b>isNode</b></font> = n.node !== <font color="#98fb98">undefined</font>

      <font color="#add8e6">/* </font><font color="#add8e6">Find position to insert k-v to */</font>
      pos = isNode ? 1 : 0; <font color="#afeeee"><b>while</b></font> (k &gt;= arr[pos] &amp;&amp; pos &lt; arr.length) pos+=2

      <font color="#add8e6">/* </font><font color="#add8e6">Insert k-v */</font>
      arr.splice(pos, 0, k, v)

      <font color="#add8e6">/* </font><font color="#add8e6">Check for order overflow */</font>
      <font color="#afeeee"><b>if</b></font> (arr.length / 2 &gt; order) {
         <font color="#add8e6">/* </font><font color="#add8e6">Split if so */</font>
         retval = arr.splice(Math.ceil(order / 2) * 2, arr.length)
         <font color="#afeeee"><b>if</b></font> (isNode) {
            <font color="#afeeee"><b>return</b></font> [arr.pop(), {node:retval}]
         } <font color="#afeeee"><b>else</b></font> {
            <font color="#afeeee"><b>return</b></font> [retval[0], {leaf:retval}]
         }
      }
      <font color="#afeeee"><b>return</b></font> <font color="#98fb98">null</font>
   }

   <font color="#add8e6">/* </font><font color="#add8e6">Find value by key. Returns
      [value, position in leaf, value path]. */</font>
   <font color="#afeeee"><b>function</b></font> <font color="#7fffd4"><b>find</b></font>(<font color="#40e0d0"><b>k</b></font>) {
      <font color="#afeeee"><b>var</b></font> <font color="#40e0d0"><b>curr</b></font> = tree.node, <font color="#40e0d0"><b>pos</b></font>, <font color="#40e0d0"><b>i</b></font>, <font color="#40e0d0"><b>path</b></font> = [tree]

      <font color="#afeeee"><b>while</b></font> (<font color="#98fb98">true</font>) {

         <font color="#add8e6">/* </font><font color="#add8e6">Find desired range in node */</font>
         pos = 1; <font color="#afeeee"><b>while</b></font> (k &gt;= curr[pos] &amp;&amp; pos &lt; curr.length) pos+=2

         path.push(curr[pos-1])

         <font color="#add8e6">/* </font><font color="#add8e6">If found child is node */</font>
         <font color="#afeeee"><b>if</b></font> (curr[pos-1].node) {
            <font color="#add8e6">/* </font><font color="#add8e6">Continue search */</font>
            curr = curr[pos-1].node
         } <font color="#afeeee"><b>else</b></font> <font color="#afeeee"><b>if</b></font> (curr[pos-1].leaf) {
            curr = curr[pos-1].leaf

            <font color="#add8e6">/* </font><font color="#add8e6">Else it may be leaf - search leaf for key */</font>
            pos = 0; <font color="#afeeee"><b>while</b></font> (k !== curr[pos] &amp;&amp; pos &lt; curr.length) pos+=2

            <font color="#add8e6">/* </font><font color="#add8e6">Return found key or null */</font>
            <font color="#afeeee"><b>return</b></font> [curr[pos+1], pos, path]
         } <font color="#afeeee"><b>else</b></font> {
            <font color="#add8e6">/* </font><font color="#add8e6">Wrong way (e.g. possible in {node:[ptr1,key]} case) -
             * also null */</font>
            <font color="#afeeee"><b>return</b></font> [curr[pos-1], pos, path]
         }
      }
   }

   <font color="#add8e6">/* </font><font color="#add8e6">Weak deletion here */</font>
   <font color="#afeeee"><b>function</b></font> <font color="#7fffd4"><b>weakDel</b></font> (<font color="#40e0d0"><b>k</b></font>) {
      <font color="#afeeee"><b>var</b></font> <font color="#40e0d0"><b>found</b></font> = find(k), <font color="#40e0d0"><b>curr</b></font>, <font color="#40e0d0"><b>i</b></font>
      <font color="#afeeee"><b>if</b></font> (!found[0] || !found[2] || !(curr = found[2].pop()).leaf)
         <font color="#afeeee"><b>return</b></font> <font color="#98fb98">false</font>

      <font color="#add8e6">/* </font><font color="#add8e6">Delete value */</font>
      curr.leaf.splice(found[1], 2)

      <font color="#add8e6">/* </font><font color="#add8e6">Cascade delete keys if needed */</font>
      <font color="#afeeee"><b>while</b></font> (!(curr.leaf || curr.node).length) {
         <font color="#add8e6">/* </font><font color="#add8e6">Mark object for deletion*/</font>
         curr.todelete = <font color="#98fb98">true</font>

         <font color="#add8e6">/* </font><font color="#add8e6">Find link for it in parent */</font>
         curr = found[2].pop()
         i = 0; <font color="#afeeee"><b>while</b></font> ( !(curr.leaf || curr.node)[i].todelete ) i+=2

         <font color="#add8e6">/* </font><font color="#add8e6">Delete it */</font>
         <font color="#afeeee"><b>if</b></font> (found[2].length || curr.node.length &gt; 1)
            (curr.leaf || curr.node).splice(i, 2)
         <font color="#afeeee"><b>else</b></font>
            curr.node[i] = {leaf:[]} <font color="#add8e6">/* </font><font color="#add8e6">Here we handle special case
                                        when deleting from top. Our
                                        tree must has at least
                                        {node:{leaf:[]}} structure so
                                        we should not delete more
                                        objects that we can. */</font>
         <font color="#add8e6">/* </font><font color="#add8e6">If we are at the top */</font>
         <font color="#afeeee"><b>if</b></font> (!found[2].length &amp;&amp; curr.node.length == 1) {
            <font color="#add8e6">/* </font><font color="#add8e6">Rebase tree */</font>
            <font color="#afeeee"><b>if</b></font> (!curr.node[0].leaf) {
               tree = curr.node[0]
               curr = tree
            }
         }
      }
      <font color="#afeeee"><b>return</b></font> <font color="#98fb98">true</font>
   }

   <font color="#afeeee"><b>function</b></font> <font color="#7fffd4"><b>put</b></font> (<font color="#40e0d0"><b>k</b></font>, <font color="#40e0d0"><b>v</b></font>) {

      <font color="#afeeee"><b>var</b></font> <font color="#40e0d0"><b>found</b></font> = find(k), <font color="#40e0d0"><b>top</b></font> = found[2].pop(), <font color="#40e0d0"><b>next</b></font>

      <font color="#add8e6">/* </font><font color="#add8e6">Insert and split if needed */</font>
      <font color="#afeeee"><b>while</b></font>(next = insAtomic(top, k, v)) {
         <font color="#afeeee"><b>if</b></font> (top.leaf)
            top.next = next[1]

         <font color="#afeeee"><b>if</b></font> (!found[2].length) {
            <font color="#add8e6">/* </font><font color="#add8e6">Rebase tree case */</font>
            top = tree = {node:[top]}
         } <font color="#afeeee"><b>else</b></font> {
            top = found[2].pop()
         }
         k = next[0]; v = next[1]
      }
   }

   <font color="#afeeee"><b>function</b></font> <font color="#7fffd4"><b>first</b></font> () {
      <font color="#afeeee"><b>var</b></font> <font color="#40e0d0"><b>curr</b></font> = tree, <font color="#40e0d0"><b>stack</b></font> = []
      <font color="#afeeee"><b>while</b></font> (!curr.leaf) {
         stack.push(curr)
         curr = curr.node[0]
      }
      stack.push(curr)
      <font color="#add8e6">/* </font><font color="#add8e6">Find compatible output */</font>
      <font color="#afeeee"><b>return</b></font> [curr.leaf[1], 0, stack]
   }

   <font color="#afeeee"><b>function</b></font> <font color="#7fffd4"><b>iterate</b></font>(<font color="#40e0d0"><b>s</b></font>, <font color="#40e0d0"><b>e</b></font>, <font color="#40e0d0"><b>cb</b></font>) {
      <font color="#afeeee"><b>var</b></font> <font color="#40e0d0"><b>found</b></font> = s !== <font color="#98fb98">null</font> ? find(s) : first()

      <font color="#add8e6">/* </font><font color="#add8e6">Find first key */</font>
      <font color="#afeeee"><b>if</b></font> (found) {
         <font color="#afeeee"><b>var</b></font> <font color="#40e0d0"><b>part</b></font> = found[2].pop()
         <font color="#afeeee"><b>var</b></font> <font color="#40e0d0"><b>pos</b></font> = found[1]
         cb(<font color="#87cefa">'start'</font>)
      } <font color="#afeeee"><b>else</b></font> {
         cb(<font color="#87cefa">'error'</font>, 1)
      }

      <font color="#afeeee"><b>while</b></font> (part.leaf[pos+1] !== <font color="#98fb98">undefined</font>) {

         <font color="#afeeee"><b>if</b></font> (part.leaf[pos] &gt; e || (part.leaf[pos+2] === <font color="#98fb98">undefined</font> &amp;&amp; !part.next))
            <font color="#afeeee"><b>return</b></font> cb(<font color="#87cefa">'end'</font>)     

         cb(<font color="#87cefa">'k-v'</font>, part.leaf[pos], part.leaf[pos+1])

         <font color="#afeeee"><b>if</b></font> (part.leaf[pos+2] !== <font color="#98fb98">undefined</font>) {
            pos +=2
         } <font color="#afeeee"><b>else</b></font> {
            part = part.next; pos = 0
         }
      }
      cb(<font color="#87cefa">'end'</font>)
   }

   <font color="#add8e6">/* </font><font color="#add8e6">Public interface.

      Members used for debug commented out. You may enable it again,
      for e.g. look at internal structure or better understandance how
      staff works. */</font>
   <font color="#afeeee"><b>return</b></font> {
      put: put,
      <font color="#7fffd4"><b>get</b></font>: <font color="#afeeee"><b>function</b></font> (<font color="#40e0d0"><b>k</b></font>) { <font color="#afeeee"><b>return</b></font> find(k)[0] },
      del: weakDel,
      iter: iterate,
      <font color="#add8e6">// </font><font color="#add8e6">f:first,
</font>      <font color="#add8e6">// </font><font color="#add8e6">find: find,
</font>      <font color="#add8e6">// </font><font color="#add8e6">insAtomic: insAtomic,
</font>      <font color="#add8e6">// </font><font color="#add8e6">tree: function () { return tree }
</font>   }
}</pre>
<p>Игры с <a href="http://mbeloshitsky.wordpress.com/2010/07/19/assou/">map-reduce</a> продолжаются. На этот раз написано то, что ляжет в основу хранилища данных для моего assou.</p>
<p>Осталось лишь продумать механиза синхронизации всего этого дела в файлы и можно будет выпускать на волю.</p>
<p>Смущает лишь отсутствие у меня профильного образования: наверняка я уже где-то прокололся, и проколюсь еще раз. Но экспериментировать-то с другой стороны мне это не мешает.</p>
<p>Запустил в консоли разработчиков хромиума нехитрое</p>
<pre><font color="#afeeee"><b>var</b></font> <font color="#40e0d0"><b>bt</b></font> = btree(16), <font color="#40e0d0"><b>i</b></font>
   <font color="#afeeee"><b>for</b></font> (i = 0; i &lt; 1000000; i++) bt.put(i,<font color="#87cefa">'r'</font>+i)</pre>
<p>Памяти заняло все это хозяйство 133Мб. Не так много, учитывая что простой хэш из миллиона подобных элементов занял 86Мб.</p>
<p>Потом запустил:</p>
<pre><font color="#afeeee"><b>for</b></font> (i = 0; i &lt; 300000; i++) bt.del(i)</pre>
<p>Хром подождал минуты 2 и освободил пропорциональный кусок памяти. Сборка мусора работает, это хорошо, значит безумная идея близка к реализации.</p>
<p>Сейчас даже вижу несколько путей по повышению производительности этой реализации. За исключением переписывания на ЯП больше яваскрипта подходящем для таких целей (это неспортивно) можно искать в узлах дерева не при помощи while (как делается сейчас), а бинарным поиском. Это улучшит произовдительность на деревьях большого порядка <code>btree(N)</code>, где <code>N ~ &gt;= 40</code>. Но пока есть дела поважнее, я просто запишу здесь, чтобы не забыть.</p>
<p>Еще можно поработать с удалением: сейчас реализован т.н. &laquo;слабый&raquo; алгоритм удаления &#8211; узел удаляется только когда он полностью пуст. Есть и <a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.4051&amp;rep=rep1&amp;type=pdf">другие подходы</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mbeloshitsky.wordpress.com/517/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mbeloshitsky.wordpress.com/517/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mbeloshitsky.wordpress.com/517/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mbeloshitsky.wordpress.com/517/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mbeloshitsky.wordpress.com/517/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mbeloshitsky.wordpress.com/517/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mbeloshitsky.wordpress.com/517/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mbeloshitsky.wordpress.com/517/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mbeloshitsky.wordpress.com/517/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mbeloshitsky.wordpress.com/517/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mbeloshitsky.wordpress.com/517/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mbeloshitsky.wordpress.com/517/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mbeloshitsky.wordpress.com/517/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mbeloshitsky.wordpress.com/517/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=517&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mbeloshitsky.wordpress.com/2010/08/21/b-tree-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ec71a3b16e734a0b4d0bba4b98e7eaf7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">mbeloshitsky</media:title>
		</media:content>
	</item>
		<item>
		<title>NieA under 7</title>
		<link>http://mbeloshitsky.wordpress.com/2010/08/21/niea-under-7/</link>
		<comments>http://mbeloshitsky.wordpress.com/2010/08/21/niea-under-7/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 18:17:57 +0000</pubDate>
		<dc:creator>Michel Beloshitsky</dc:creator>
				<category><![CDATA[anime]]></category>

		<guid isPermaLink="false">http://mbeloshitsky.wordpress.com/?p=512</guid>
		<description><![CDATA[Абэ ещё ни разу меня не разочаровал.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=512&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/NieA_7"><img src="http://mbeloshitsky.files.wordpress.com/2010/08/niea_7_01.jpg?w=500" alt="" title="niea_7_01"   class="aligncenter size-full wp-image-513" /></a></p>
<p><a href="http://ru.wikipedia.org/wiki/%D0%90%D0%B1%D1%8D,_%D0%81%D1%81%D0%B8%D1%82%D0%BE%D1%81%D0%B8">Абэ</a> ещё ни разу меня не разочаровал.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mbeloshitsky.wordpress.com/512/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mbeloshitsky.wordpress.com/512/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mbeloshitsky.wordpress.com/512/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mbeloshitsky.wordpress.com/512/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mbeloshitsky.wordpress.com/512/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mbeloshitsky.wordpress.com/512/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mbeloshitsky.wordpress.com/512/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mbeloshitsky.wordpress.com/512/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mbeloshitsky.wordpress.com/512/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mbeloshitsky.wordpress.com/512/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mbeloshitsky.wordpress.com/512/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mbeloshitsky.wordpress.com/512/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mbeloshitsky.wordpress.com/512/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mbeloshitsky.wordpress.com/512/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mbeloshitsky.wordpress.com&amp;blog=7766195&amp;post=512&amp;subd=mbeloshitsky&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mbeloshitsky.wordpress.com/2010/08/21/niea-under-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ec71a3b16e734a0b4d0bba4b98e7eaf7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">mbeloshitsky</media:title>
		</media:content>

		<media:content url="http://mbeloshitsky.files.wordpress.com/2010/08/niea_7_01.jpg" medium="image">
			<media:title type="html">niea_7_01</media:title>
		</media:content>
	</item>
	</channel>
</rss>
