<?xml version='1.0' encoding='utf-8' ?>
<!--  If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/  -->
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>Mike</title>
  <link>http://mikeme.livejournal.com/</link>
  <description>Mike - LiveJournal.com</description>
  <lastBuildDate>Sun, 20 Dec 2009 14:56:35 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>mikeme</lj:journal>
  <lj:journalid>442595</lj:journalid>
  <lj:journaltype>personal</lj:journaltype>
  <atom10:link rel='hub' href='http://pubsubhubbub.appspot.com/' />
  <image>
    <url>http://l-userpic.livejournal.com/1003063/442595</url>
    <title>Mike</title>
    <link>http://mikeme.livejournal.com/</link>
    <width>70</width>
    <height>80</height>
  </image>

<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/15596.html</guid>
  <pubDate>Sun, 20 Dec 2009 14:56:35 GMT</pubDate>
  <title>Концерт Любимова/Норрингтона 12 декабря в БЗК</title>
  <link>http://mikeme.livejournal.com/15596.html</link>
  <description>&lt;a href=&quot;http://www.msk.m-n-t.ru/index/2009-12-12/bzk20091212_2009-12-12.html&quot;&gt;http://www.msk.m-n-t.ru/index/2009-12-12/bzk20091212_2009-12-12.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Первые же такты вступления фортепиано, повергли меня в недоумение своим rubatissimo, как будто музыкант нащупывал верные интонации, переигрывая романтический стиль, словно что отыграл Моцарта на тангентклавире и еще не успел перестроиться. Постепенно Любимов - замечательный апологет аутентичного исполнения - нашел-таки стилистически верную &amp;quot;струну&amp;quot; (о да, я это заявляю как &amp;quot;великий&amp;quot; специалист в этой области), пощадил инструмент, не высосал из него всех соков, что типично сопутствует исполнению музыки романтизма (о да, я точно знаю, что сопутствует, о что нет), а выверенно отыграл концерт. А как же страсти, динамика, диминуэндо и крещендо на трелях (вспоминаю исполнение Второго - на концерте, напоминаю, играли Первый - Элисо Константиновной Вирсаладзе - вот большего отечественного специалиста по музыке романтиков мы и не знаем, вот это-то и нравится публике, а у меня реально бежали мурашки по коже)? Ан нету. Эт вам, панимаишь, аутентика. Так играли во времена Брамса.</description>
  <comments>http://mikeme.livejournal.com/15596.html</comments>
  <category>музыка</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/15312.html</guid>
  <pubDate>Wed, 16 Dec 2009 15:11:31 GMT</pubDate>
  <title>Телефонное собеседование</title>
  <link>http://mikeme.livejournal.com/15312.html</link>
  <description>Провел (точнее говоря, принял участие) в очередном subj, которое в который раз подтвердило, что я лох и не знаю элементарных вещей из computer science (&quot;что-то мне название Вашего ВУЗа ни о чем не говорит...&quot;).&lt;br /&gt;&lt;br /&gt;Содержание интервью (надеюсь, интервьюеры не обидятся за разглашение, тем более, что имя конторы я не упоминаю).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Часть 1 (щадяще-болтологически-вводная-она же якобы тест на знание computer science).&lt;/strong&gt;&lt;br /&gt;Проверим, как Вы знаете computer science.&lt;br /&gt;Выберите из списка один из терминов и поговорите о нем (читай: смело выкладывайте все, что знаете, но если уж что-то не то ляпнули - знайте: мы вас за язык не тянули).&lt;br /&gt;а) NP-полные задачи (стремновато, ведь попросят привести примеры);&lt;br /&gt;б) инвариант цикла (это элементарно, но зачем применяется - непонятно. не стал выбирать эту тему);&lt;br /&gt;в) контекстно-свободная грамматика (вот эту точно вижу в гробу);&lt;br /&gt;г) deadlock, он же &quot;тупик&quot; по-русски (опасно говорить на эту тему);&lt;br /&gt;д) сборщик мусора (опасно, но я выбрал эту тему);&lt;br /&gt;е) вычислительная сложность алгоритма (если схитришь и не выберешь это, спросят все равно, а заодно и попросят привести примеры);&lt;br /&gt;Результат: я опасно походил по граблям, нарвался на п. е) и в итоге часть 1 кончилась неприятным разговором о видах сортировок и их алгоритмической сложности, что обернулось полным техническим поражением.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Часть 2. &quot;Хорошо ли вы знаете С++?&quot;&lt;/strong&gt;&lt;br /&gt;Дешевые знакомые трюки не прошли: &lt;br /&gt;а) есть ли виртуальные конструкторы, зачем нужен виртуальный деструктор&lt;br /&gt;б) что такое &lt;code&gt;const&lt;/code&gt; и как объявить указатель на константу и константный указатель&lt;br /&gt;Результат: победа по части 2.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Часть 3. &quot;Хитровывернутая задачка&quot;.&lt;/strong&gt;&lt;br /&gt;Условия:&lt;br /&gt;Гостиница, &lt;code&gt;N&lt;/code&gt; номеров. Число &lt;code&gt;N&lt;/code&gt; задано наперед.&lt;br /&gt;Есть администратор &lt;code&gt;А&lt;/code&gt;.&lt;br /&gt;Надо сделать класс для администратора &lt;code&gt;А&lt;/code&gt;, который бы умел следующее:&lt;br /&gt;а) отвечать на вопрос &quot;есть ли свободные номера?&quot;: &lt;code&gt;bool anyFreeRooms() const&lt;/code&gt;&lt;br /&gt;б) мог бы занять номер &lt;code&gt;int occupyRoom()&lt;/code&gt; - возвращает номер комнаты.&lt;br /&gt;в) освободить номер: &lt;code&gt;void freeRoom( int room )&lt;/code&gt; - помечает комнату как свободную.&lt;br /&gt;Технические ограничения: &lt;br /&gt;1. Пользователь данного класса является &quot;хорошим&quot;, т.е. не освобождает незанятый номер, не занимает номер, если нет свободных номеров, не освобождает один и тот же номер дважды и т.д. (а я вообще не обратил на это условие внимания)&lt;br /&gt;2. Вычислительная сложность для пунктов а), б) и в) должна быть O(1)&lt;br /&gt;При этом на создание самого объекта для администратора не имеется ограничений.&lt;br /&gt;Дали 10 минут подумать, но результат оказался плачевным...даже с помощью интернета не удалось ничего полезного выудить. Так я и понёс околесицу про &lt;code&gt;vector&amp;lt;bool&amp;gt;&lt;/code&gt;.&lt;br /&gt;Ага, догадался уже потом (спустя пару часов), что надо было просто сконструировать &lt;code&gt;list&amp;lt;int&amp;gt;&lt;/code&gt;, который будет представлять собой список свободных номеров, и забить его всеми числами от &lt;code&gt;1&lt;/code&gt; до &lt;code&gt;N&lt;/code&gt;.</description>
  <comments>http://mikeme.livejournal.com/15312.html</comments>
  <category>программинг</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/14878.html</guid>
  <pubDate>Wed, 09 Dec 2009 07:25:45 GMT</pubDate>
  <title>Почти невозможное</title>
  <link>http://mikeme.livejournal.com/14878.html</link>
  <description>Мдаа...Хорошо бы сделать нотный редактор online по типу Finale (такого еще нет в мире) плюс библиотеку из всей нотной литературы мира забить туда (хотя бы несколькосотлетней давности, чтобы не было проблем с копирайтом). Такой еще тоже нет на свете. Вот подспорье композиторам будет: взял на-copy/paste-ил себе из Баха, Бетховена или Моцарта (спец. фича для Шнитке; жаль только, что он уже умер :). Записал онлайн. Расшарил ноты, чтобы показать друзьям. И партитуры раздавать оркестру можно. Очень удобно. Также можно выставлять свои произведения и в паблик-доступ: вот, мол, мой портфолио. Не хочешь выставлять - не надо, пользуйся ими приватно. И проигрывать можно будет. И в MIDI переводить при желании. И в формат Finale. И напечатать можно. И все это бесплатно. Платить только за продвинутые фичи.&lt;br /&gt;А? Как идея?</description>
  <comments>http://mikeme.livejournal.com/14878.html</comments>
  <category>нотный редактор онлайн</category>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/14786.html</guid>
  <pubDate>Fri, 23 Oct 2009 05:09:52 GMT</pubDate>
  <title>Django</title>
  <link>http://mikeme.livejournal.com/14786.html</link>
  <description>С горя пошел изучать &lt;a href=&quot;http://www.djangoproject.com/&quot;&gt;Django&lt;/a&gt;.</description>
  <comments>http://mikeme.livejournal.com/14786.html</comments>
  <category>программинг</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/14398.html</guid>
  <pubDate>Thu, 22 Oct 2009 11:09:55 GMT</pubDate>
  <title>Быдлокодер (aka Горе-программист; англ. Code Monkey)</title>
  <link>http://mikeme.livejournal.com/14398.html</link>
  <description>Почти все, что я программирую, коллегам приходистя переписывать: &quot;Он писал это, не вникая в суть проблемы&quot;, &quot;Это написано абы как&quot;. Бедные коллеги! Что ж я могу сделать, если я такой идиот и думаю в основном спинным мозгом. Нет, пожалуй, мне пора переквалифицироваться в тестеры, хватит уже мучить коллег и юзеров. Хотя тестером может я еще и худшим буду, чем программером...</description>
  <comments>http://mikeme.livejournal.com/14398.html</comments>
  <category>программинг</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/14266.html</guid>
  <pubDate>Mon, 19 Oct 2009 06:17:10 GMT</pubDate>
  <title>ISO files parser/creator</title>
  <link>http://mikeme.livejournal.com/14266.html</link>
  <description>Мдаааа...написать его оказалось мегажестью... я даже не ожидал. STL, к сожалению, так и не узнал в процессе написания.</description>
  <comments>http://mikeme.livejournal.com/14266.html</comments>
  <category>программинг</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/13972.html</guid>
  <pubDate>Sun, 04 Oct 2009 19:58:12 GMT</pubDate>
  <title>Высокая Нотка на &quot;Детском Радио&quot;</title>
  <link>http://mikeme.livejournal.com/13972.html</link>
  <description>Вот и обзавелось &quot;Детское Радио&quot; своим музкультпросветработником. Ля-ля-ля-ля-ля-ля-ля-ля-ля-а-а-а! И всё бы ничего, да только наступил маленькой Высокой Нотке на ухо Боооольшой басовитый - и очень тяжелый - медведь. Не, я серьезно. Взяли бы на роль и.о. Высокой Нотки чувиху, умеющую хотя бы немного петь (я уж не говорю имеющую слух, это почти невозможно в условиях  Д.Р., хотя подошла бы любая выпускница Гнесинки) - было бы гораздо приятнее, да и детям не портился бы слух. А тем временем В.Н. продолжает петь горлом, мимо нот и - о боже - на всю страну и портить слух всем детям Р.Ф. (а ведь детское радио слушают и в Ульяновске, и в Самаре, и в Р.Н.Д. (&lt;a href=&quot;http://www.deti.fm)!&quot;&gt;http://www.deti.fm)!&lt;/a&gt;</description>
  <comments>http://mikeme.livejournal.com/13972.html</comments>
  <category>музыка</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/13763.html</guid>
  <pubDate>Fri, 02 Oct 2009 07:07:58 GMT</pubDate>
  <title>Застрелиться</title>
  <link>http://mikeme.livejournal.com/13763.html</link>
  <description>Yandex.Server выдает сообщение (у них вообще с английским беда):&lt;br /&gt;Service shot down</description>
  <comments>http://mikeme.livejournal.com/13763.html</comments>
  <category>программинг</category>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/13333.html</guid>
  <pubDate>Wed, 02 Sep 2009 18:33:18 GMT</pubDate>
  <title>Текучка</title>
  <link>http://mikeme.livejournal.com/13333.html</link>
  <description>Сегодня не буду, вопреки обыкновению, себя бичевать. Сами можете оценить мои профессиональные &quot;достижения&quot;.&lt;br /&gt;Первая половина дня прошла под знаком Unicode. После неторопливой работы я эасобачил массив на 65536 элементов, по которому можно преобразовывать любую самую затейливую буковку из Unicode в ANSI (никто и не утверждал, что успешно, но все, что может, он преобразовывает!). Универсальный конвертер сделан (облом произошел только с китайско-японскими языками, но это как-нибудь потом настрою)!&lt;br /&gt;Вторая часть дня прошла в обсуждениях и обдумываниях распределенной атаки на пароли по сети. Нужно было продумать и заимплементить одну важную фичу. Когда один компьютер и один поток - это хорошо. Когда два - уже хуже. Когда их много, мозги перестают справляться. ООП рулит, но он значительно превышает по возможностям возможности моего мозга. В результате заимплементил какую-то кривизну, которую придется еще выпрямлять и выпрямлять.</description>
  <comments>http://mikeme.livejournal.com/13333.html</comments>
  <category>программинг</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/13138.html</guid>
  <pubDate>Tue, 11 Aug 2009 16:17:39 GMT</pubDate>
  <link>http://mikeme.livejournal.com/13138.html</link>
  <description>На днях написал код, кидающий в большом количестве исключения из конструктора и (о ужас!) сам конструктор был аж на 2 экрана. В результате подвергся (о боже!) публичному остракизму с заведением кейса и последующим рефакторингом. Welcome to &lt;a href=&quot;http://govnokod.ru!&quot;&gt;http://govnokod.ru!&lt;/a&gt;</description>
  <comments>http://mikeme.livejournal.com/13138.html</comments>
  <category>программинг</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/12876.html</guid>
  <pubDate>Mon, 10 Aug 2009 10:16:16 GMT</pubDate>
  <title>http://geo-search.ru</title>
  <link>http://mikeme.livejournal.com/12876.html</link>
  <description>Зыпустили прыэктик:&lt;br /&gt;&lt;a href=&quot;http://geo-search.ru/&quot;&gt;http://geo-search.ru/&lt;/a&gt;&lt;br /&gt;Welcome!</description>
  <comments>http://mikeme.livejournal.com/12876.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/12647.html</guid>
  <pubDate>Sat, 09 May 2009 07:10:16 GMT</pubDate>
  <title>Bad karma</title>
  <link>http://mikeme.livejournal.com/12647.html</link>
  <description>Шо ето за на? Юмористы, блин...&lt;br /&gt;&lt;br /&gt;-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------&lt;br /&gt;7D9F1538F9      796 Fri May  8 19:47:38  *********@ergosolo.ru&lt;br /&gt;(host mx1.yandex.ru[77.88.21.89] said: 450 4.5.0 Bad karma! (in reply to RCPT TO command))&lt;br /&gt;                                         *********@yandex.ru</description>
  <comments>http://mikeme.livejournal.com/12647.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/12482.html</guid>
  <pubDate>Tue, 03 Mar 2009 15:01:15 GMT</pubDate>
  <title>Фуф! Наконец-то! Штроили мы штроили и наконец...</title>
  <link>http://mikeme.livejournal.com/12482.html</link>
  <description>&lt;a href=&quot;http://www.lostpassword.com/kit-enterprise.htm&quot;&gt;http://www.lostpassword.com/kit-enterprise.htm&lt;/a&gt;</description>
  <comments>http://mikeme.livejournal.com/12482.html</comments>
  <category>программинг</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/12254.html</guid>
  <pubDate>Fri, 16 Jan 2009 09:00:43 GMT</pubDate>
  <title>prototype.js</title>
  <link>http://mikeme.livejournal.com/12254.html</link>
  <description>Дмитрия Котерова в топку! &lt;a href=&quot;http://www.prototypejs.org/&quot;&gt;http://www.prototypejs.org/&lt;/a&gt;, и поля доступны в Python через req.values!</description>
  <comments>http://mikeme.livejournal.com/12254.html</comments>
  <category>программинг</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/11984.html</guid>
  <pubDate>Sat, 10 Jan 2009 06:46:23 GMT</pubDate>
  <title>AJAX и Python</title>
  <link>http://mikeme.livejournal.com/11984.html</link>
  <description>Прикручиваю subj[0] к subj[1]. Использую библиотеку великого гуру Дмитрия Котерова: &lt;a href=&quot;http://en.dklab.ru/lib/JsHttpRequest/&quot;&gt;http://en.dklab.ru/lib/JsHttpRequest/&lt;/a&gt;.&lt;br /&gt;Как-то странно получается...тело аякс-запроса доступно через cgi.FieldStorage.value, а дальше надо, видимо, как-то извращаться...извращаюсь:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;def unescape( self, text ):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;&quot;&quot;Removes URLencoded character references from a text string.&quot;&quot;&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;def fixup( m ):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text = m.group(0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if text[:2] == &quot;%u&quot;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# unicode character reference&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return unichr(int(text[2:], 16))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;except ValueError:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pass&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# ascii character reference&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return chr(int(text[1:], 16))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;except ValueError:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pass&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return text # leave as is&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;re.sub(&quot;%u\w{4}&quot;, fixup, text)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return re.sub(&quot;%\w{2}&quot;, fixup, text)&lt;br /&gt;&lt;br /&gt;def parseRequest( self, content ):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plist = map(lambda x: x.strip(), content.split(&apos;&amp;&apos;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pdict = {}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for p in plist:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i = p.find(&apos;=&apos;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if i &amp;gt;= 0:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name = p[:i].strip().lower()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value = p[i+1:].strip()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if len(value) &amp;gt;= 2 and value[0] == value[-1] == &apos;&quot;&apos;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value = value[1:-1]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pdict[name] = self.unescape( value )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return pdict&lt;br /&gt;&lt;br /&gt;def do( self ):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logging.debug( &apos;Check.do, req=%s&apos; % ( self.req.fieldStorage(), ) )&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;d = self.parseRequest( self.req.fieldStorage().value )&lt;br /&gt;&lt;/code&gt;</description>
  <comments>http://mikeme.livejournal.com/11984.html</comments>
  <category>программинг</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/11699.html</guid>
  <pubDate>Sun, 28 Dec 2008 05:21:27 GMT</pubDate>
  <title>Гуру STL тоже делают ошибки</title>
  <link>http://mikeme.livejournal.com/11699.html</link>
  <description>Из книги Скотта Майерса &quot;Эффективное использование STL&quot;:&lt;br /&gt;&quot;Библиотека STL не содержит умных указателей с подсчетом ссылок. Написание хорошего умного указателя (то есть такого, который бы всегда правильно работал) - задача не из простых, и заниматься ею стоит лишь в случае крайней необходимости. Я привел код умного указателя с подсчетом ссылок в &quot;more Effective C++&quot; в 1996 году. Хотя код был основан на хорошо известной реализации умного указателя, а перед изданием книги материал тщательно проверялся опытными программистами, за эти годы было найдено несколько ошибок. Количество нетривиальных сбоев, возникающих при подсчете ссылок в умных указателях, просто невероятно.&quot;&lt;br /&gt;А вы говорите...если уж даже великий гуру сделал столько ошибок в кажущихся несложными реализациях, что говорить о простых смертных. Коммерческий софт просто кишит ошибками (только 99.99% из них не проявляются и никогда не проявятся на практике).</description>
  <comments>http://mikeme.livejournal.com/11699.html</comments>
  <category>программинг</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/11363.html</guid>
  <pubDate>Fri, 26 Dec 2008 14:50:34 GMT</pubDate>
  <title>Оптимизаторы</title>
  <link>http://mikeme.livejournal.com/11363.html</link>
  <description>Воспоминание: повёрнутые на оптимизации яндексоиды оптимизируют даже подсчет количества выставленных битиков в числе, дабы не делать лишние сдвиги!&lt;br /&gt;Суровая правда жизни: клали мы (разработчики коммерческого софта) на всякую оптимизацию, оборачивая даже (!) STL-ные контейнеры.</description>
  <comments>http://mikeme.livejournal.com/11363.html</comments>
  <category>программинг</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/11261.html</guid>
  <pubDate>Wed, 24 Dec 2008 15:03:16 GMT</pubDate>
  <title>Сортированная &quot;мапа&quot;</title>
  <link>http://mikeme.livejournal.com/11261.html</link>
  <description>Вот что делает с программерами отсутствие знания STL-я.&lt;br /&gt;Понадобилось решить элементарную задачку: из файла (не будем уточнять, какого именно) читаются строки и некие значения, соответствующие этим строчкам. Это классический &quot;хэшмэп&quot;. Сейчас апологеты STL-ля съедят меня с криками &quot;в STL нет хэшмэпа, есть просто мэпа!!!&quot;. Успокойтесь. Я, как только речь заходит про STL, начинаю сразу в нем &quot;плавать&quot;, как тюлень, случайно попавший не в свой водоем, так что не буду с вами спорить. Так вот, вернемся к задачке. Строки читаются произвольно, а пишутся в лексикографическом порядке (естественно, с соответствующими им значениями из hashmap). Что это? Сразу наступил глубокий затык и коллапс. Задачка-то для младшей школы...Ай-яй-яй-яй-яй. Вот что делает с программерами оборачивание STL-ля.</description>
  <comments>http://mikeme.livejournal.com/11261.html</comments>
  <category>программинг</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/10894.html</guid>
  <pubDate>Thu, 18 Dec 2008 20:13:53 GMT</pubDate>
  <title>Работайте в Acronis-е!</title>
  <link>http://mikeme.livejournal.com/10894.html</link>
  <description>Открытое письмо на вакансию&lt;em&gt;&lt;a href=&quot;http://www.acronis.ru/company/employment/vacancy/vacancy.html?id=2&quot;&gt;&amp;nbsp;www.acronis.ru/company/employment/vacancy/vacancy.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;gt;Проектировщик/программист С++ (СPP developer)&lt;br /&gt;&lt;br /&gt;&amp;gt;Career code: cpp design&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Девелопмент или дизайн? Определитесь может быть все-таки? Понятно, что без дизайна нет девелопмента, зато без девелопмента бывает дизайн, но все-таки...тут девелопмент или дизайн?&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&amp;gt;Requirements:&lt;br /&gt;&amp;gt;-отличное знание C++, STL, синхронизации;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Дуб дубом. 8 лет программирую на С++, а ни STL-ля, ни синхронизации не знаю. На вопрос: &amp;quot;какие объекты синхронизации в Windows Вы знаете?&amp;quot; отвечаю: &amp;quot;Критические секции, эвенты. Больше ничего.&amp;quot;. &amp;quot;Ничего? А семафоры?&amp;quot;. &amp;quot;Нет&amp;quot;. После чего разговор переходит в другое русло. На вопрос: &amp;quot;Как? Вы не знаете STL-я?&amp;quot; отвечаю: &amp;quot;Да, не знаю, потому что он у нас весь обернут&amp;quot;, на что получаю кислую мину, мол, так делают только идиоты, и отправляюсь восвояси.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&amp;gt;-умение разбираться в чужом исходном коде;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Эт пожалуйста, сколько угодно. Люблю разгребать лопатой (или даже руками) отстой.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&amp;gt;-опыт разработки ПО на C++ более 3-х лет.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Более 8 лет, но так и не научился программировать нормально. На проектировщика не потяну.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&amp;gt;Salary: starts from 78500 RUR&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Ууууууу! За такую зарплату я готов по 24 часа в сутки разгребать чужой исходный код,&amp;nbsp;и даже без лопаты.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&amp;gt;Working conditions:&lt;br /&gt;&amp;gt;Мы предлагаем работу в стабильной и успешной компании, полное соблюдение ТК РФ, перспективы карьерного роста &lt;br /&gt;&amp;gt;и достойную оплату труда (по результатам собеседования).&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;Да, да, да. А вы еще не обанкротились? И когда планируете?&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&amp;gt;Для сотрудников:&lt;br /&gt;&amp;gt;- бесплатное питание;&lt;br /&gt;&amp;gt;- корпоративный абонемент в фитнес-клуб;&lt;br /&gt;&amp;gt;- комплексная медицинская страховка (ДМС);&lt;br /&gt;&amp;gt;- офис находится рядом со ст. м. Савеловская/Отрадное;&lt;br /&gt;&amp;gt;- интересные условия по переезду для кандидатов из других регионов.&lt;br /&gt;&lt;br /&gt;&amp;gt;Send your resume via e-mail: hr@acronis.ru or use the form below. Please specify the career code &amp;quot;cpp &amp;gt;design&amp;quot; in the Subject of your message.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Да, да, да, обязательно пошлю, но я же тупой дятел, и вы меня все равно не примете на работу,&amp;nbsp;но начнете названивать каждые полгода и приглашать на собеседования,&amp;nbsp;на котором опять выяснится,&amp;nbsp;что я не знаю ни STL-ля, ни объектов синхронизации, потом опять у HR-а закончится оперативка и он опять названивать начнет (быстро забывает,&amp;nbsp;что я не знаю STL-ля и объектов синхронизации, памяти не хватает).</description>
  <comments>http://mikeme.livejournal.com/10894.html</comments>
  <category>работа</category>
  <category>программинг</category>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/10516.html</guid>
  <pubDate>Wed, 17 Dec 2008 10:48:40 GMT</pubDate>
  <title>Текущая директория в виндах</title>
  <link>http://mikeme.livejournal.com/10516.html</link>
  <description>Понятие &quot;текущей директории&quot; в Windows атрофировано, как и многое из того, что ее предшественник MS DOS взял из linux. Вот, взгляните сюда:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;getcwd.c&lt;br /&gt;&lt;br /&gt;_TSCHAR * __cdecl _tgetdcwd_nolock (&lt;br /&gt;        int drive,&lt;br /&gt;        _TSCHAR *pnbuf,&lt;br /&gt;        int maxlen&lt;br /&gt;        )&lt;br /&gt;{&lt;br /&gt;...&lt;br /&gt;        /* Get the drive index of the default drive */&lt;br /&gt;...&lt;br /&gt;    /*&lt;br /&gt;     * Get the current directory string on that drive and its length&lt;br /&gt;     */&lt;br /&gt;...&lt;br /&gt;    ret = GetFullPathName( drvstr, maxlen, p, &amp;pname );&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;    return p;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Теперь вопрос на засыпку: от чего зависит текущая директория в Windows?</description>
  <comments>http://mikeme.livejournal.com/10516.html</comments>
  <category>программинг</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/10258.html</guid>
  <pubDate>Mon, 15 Dec 2008 08:40:18 GMT</pubDate>
  <title>Надо и поворчать</title>
  <link>http://mikeme.livejournal.com/10258.html</link>
  <description>Разгрести десятки мегабайт исходников вручную (типа убрать кучу навоза лопатой) - это работка для меня, а вот придумать креатифф - нее, тут сразу найдутся охотники...</description>
  <comments>http://mikeme.livejournal.com/10258.html</comments>
  <category>программинг</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/10084.html</guid>
  <pubDate>Fri, 12 Dec 2008 13:52:27 GMT</pubDate>
  <title>Ясность и чистота кода VS &quot;лишь бы работало&quot;</title>
  <link>http://mikeme.livejournal.com/10084.html</link>
  <description>Меня часто ругают за грязный код. За copy/paste. За баги. Но позвольте! Дорога к т.н. &quot;чистому&quot; коду лежит как раз через copy/paste и через &quot;грязный код&quot;. Код должен пройти много стадий рефакторинга, прежде чем он превратится в образчик чистоты (тьфу!), где даже комар носа не подточит, где царит идеальная стерильность, как в операционной, где все выверено до последней буковки, где улучшать уже нечего. До этой стадии &quot;нирваны&quot; дойдет далеко не весь написанный код, а хорошо, если 1/100 его часть, а все остальное так и останется &quot;грязным мусоросборником&quot;, неясным, нечистым, непонятным отстоем.</description>
  <comments>http://mikeme.livejournal.com/10084.html</comments>
  <category>программинг</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/9865.html</guid>
  <pubDate>Thu, 11 Dec 2008 11:57:16 GMT</pubDate>
  <title>Idea Fix</title>
  <link>http://mikeme.livejournal.com/9865.html</link>
  <description>Goщgle сделал онлайн-версию Офиса. Adobe скоро сделает online-версию Photoshop-а.&lt;br /&gt;А мне бы сделать нотный редактор-онлайн.&lt;br /&gt;Прикиньте: онлайн-редактор с продвинутыми фичами, как в Finale, добровольцы будут туда перебивать все произведения мировой музыкальной культуры, будет онлайновая библиотека партитур - рай для музыкантов, откуда каждый композитор типа Шнитке сможет запэйстить к себе в сочинение целые цитаты из классиков, а каждый композитор не типа Шнитке будет иметь в арсенале готовые паттерны типа &quot;вставить генеральную паузу&quot; или &quot;вставить стандартный рок-н-ролльный квадрат&quot; или &quot;поместить в корзину всю партитуру&quot;. Нет проблемы с публикацией нот новоиспеченных композиторов, с поиском нот для исполнителей и дирижеров...ээх, мечты, мечты...А ведь такого редактора реально сейчас нет! И можно заработать миллионы, миллиарды долларов на баннерной рекламе, если занять эту нишу первым!!! Срочно! Срочно! Все бросать и делать редактор!</description>
  <comments>http://mikeme.livejournal.com/9865.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/9478.html</guid>
  <pubDate>Wed, 10 Dec 2008 11:24:43 GMT</pubDate>
  <title>file or folder?</title>
  <link>http://mikeme.livejournal.com/9478.html</link>
  <description>Задался вопросом: каков самый быстрый и лучший способ определить, является ли данный filename файлом или директорией на файловой системе? Платформа - Windows.&lt;br /&gt;1. Плохой и медленный способ:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;struct _stat s;&lt;br /&gt;int error = _wstat( path, &amp;s );&lt;br /&gt;bool isFolder = !error &amp;&amp; ( s.st_mode &amp; _S_IFDIR );&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Получает всю инфу для файла (много лишнего делает), доставая и даты/времена. Если дата &amp;lt; 1900 или &amp;gt; 3000 года, не работает.&lt;br /&gt;2. Хороший способ, но не идеальный (поиск-то там не нужен).&lt;br /&gt;&lt;code&gt;&lt;br /&gt;WIN32_FIND_DATA findFileData;&lt;br /&gt;HANDLE hFind = FindFirstFile( path, &amp;FindFileData );&lt;br /&gt;bool isFolder = findFileData.dwFileAttributes | FILE_ATTRIBUTE_DIRECTORY;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;3. Eureka!&lt;br /&gt;&lt;code&gt;&lt;br /&gt;DWORD dwAttrs = GetFileAttributes( path ); &lt;br /&gt;bool isFolder = dwAttrs | FILE_ATTRIBUTE_DIRECTORY;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Oops..в MSDN написано, что GetFileAttributes function retrieves a set of FAT file system attributes.&lt;br /&gt;4. Final&lt;br /&gt;&lt;code&gt;&lt;br /&gt;struct _WIN32_FILE_ATTRIBUTE_DATA buff;&lt;br /&gt;memset( &amp;buff, 0, sizeof( buff ) );&lt;br /&gt;BOOL result = GetFileAttributesExW( path.getPtr(), GetFileExInfoStandard, &amp;buff );&lt;br /&gt;bool isFolder = result &amp;&amp; ( buff.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY );&lt;br /&gt;&lt;/code&gt;</description>
  <comments>http://mikeme.livejournal.com/9478.html</comments>
  <category>c++</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://mikeme.livejournal.com/9366.html</guid>
  <pubDate>Mon, 08 Dec 2008 19:14:32 GMT</pubDate>
  <title>Тяжела и неказиста жизнь простого программиста - день 1 - продолжение</title>
  <link>http://mikeme.livejournal.com/9366.html</link>
  <description>Задача: дан exe-шник, в нем лежат два xslt-шника.&lt;br /&gt;Кто-нибудь знает, как _штатно_ заинклюдить один в другой (xsl:include), а то я своими тупыми мозгами еще не скоро до этого дойду? Протокол res не работает, а глючит (&lt;a href=&quot;http://support.microsoft.com/?scid=kb%3Ben-us%3B220830&amp;x=13&amp;y=12&quot;&gt;http://support.microsoft.com/?scid=kb%3Ben-us%3B220830&amp;x=13&amp;y=12&lt;/a&gt;). MS, как обычно, рулит...</description>
  <comments>http://mikeme.livejournal.com/9366.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
</channel>
</rss>
