<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2russianfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Sellme.ru</title><link>http://sellme.ru/</link><language>en</language><lastBuildDate>Fri, 05 Mar 2010 01:51:17 PST</lastBuildDate><generator>Movable Type 4.31-en http://www.sixapart.com/movabletype/</generator><feedburner:info uri="sellme" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><description></description><creativeCommons:license>http://creativecommons.org/licenses/by-nd/2.0/</creativeCommons:license><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://www.sellme.ru/rss/" /><feedburner:emailServiceId>SellMe</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Fwww.sellme.ru%2Frss%2F" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Fwww.sellme.ru%2Frss%2F" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Fwww.sellme.ru%2Frss%2F" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://www.sellme.ru/rss/" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Fwww.sellme.ru%2Frss%2F" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Fwww.sellme.ru%2Frss%2F" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Fwww.sellme.ru%2Frss%2F" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://lenta.yandex.ru/settings.xml?name=feed&amp;url=http%3A%2F%2Fwww.sellme.ru%2Frss%2F" src="http://lenta.yandex.ru/i/addfeed.gif">?????? ? ??????.?????</feedburner:feedFlare><feedburner:feedFlare href="http://www.addtoany.com/?linkname=Sellme.ru&amp;linkurl=http%3A%2F%2Fwww.sellme.ru%2Frss%2F&amp;type=feed" src="http://www.addtoany.com/addfr-b.gif">Add to Any Feed Reader</feedburner:feedFlare><feedburner:browserFriendly>This is a feed. You need to use an aggregator to subscribe to it.</feedburner:browserFriendly><item><title>How to Start Your Own Business...</title><link>http://sellme.ru/2010/03/how-to-start-your-own-business.html</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dmitry@sellme.ru (Dmitry Chestnykh)</dc:creator><pubDate>Fri, 05 Mar 2010 01:51:17 PST</pubDate><guid isPermaLink="false">tag:sellme.ru,2010://1.1110</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
        <p><img src="http://sellme.ru/pics/saws.gif" alt="Free Plan!" border="0" width="394" height="1137" /></p>

<p>(<a href="http://books.google.com/books?id=qSEDAAAAMBAJ&amp;lpg=PP1&amp;pg=RA2-PA259#v=onepage&amp;q=&amp;f=true">Popular Science</a>, март 1952)</p>

        

    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SellMe?a=PewPHH_71WE:akZ8MI0nMGg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SellMe?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded><description> (Popular Science, март 1952)...</description></item><item><title>Cathodique</title><link>http://sellme.ru/2010/03/cathodique.html</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dmitry@sellme.ru (Dmitry Chestnykh)</dc:creator><pubDate>Tue, 02 Mar 2010 04:15:23 PST</pubDate><guid isPermaLink="false">tag:sellme.ru,2010://1.1109</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
        <ol>
<li>Я устал от того, что MacBook Air тормозил при просмотре видюшек с YouTube.</li>
<li>Я хотел отдельный плеер (что-то вроде Totem в Ubuntu) для просмотра ютюба.</li>
</ol>

<p>Поэтому я написал <a href="http://www.codingrobots.com/cathodique/">Cathodique</a>, простой YouTube-плеер для Мака.</p>

<p><img src="http://sellme.ru/pics/cathodique-screenshot-500.jpg" alt="Cathodique, плеер для YouTube" border="0" width="500" height="303" /></p>

<p>Он играет видео через встроенный Quick Time, поэтому жрет меньше CPU, чем Flash:</p>

<p><img src="http://www.codingrobots.com/wp-content/uploads/2010/03/cathodique_cpu.png" alt="CPU Usage" width="203" height="158" /></p>

<p>(Это примерные графики для MacBook. MacBook Air я даже не мерил, потому что он может взорваться от просмотра 1080p).</p>

<p>Ну и, конечно, просто удобно искать по YouTube. А самая главная фича — отсутствие комментов!</p>

<p><a href="http://www.codingrobots.com/cathodique">Попробуйте</a>. </p>

<p>(Чтоб вы не испугались: штука платная, пока стоит $14. Пробная версия работает 30 дней.)</p>

        

    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SellMe?a=mGVx8FTV4OA:dCIe0xNJpg0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SellMe?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded><description> Я устал от того, что MacBook Air тормозил при просмотре видюшек с YouTube. Я хотел отдельный плеер (что-то вроде Totem в Ubuntu) для просмотра ютюба. Поэтому я написал Cathodique, простой YouTube-плеер для Мака. Он играет видео через встроенный Quick...</description></item><item><title>ScreenSketcher</title><link>http://sellme.ru/2010/02/screensketcher.html</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dmitry@sellme.ru (Dmitry Chestnykh)</dc:creator><pubDate>Thu, 25 Feb 2010 08:07:02 PST</pubDate><guid isPermaLink="false">tag:sellme.ru,2010://1.1108</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
        <p>Сегодня выпустили новый продукт для Windows.</p>

<p>Примерно так выглядит:</p>

<p><img src="http://sellme.ru/pics/screensketcher.png" alt="screensketcher.png" border="0" width="386" height="300" /></p>

<p>Сайт: <a href="http://www.codingrobots.com/screensketcher/">http://www.codingrobots.com/screensketcher/</a></p>

        

    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SellMe?a=XbXw3YOvT44:OqMb8Tt8hYo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SellMe?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded><description>Сегодня выпустили новый продукт для Windows. Примерно так выглядит: Сайт: http://www.codingrobots.com/screensketcher/...</description></item><item><title>Dear Steve Jobs,</title><link>http://sellme.ru/2010/02/dear-steve-jobs.html</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dmitry@sellme.ru (Dmitry Chestnykh)</dc:creator><pubDate>Tue, 09 Feb 2010 03:58:25 PST</pubDate><guid isPermaLink="false">tag:sellme.ru,2010://1.1107</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
        <p>Please fuck these dickheads</p>

<p><img src="http://sellme.ru/pics/ipods.jpg" alt="ipods.jpg" border="0" width="508" height="568" /></p>

<p>Thanks,<br>
D.</p>

        

    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SellMe?a=5cHjbQcKQEs:5kLlRPRuM5c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SellMe?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded><description>Please fuck these dickheads Thanks, D....</description></item><item><title>Лучше бы молчали</title><link>http://sellme.ru/2010/02/luchshe-bi-molchali.html</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dmitry@sellme.ru (Dmitry Chestnykh)</dc:creator><pubDate>Sun, 07 Feb 2010 05:23:21 PST</pubDate><guid isPermaLink="false">tag:sellme.ru,2010://1.1106</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
        <p><strong>Акт первый</strong></p>

<ol>
<li><p>Kevin Lynch, CTO Adobe, <a href="http://blogs.adobe.com/conversations/2010/02/open_access_to_content_and_app.html#comment-2137153">постит комментарий</a>, в котором утверждает, что во
Flash нет известных багов, приводящих к аварийному завершению
плагина/браузера (&#8220;Regarding crashing, I can tell you that we don&#8217;t
ship Flash with any known crash bugs&#8221;).</p></li>
<li><p>Matthew Dempsky делает страницу, которая демонстрирует аварийное завершение
Flash и говорит, что он сообщил Adobe об этом баге еще в сентябре 2008.
(<a href="http://flashcrash.dempsky.org/">ссылка</a> &#8212; осторожно, браузер или Flash могут упасть).</p></li>
<li><p>Adobe <a href="http://blogs.adobe.com/emmy/archives/2010/02/flash_bug_repor.html">приносят извинения</a> и говорят, что нечаянно пометили этот баг для
исправления в следующей версии, вместо той, которую собирались выпускать.</p></li>
</ol>

<p><strong>Акт второй</strong></p>

<p>Работник Adobe <a href="http://blogs.adobe.com/open/2010/02/following_the_open_trail.html">пишет</a> о том, почему они не откроют исходники Flash.
Причина: во Flash есть код, которым Adobe не владеет (например, декодер H.264).</p>

<p>Мне кажется, американским властям нужно срочно проверить, не нарушает ли Adobe
законы по использованию детского труда. Я не верю, что взрослый человек мог
представить общественности такой аргумент. </p>

        

    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SellMe?a=WzE1ztbkdd4:W4Z_E6ZbRN0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SellMe?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded><description>Акт первый Kevin Lynch, CTO Adobe, постит комментарий, в котором утверждает, что во Flash нет известных багов, приводящих к аварийному завершению плагина/браузера (“Regarding crashing, I can tell you that we don’t ship Flash with any known crash bugs”). Matthew Dempsky...</description></item><item><title>Красные волнистые линии</title><link>http://sellme.ru/2010/02/krasnie-volnistie-linii.html</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dmitry@sellme.ru (Dmitry Chestnykh)</dc:creator><pubDate>Sat, 06 Feb 2010 05:08:17 PST</pubDate><guid isPermaLink="false">tag:sellme.ru,2010://1.1105</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
        <p>Вышла новая бета-версия BlogJet 2.5 с &#8220;живой&#8221; проверкой орфографии:</p>

<p><img
src="http://www.codingrobots.com/wp-content/uploads/2010/02/blogjet-live-spelling.png"
alt="blogjet-live-spelling.png" border="0" width="508" height="359" /></p>

<p>Подробности и ссылка на программу — <a href="http://www.codingrobots.com/blog/2010/02/03/new-beta-version-of-blogjet-2-5/">в блоге Coding
Robots</a>.</p>

        

    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SellMe?a=UUnm9I7BeKQ:Q4XgvI0gFtQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SellMe?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded><description>Вышла новая бета-версия BlogJet 2.5 с “живой” проверкой орфографии: Подробности и ссылка на программу — в блоге Coding Robots....</description></item><item><title>Registered sex offenders</title><link>http://sellme.ru/2010/01/registered-sex-offenders.html</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dmitry@sellme.ru (Dmitry Chestnykh)</dc:creator><pubDate>Sat, 06 Feb 2010 05:07:13 PST</pubDate><guid isPermaLink="false">tag:sellme.ru,2010://1.1104</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
        <p>В США и Великобритании люди, совершившие сексуальные преступления
(секс-оффендеры), обязаны регистрироваться в специальном реестре (после того
как отсидят положенный срок). В Штатах информация о зарегистрированных
секс-преступниках доступна общественности, в том числе через <a href="http://www.familywatchdog.us">сайты</a>.</p>

<p>Вот, например, карта зарегистрированных секс-оффендеров в районе Пасадены:</p>

<p><img src="http://sellme.ru/pics/sex-offenders.jpg" alt="sex-offenders.jpg"
border="0" width="508" height="505" /></p>

<p>Красненькие — совершившие преступления против детей, желтенькие — насильники,
синенькие — избившие людей на сексуальной почве, зелененькие — другое (место
жительства показано светлым цветом, место работы — темным, но на этой картинке
мест работы нет).</p>

<p>Кликнув на квадратик, можно посмотреть адрес и фотку преступника:</p>

<p><img src="http://sellme.ru/pics/sex-offender-photo.jpg"
alt="sex-offender-photo.jpg" border="0" width="508" height="376" /></p>

<p>а также, что он сделал. Например, этот дядька развратил 14 или 15-летнего ребенка.</p>

<p>При походе в парк или устройстве в школу (выделены белыми квадратиками на
карте), американец-параноик заходит на сайт и смотрит, сколько рядом
секс-оффендеров в округе:</p>

<pre><code>Grace Christian Academy
-----------------------
address:    73 N. Hill Av
Pasadena, Ca 91106
closest offender    0.27 miles
offenders within 1000 ft    0
offenders within 1/2 mile   3
</code></pre>

<p>Ближайший к этой школе секс-оффендер находится в 0.27 милях, а в радиусе полмили их целых три.</p>

<p>Некоторые секс-оффендеры, если так решит суд, обязаны иметь таблички на домах и
машинах, типа &#8220;Тут живет насильник&#8221; или &#8220;В этой машине едет плохой дядя&#8221;:</p>

<p><a href="http://boingboing.net/2008/03/26/sex-offender-ordered.html"><img
src="http://sellme.ru/pics/sex-offender-sign.jpg" alt="sex-offender-sign.jpg"
border="0" width="328" height="258" /></a></p>

        

    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SellMe?a=5ED6OKcvyL8:8T10Fb-vGyk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SellMe?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded><description>В США и Великобритании люди, совершившие сексуальные преступления (секс-оффендеры), обязаны регистрироваться в специальном реестре (после того как отсидят положенный срок). В Штатах информация о зарегистрированных секс-преступниках доступна общественности, в том числе через сайты. Вот, например, карта зарегистрированных секс-оффендеров в районе...</description></item><item><title>Если бы программы писали на Луне - 2</title><link>http://sellme.ru/2010/01/esli-bi-programmi-pisali-na-lune---2.html</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dmitry@sellme.ru (Dmitry Chestnykh)</dc:creator><pubDate>Sat, 06 Feb 2010 05:09:05 PST</pubDate><guid isPermaLink="false">tag:sellme.ru,2010://1.1103</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
        <p><a href="http://sellme.ru/2010/01/esli-bi-programmi-pisali-na-lune.html">Предыдущая заметка</a> была на самом деле работающей программой на языке Lua
(&#8220;луна&#8221;) с бриджем в Objective-C под названием &#8220;Луноход&#8221;, который я недавно
написал-недописал. На скринкасте я показываю, как это работает (включите
звук!):</p>

<p><a href="http://www.youtube.com/watch?v=rexpkunWuQk&amp;fmt=22"><img
src="http://sellme.ru/pics/lunokhod-demo.jpg" alt="lunokhod-demo.jpg"
border="0" width="508" height="302" /></a></p>

<p>По-моему, я потерял интерес* к этому проекту (а может и нет, посмотрим),
поэтому если кто-то хочет продолжить — велкам в <a href="http://github.com/dchest/Lunokhod">репозиторий</a>.</p>

<p>* <em>Обновление:</em> точнее сказать, я мечусь между двумя похожими проектами — на
Lua и <a href="http://github.com/dchest/CocoaScheme">Scheme</a>, и пока не могу выбрать какой развивать.</p>

        

    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SellMe?a=_iGinFC8hJI:DQkqTHtOWCg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SellMe?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded><description>Предыдущая заметка была на самом деле работающей программой на языке Lua (“луна”) с бриджем в Objective-C под названием “Луноход”, который я недавно написал-недописал. На скринкасте я показываю, как это работает (включите звук!): По-моему, я потерял интерес* к этому проекту (а...</description></item><item><title>Если бы программы писали на Луне</title><link>http://sellme.ru/2010/01/esli-bi-programmi-pisali-na-lune.html</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dmitry@sellme.ru (Dmitry Chestnykh)</dc:creator><pubDate>Thu, 14 Jan 2010 08:13:58 PST</pubDate><guid isPermaLink="false">tag:sellme.ru,2010://1.1102</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
        <p>-- Это наша программа.</p>

<pre><code>app = Application()
</code></pre>

<p>-- А это кнопка.</p>

<pre><code>firstButton = Button:new{
</code></pre>

<p>-- У нее есть название,</p>

<pre><code>    title = "Сказать привет",
</code></pre>

<p>-- размеры,</p>

<pre><code>    width = 160,
    height = 40,
</code></pre>

<p>-- положение</p>

<pre><code>    x = 10,
    y = 10,
</code></pre>

<p>-- и действие.</p>

<pre><code>    action = function ()
                print "Привет, мир!"
             end
</code></pre>

<p>-- Вот.</p>

<pre><code>}
</code></pre>

<p>-- Это вторая кнопка, которая делает то же самое,</p>

<pre><code>secondButton = firstButton:new{
</code></pre>

<p>-- только называется по-другому</p>

<pre><code>    title = "Опять сказать",
</code></pre>

<p>-- и находится правее.</p>

<pre><code>    x = 170
</code></pre>

<p>-- Вот.</p>

<pre><code>}
</code></pre>

<p>-- Это окошко, у которого есть название, положение и размеры.</p>

<pre><code>window = Window:new{
    title = "Программа для передачи приветов миру",
    x = 0,
    y = 0,
    width = 360,
    height = 60,
</code></pre>

<p>-- А еще в этом окошке есть наши кнопки!</p>

<pre><code>    subviews = { firstButton, secondButton }
</code></pre>

<p>-- Вот.</p>

<pre><code>}
</code></pre>

<p>-- Теперь мы скажем окошку показаться,</p>

<pre><code>window:show()
</code></pre>

<p>-- а программе — запуститься.</p>

<pre><code>app:run()
</code></pre>

<p>--[[</p>

<p><img src="http://sellme.ru/pics/lunokhod-demo.png" alt="Луноход" title="" /></p>

<p>Это космические технологии. Но не rocket science.
 Жаль, что на Земле так не пишут.</p>

<p>--]]</p>

        

    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SellMe?a=kV_ULFt7C28:K1GmIzaivjA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SellMe?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded><description>-- Это наша программа. app = Application() -- А это кнопка. firstButton = Button:new{ -- У нее есть название, title = "Сказать привет", -- размеры, width = 160, height = 40, -- положение x = 10, y = 10, --...</description></item><item><title>Текстовый архив блога</title><link>http://sellme.ru/2010/01/tekstovij-arxiv-bloga.html</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dmitry@sellme.ru (Dmitry Chestnykh)</dc:creator><pubDate>Sat, 06 Feb 2010 05:10:10 PST</pubDate><guid isPermaLink="false">tag:sellme.ru,2010://1.1101</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
        <p>Пару дней назад сделал текстовый архив блога с прикольными названиями файлов.
Мне лень было разбираться с форматом SQLite-базы Movable Type (кроме того,
заметки я писал в HTML, Textile и Markdown в разные времена), поэтому я просто
сделал</p>

<pre><code>wget -m http://sellme.ru
</code></pre>

<p>и получил копию блога у себя на диске. Потом написал <a href="http://gist.github.com/272559">скриптик</a>, который
проходился по всем страничкам и выдергивал содержание заметок и комментариев.
На выходе получался кусок HTML, который я пропускал через <a href="http://www.aaronsw.com/2002/html2text/">html2text.py</a> и
получал красивый простой текст с Markdown-разметкой (<a href="http://gist.github.com/274253">пример</a>).</p>

<p>Но этого мне показалось мало: что за названия файлов такие
<a href="http://sellme.ru/2010/01/reshil-uznat--russkie-slova.html"><code>reshil-uznat--russkie-slova.txt</code></a>? Поэтому из каждой заметки я выдернул
заголовок, пропустил его через Google Translate, убрал лишние пробелы, заменив
остальные на &#8220;-&#8220;, и получил красивые имена файлов типа
<code>i-decided-to-learn-russian-words.txt</code> (а иногда и смешные:
<code>davydov-quot-modern-teaching-omarketinge-is-poluideologie.txt</code>).</p>

<p><a href="http://sellme.ru/pics/sellme-2010-01-09.zip">Скачать архив sellme-2010-01-09.zip</a> (1.9 МБ)</p>

<p>Это только текст, картинки не включены. Распакованный архив весит 4.5 мегабайт;
 <code>wc</code> выдает, что я написал 380079 слов. Это уже почти три тома универсальной
 единицы словоизмерения:</p>

<pre><code>$ wc -w war_and_peace*.txt 
139059 war_and_peace_vol_1.txt
127219 war_and_peace_vol_2.txt
134185 war_and_peace_vol_3.txt
112377 war_and_peace_vol_4.txt
512840 total
</code></pre>

        

    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SellMe?a=AyHomlmDVR4:KMNBlLC3Ack:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SellMe?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded><description>Пару дней назад сделал текстовый архив блога с прикольными названиями файлов. Мне лень было разбираться с форматом SQLite-базы Movable Type (кроме того, заметки я писал в HTML, Textile и Markdown в разные времена), поэтому я просто сделал wget -m http://sellme.ru...</description></item><item><title>CONTROL</title><link>http://sellme.ru/2010/01/control.html</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dmitry@sellme.ru (Dmitry Chestnykh)</dc:creator><pubDate>Sat, 06 Feb 2010 05:10:28 PST</pubDate><guid isPermaLink="false">tag:sellme.ru,2010://1.1100</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
        <p>Как часто вы пользуетесь CAPS LOCK по сравнению с Control (^)? Хоть в маках
основная клавиша-модификатор для команд — Command, я использую ^ очень часто. В
терминале (^d, ^c, ^a, ^e) и в текстовых полях Cocoa (^a, ^e, и т.д.). А вот
Caps Lock вообще не нужен на клавиатурах.</p>

<p>Поэтому, в Snow Leopard, <code>System Preferences</code> > <code>Keyboard</code>:</p>

<p><img src="http://sellme.ru/pics/caps-lock-control.jpg"
alt="caps-lock-control.jpg" border="0" width="508" height="468" /></p>

<p>Теперь Control будет под левым мизинцем (и на старом месте останется тоже). У
меня уже несколько месяцев так настроено и это <em>очень</em> удобно.</p>

<p><em>Обновление:</em> кстати, лампочка на Caps Lock загораться не будет (до 10.6 для
замены Caps Lock на Control приходилось применять хаки, которые не выключали
лампочку. <em>Обновление 2: оказывается, еще с 10.4 такое можно было сделать</em>).</p>

        

    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SellMe?a=6hKlKhk-RsE:RKMfWmaY21k:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SellMe?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded><description>Как часто вы пользуетесь CAPS LOCK по сравнению с Control (^)? Хоть в маках основная клавиша-модификатор для команд — Command, я использую ^ очень часто. В терминале (^d, ^c, ^a, ^e) и в текстовых полях Cocoa (^a, ^e, и т.д.)....</description></item><item><title>5 лет Sellme.ru</title><link>http://sellme.ru/2010/01/5-let-sellmeru.html</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dmitry@sellme.ru (Dmitry Chestnykh)</dc:creator><pubDate>Thu, 07 Jan 2010 09:00:22 PST</pubDate><guid isPermaLink="false">tag:sellme.ru,2010://1.1099</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
        <p>Мне был 21 год, когда я запустил этот блог. Сейчас мне 26, и вот как я изменился:</p>

<ul>
<li>Отрастил волосы.</li>
<li>Поумнел и стал более циничным.</li>
<li>Перестал читать и писать о маркетинге (<a href="http://www.artlebedev.ru/kovodstvo/sections/115/">маркетинга не существует</a> :-).</li>
<li>Пересел на Mac.</li>
</ul>

<p>Вообще, у меня мировоззрение поменялось настолько, что многие заметки из прошлого я не могу читать без стыда. Но это нормально (так же как и нельзя без ужаса смотреть на код, написанный год назад).</p>

<p>Что осталось без изменения:</p>

<ul>
<li>До сих пор люблю программировать, даже больше, чем раньше.</li>
<li>Я все еще занимаюсь <a href="http://www.codingrobots.com">своим любимым делом</a>.</li>
<li>Заметка про <a href="http://sellme.ru/2006/08/kompanii-buduschego-uje-segodnya.html">компании будущего</a> все еще в силе.</li>
</ul>

<p>Что поменялось в блоге:</p>

<ul>
<li>Из более-менее тематического блога он трансформировался в персональный.</li>
<li>Стал писать меньше про бизнес, продуктивность, маркетинг и бла-бла-бла, больше про программирование.</li>
<li>Подписчиков на RSS стало пять тысяч двести (и их количество снова стало расти, что странно, учитывая первый и второй пункты).</li>
<li>WordPress → TextPattern → самописный движок 1 → самописный движок 2 → WordPress → Movable Type.</li>
</ul>

<p><img src="http://sellme.ru/pics/sellme-feed-stats.png" alt="sellme-feed-stats.png" border="0" width="513" height="159" /></p>

<p>Это пока все, что пришло в голову. Ищите меня в <a href="http://twitter.com/dchest/">твиттере</a>.</p>

        

    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SellMe?a=Dt-6R250M2U:I7QKFKodlkk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SellMe?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded><description>Мне был 21 год, когда я запустил этот блог. Сейчас мне 26, и вот как я изменился: Отрастил волосы. Поумнел и стал более циничным. Перестал читать и писать о маркетинге (маркетинга не существует :-). Пересел на Mac. Вообще, у меня...</description></item><item><title>Решил узнать русские слова</title><link>http://sellme.ru/2010/01/reshil-uznat--russkie-slova.html</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dmitry@sellme.ru (Dmitry Chestnykh)</dc:creator><pubDate>Sun, 03 Jan 2010 13:31:32 PST</pubDate><guid isPermaLink="false">tag:sellme.ru,2010://1.1098</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
        <p>Я уже забыл многие программистские термины на русском (<a href="http://sellme.ru/2010/01/pervie-vpechatlenija-ot-lua.html">заметку про Lua</a> пришлось писать на трех языках), а некоторые и совсем не знал, потому что 1) CS отрасль в России находится в заднице, 2) спал на лекциях, 3) нет литературы на русском языке, 4) не читаю программистскую литературу на русском языке, 5) у программеров есть международный язык — код и комментарии в нем (на английском).</p>

<p>Решил посмотреть термины, которых я не знал. Оказалось, что все словари отстойные: что мультитран, что лингво не знают многих слов. Пришлось погуглить. Некоторые переводы вызвали улыбку (closure — <a href="http://lingvo.yandex.ru/en?text=closure&amp;dict=LingvoComputer">замыкание</a>), и конечно, как обычно все придумывают свои переводы, mark-and-sweep GC — сборщик мусора <a href="http://www.ibm.com/developerworks/ru/library/l-lua/">&#8220;отметь и выкинь&#8221;</a> или <a href="http://ru.wikipedia.org/wiki/Сборка_мусора">&#8220;алгоритм пометок&#8221;</a> или <a href="http://www.lua.ru/doc/2.10.html">&#8220;пометить-очистить&#8221;</a></p>

<p>&#8220;First-class functions&#8221; не нашел (функции первого класса?). IBM до сих пор называет скрипты <a href="http://www.ibm.com/developerworks/ru/library/l-lua/">сценариями</a>. В общем, паника.</p>

        

    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SellMe?a=wAcoOnJw_QI:EWpK6U3xNzU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SellMe?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded><description>Я уже забыл многие программистские термины на русском (заметку про Lua пришлось писать на трех языках), а некоторые и совсем не знал, потому что 1) CS отрасль в России находится в заднице, 2) спал на лекциях, 3) нет литературы на...</description></item><item><title>Миф об strlen() в Linux и BSD</title><link>http://sellme.ru/2010/01/mif-ob-strlen-v-linux-i-bsd.html</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dmitry@sellme.ru (Dmitry Chestnykh)</dc:creator><pubDate>Sat, 02 Jan 2010 19:08:34 PST</pubDate><guid isPermaLink="false">tag:sellme.ru,2010://1.1097</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
        <p>Уже не первый раз попадаюсь на утверждение, что <code>strlen()</code> в линуксовом glibc оптимизирована, а у BSD нет. Утверждение &#8220;подтверждается&#8221; ссылками в соответствующие репозитории:</p>

<ol>
<li><a href="http://sources.redhat.com/cgi-bin/cvsweb.cgi/~checkout~/libc/string/strlen.c?rev=1.1.2.1&amp;cvsroot=glibc">strlen() в glibc</a></li>
<li><a href="http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/string/strlen.c?rev=1.7;content-type=text%2Fplain">strlen() в OpenBSD</a></li>
</ol>

<p>Посмотрите какой длинный оптимизированный код у glibc и какой обычный тупой у BSD! Вот они, в перевернутом виде:</p>

<p><img src="http://sellme.ru/pics/strlen.png" alt="strlen.png" border="0" width="500" height="300" /></p>

<p>Появляется еще один аргумент о превосходстве Линукса над BSD! Ура! </p>

<p>И так пока какой-нибудь чел (вроде меня) не полазает по репозиториям и не скажет, что <strong>ни та, ни другая версия не используется во многих архитектурах</strong>. Достаточно посмотреть, например, в <a href="http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/i386/strlen.c?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;cvsroot=glibc">sysdeps/i386/strlen.c</a> в glibc:</p>

<pre><code>    size_t
    strlen (const char *str)
    {
      int cnt;

      asm("cld\n"                   /* Search forward.  */
          /* Some old versions of gas need `repne' instead of `repnz'.  */
          "repnz\n"                 /* Look for a zero byte.  */
          "scasb" /* %0, %1, %3 */ :
          "=c" (cnt) : "D" (str), "0" (-1), "a" (0));

      return -2 - cnt;
    }
</code></pre>

<p>и в <a href="http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/arch/i386/string/strlen.S?rev=1.3;content-type=text%2Fplain">arch/i386/string/strlen.S</a> в OpenBSD:</p>

<pre><code>    ENTRY(strlen)
        pushl   %edi
        movl    8(%esp),%edi        /* string address */
        cld             /* set search forward */
        xorl    %eax,%eax       /* set search for null terminator */
        movl    $-1,%ecx        /* set search for lots of characters */
        repne               /* search! */
        scasb
        notl    %ecx            /* get length by taking complement */
        leal    -1(%ecx),%eax       /* and subtracting one */
        popl    %edi
        ret
</code></pre>

<p>или в <a href="http://opensource.apple.com/source/Libc/Libc-583/i386/string/strlen.s">i386/string/strlen.s</a> в Apple&#8217;овской libc (где используется SSE3, тут приводить не буду, кликайте ссылку).</p>

<p>Не повторяйте этот миф, пожалуйста.</p>

        

    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SellMe?a=XHFaaVCva-E:p9sOC3f-XrE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SellMe?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded><description>Уже не первый раз попадаюсь на утверждение, что strlen() в линуксовом glibc оптимизирована, а у BSD нет. Утверждение “подтверждается” ссылками в соответствующие репозитории: strlen() в glibc strlen() в OpenBSD Посмотрите какой длинный оптимизированный код у glibc и какой обычный тупой...</description></item><item><title>Первые впечатления от Lua</title><link>http://sellme.ru/2010/01/pervie-vpechatlenija-ot-lua.html</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dmitry@sellme.ru (Dmitry Chestnykh)</dc:creator><pubDate>Fri, 01 Jan 2010 10:25:29 PST</pubDate><guid isPermaLink="false">tag:sellme.ru,2010://1.1096</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
        <p><img src="http://sellme.ru/pics/lua.gif" alt="lua.gif" border="0" width="100" height="100" style="float:right"/>Начал недавно изучать Lua (читаю <a href="http://www.lua.org/pil/">Programming in Lua</a>) и хочу поделиться первыми впечатлениями.</p>

<p>Что нравится:</p>

<p><strong>First-class functions, closures и lexical scoping</strong>
(простите, не знаю русских терминов).</p>

<pre><code>local p = print

function counter (n)
  return function (i)
            if i ~= nil then n = n + i end
            return n
         end
end

c = counter(0)
p(c) --&gt; function: 0x1001064e0
p(c()) --&gt; 0
p(c(1)) --&gt; 1
p(c(1)) --&gt; 2
p(c(10)) --&gt; 12

x = counter(99)
p(x) --&gt; function: 0x100106880
p(x(1)) --&gt; 100

p("c counter is " .. c() .. " and x counter is " .. x())
--&gt; c counter is 12 and x counter is 100
</code></pre>

<p>(как удобно, что комментарии в Lua начинаются с &#8220;<code>--</code>&#8221;).</p>

<p><strong>Неопределенные переменные и незаданные аргументы функций равны nil.</strong></p>

<pre><code>local a = "something"
print(a) --&gt; something
print(b) --&gt; nil

function welcome (msg, name)
  print(msg .. ", " .. (name or "неизвестный") .. "!")
end

welcome("Привет", "читатель") --&gt; Привет, читатель!
welcome("Привет") --&gt; Привет, неизвестный!
</code></pre>

<p><strong>Функции могут возвращать несколько значений.</strong></p>

<pre><code>function div_mul (a, b)
  return a/b, a*b
end

d, m = div_mul(3, 4)
print("division: " .. d) --&gt; division: 0.75
print("multiplication: " .. m) --&gt; multiplication: 12
</code></pre>

<p>Это особенно удобно для работы с ошибками:</p>

<pre><code>local f, err = io.open("bogus filename")
if f == nil then
  print("Error: " .. err)
end
--&gt; Error: bogus filename: No such file or directory
</code></pre>

<p>Наконец, весь Lua (или вся Lua?) состоит всего из ~16000 строчек ANSI C и у Lua один из самых быстрых интерпретаторов среди динамических языков.</p>

<p>Что не нравится: </p>

<ul>
<li>забываю <code>then</code> после <code>if</code> :)</li>
<li><code>local</code> для определения локальных переменных.</li>
</ul>

<p>Первое, правда сильно упрощает парсер, судя по всему.</p>

        

    <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SellMe?a=qrUNBIDIpD0:wyIB4-oMRao:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SellMe?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded><description>Начал недавно изучать Lua (читаю Programming in Lua) и хочу поделиться первыми впечатлениями. Что нравится: First-class functions, closures и lexical scoping (простите, не знаю русских терминов). local p = print function counter (n) return function (i) if i ~= nil...</description></item></channel></rss>
