<?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/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:mikeme</id>
  <title>Mike</title>
  <subtitle>Mike</subtitle>
  <author>
    <name>Mike</name>
  </author>
  <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom"/>
  <updated>2009-10-23T05:09:52Z</updated>
  <lj:journal userid="442595" username="mikeme" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://mikeme.livejournal.com/data/atom" title="Mike"/>
  <link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:14786</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/14786.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=14786"/>
    <title>Django</title>
    <published>2009-10-23T05:09:52Z</published>
    <updated>2009-10-23T05:09:52Z</updated>
    <category term="программинг"/>
    <content type="html">С горя пошел изучать &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt;.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:14398</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/14398.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=14398"/>
    <title>Быдлокодер (aka Горе-программист; англ. Code Monkey)</title>
    <published>2009-10-22T11:09:55Z</published>
    <updated>2009-10-22T11:09:55Z</updated>
    <category term="программинг"/>
    <content type="html">Почти все, что я программирую, коллегам приходистя переписывать: "Он писал это, не вникая в суть проблемы", "Это написано абы как". Бедные коллеги! Что ж я могу сделать, если я такой идиот и думаю в основном спинным мозгом. Нет, пожалуй, мне пора переквалифицироваться в тестеры, хватит уже мучить коллег и юзеров. Хотя тестером может я еще и худшим буду, чем программером...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:14266</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/14266.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=14266"/>
    <title>ISO files parser/creator</title>
    <published>2009-10-19T06:17:10Z</published>
    <updated>2009-10-19T06:17:10Z</updated>
    <category term="программинг"/>
    <content type="html">Мдаааа...написать его оказалось мегажестью... я даже не ожидал. STL, к сожалению, так и не узнал в процессе написания.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:13972</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/13972.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=13972"/>
    <title>Высокая Нотка на "Детском Радио"</title>
    <published>2009-10-04T19:58:12Z</published>
    <updated>2009-10-04T19:58:12Z</updated>
    <category term="музыка"/>
    <content type="html">Вот и обзавелось "Детское Радио" своим музкультпросветработником. Ля-ля-ля-ля-ля-ля-ля-ля-ля-а-а-а! И всё бы ничего, да только наступил маленькой Высокой Нотке на ухо Боооольшой басовитый - и очень тяжелый - медведь. Не, я серьезно. Взяли бы на роль и.о. Высокой Нотки чувиху, умеющую хотя бы немного петь (я уж не говорю имеющую слух, это почти невозможно в условиях  Д.Р., хотя подошла бы любая выпускница Гнесинки) - было бы гораздо приятнее, да и детям не портился бы слух. А тем временем В.Н. продолжает петь горлом, мимо нот и - о боже - на всю страну и портить слух всем детям Р.Ф. (а ведь детское радио слушают и в Ульяновске, и в Самаре, и в Р.Н.Д. (&lt;a href="http://www.deti.fm"&gt;http://www.deti.fm&lt;/a&gt;)!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:13763</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/13763.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=13763"/>
    <title>Застрелиться</title>
    <published>2009-10-02T07:07:58Z</published>
    <updated>2009-10-02T07:07:58Z</updated>
    <category term="программинг"/>
    <content type="html">Yandex.Server выдает сообщение (у них вообще с английским беда):&lt;br /&gt;Service shot down</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:13333</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/13333.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=13333"/>
    <title>Текучка</title>
    <published>2009-09-02T18:33:18Z</published>
    <updated>2009-09-02T18:33:18Z</updated>
    <category term="программинг"/>
    <content type="html">Сегодня не буду, вопреки обыкновению, себя бичевать. Сами можете оценить мои профессиональные "достижения".&lt;br /&gt;Первая половина дня прошла под знаком Unicode. После неторопливой работы я эасобачил массив на 65536 элементов, по которому можно преобразовывать любую самую затейливую буковку из Unicode в ANSI (никто и не утверждал, что успешно, но все, что может, он преобразовывает!). Универсальный конвертер сделан (облом произошел только с китайско-японскими языками, но это как-нибудь потом настрою)!&lt;br /&gt;Вторая часть дня прошла в обсуждениях и обдумываниях распределенной атаки на пароли по сети. Нужно было продумать и заимплементить одну важную фичу. Когда один компьютер и один поток - это хорошо. Когда два - уже хуже. Когда их много, мозги перестают справляться. ООП рулит, но он значительно превышает по возможностям возможности моего мозга. В результате заимплементил какую-то кривизну, которую придется еще выпрямлять и выпрямлять.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:13138</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/13138.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=13138"/>
    <title>mikeme @ 2009-08-11T20:05:00</title>
    <published>2009-08-11T16:17:39Z</published>
    <updated>2009-08-11T16:17:39Z</updated>
    <category term="программинг"/>
    <content type="html">На днях написал код, кидающий в большом количестве исключения из конструктора и (о ужас!) сам конструктор был аж на 2 экрана. В результате подвергся (о боже!) публичному остракизму с заведением кейса и последующим рефакторингом. Welcome to &lt;a href="http://govnokod.ru"&gt;http://govnokod.ru&lt;/a&gt;!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:12876</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/12876.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=12876"/>
    <title>http://geo-search.ru</title>
    <published>2009-08-10T10:16:16Z</published>
    <updated>2009-08-10T10:16:16Z</updated>
    <content type="html">Зыпустили прыэктик:&lt;br /&gt;&lt;a href="http://geo-search.ru/"&gt;http://geo-search.ru/&lt;/a&gt;&lt;br /&gt;Welcome!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:12647</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/12647.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=12647"/>
    <title>Bad karma</title>
    <published>2009-05-09T07:10:16Z</published>
    <updated>2009-05-09T07:15:17Z</updated>
    <content type="html">Шо ето за на? Юмористы, блин...&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</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:12482</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/12482.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=12482"/>
    <title>Фуф! Наконец-то! Штроили мы штроили и наконец...</title>
    <published>2009-03-03T15:01:15Z</published>
    <updated>2009-03-03T15:02:07Z</updated>
    <category term="программинг"/>
    <content type="html">&lt;a href="http://www.lostpassword.com/kit-enterprise.htm"&gt;http://www.lostpassword.com/kit-enterprise.htm&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:12254</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/12254.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=12254"/>
    <title>prototype.js</title>
    <published>2009-01-16T09:00:43Z</published>
    <updated>2009-01-16T09:11:36Z</updated>
    <category term="программинг"/>
    <content type="html">Дмитрия Котерова в топку! &lt;a href="http://www.prototypejs.org/"&gt;http://www.prototypejs.org/&lt;/a&gt;, и поля доступны в Python через req.values!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:11984</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/11984.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=11984"/>
    <title>AJAX и Python</title>
    <published>2009-01-10T06:46:23Z</published>
    <updated>2009-01-10T12:05:04Z</updated>
    <category term="программинг"/>
    <content type="html">Прикручиваю subj[0] к subj[1]. Использую библиотеку великого гуру Дмитрия Котерова: &lt;a href="http://en.dklab.ru/lib/JsHttpRequest/"&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;"""Removes URLencoded character references from a text string."""&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] == "%u":&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("%u\w{4}", fixup, text)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return re.sub("%\w{2}", 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('&amp;'))&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('=')&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] == '"':&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( 'Check.do, req=%s' % ( 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;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:11699</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/11699.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=11699"/>
    <title>Гуру STL тоже делают ошибки</title>
    <published>2008-12-28T05:21:27Z</published>
    <updated>2008-12-28T05:21:27Z</updated>
    <category term="программинг"/>
    <content type="html">Из книги Скотта Майерса "Эффективное использование STL":&lt;br /&gt;"Библиотека STL не содержит умных указателей с подсчетом ссылок. Написание хорошего умного указателя (то есть такого, который бы всегда правильно работал) - задача не из простых, и заниматься ею стоит лишь в случае крайней необходимости. Я привел код умного указателя с подсчетом ссылок в "more Effective C++" в 1996 году. Хотя код был основан на хорошо известной реализации умного указателя, а перед изданием книги материал тщательно проверялся опытными программистами, за эти годы было найдено несколько ошибок. Количество нетривиальных сбоев, возникающих при подсчете ссылок в умных указателях, просто невероятно."&lt;br /&gt;А вы говорите...если уж даже великий гуру сделал столько ошибок в кажущихся несложными реализациях, что говорить о простых смертных. Коммерческий софт просто кишит ошибками (только 99.99% из них не проявляются и никогда не проявятся на практике).</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:11363</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/11363.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=11363"/>
    <title>Оптимизаторы</title>
    <published>2008-12-26T14:50:34Z</published>
    <updated>2008-12-26T14:50:34Z</updated>
    <category term="программинг"/>
    <content type="html">Воспоминание: повёрнутые на оптимизации яндексоиды оптимизируют даже подсчет количества выставленных битиков в числе, дабы не делать лишние сдвиги!&lt;br /&gt;Суровая правда жизни: клали мы (разработчики коммерческого софта) на всякую оптимизацию, оборачивая даже (!) STL-ные контейнеры.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:11261</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/11261.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=11261"/>
    <title>Сортированная "мапа"</title>
    <published>2008-12-24T15:03:16Z</published>
    <updated>2008-12-24T15:03:16Z</updated>
    <category term="программинг"/>
    <content type="html">Вот что делает с программерами отсутствие знания STL-я.&lt;br /&gt;Понадобилось решить элементарную задачку: из файла (не будем уточнять, какого именно) читаются строки и некие значения, соответствующие этим строчкам. Это классический "хэшмэп". Сейчас апологеты STL-ля съедят меня с криками "в STL нет хэшмэпа, есть просто мэпа!!!". Успокойтесь. Я, как только речь заходит про STL, начинаю сразу в нем "плавать", как тюлень, случайно попавший не в свой водоем, так что не буду с вами спорить. Так вот, вернемся к задачке. Строки читаются произвольно, а пишутся в лексикографическом порядке (естественно, с соответствующими им значениями из hashmap). Что это? Сразу наступил глубокий затык и коллапс. Задачка-то для младшей школы...Ай-яй-яй-яй-яй. Вот что делает с программерами оборачивание STL-ля.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:10894</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/10894.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=10894"/>
    <title>Работайте в Acronis-е!</title>
    <published>2008-12-18T20:13:53Z</published>
    <updated>2008-12-18T20:26:27Z</updated>
    <category term="работа"/>
    <category term="программинг"/>
    <content type="html">Открытое письмо на вакансию&lt;em&gt;&lt;a href="http://www.acronis.ru/company/employment/vacancy/vacancy.html?id=2"&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-ля и объектов синхронизации, памяти не хватает).</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:10516</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/10516.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=10516"/>
    <title>Текущая директория в виндах</title>
    <published>2008-12-17T10:48:40Z</published>
    <updated>2008-12-17T10:48:40Z</updated>
    <category term="программинг"/>
    <content type="html">Понятие "текущей директории" в 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?</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:10258</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/10258.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=10258"/>
    <title>Надо и поворчать</title>
    <published>2008-12-15T08:40:18Z</published>
    <updated>2008-12-15T08:40:18Z</updated>
    <category term="программинг"/>
    <content type="html">Разгрести десятки мегабайт исходников вручную (типа убрать кучу навоза лопатой) - это работка для меня, а вот придумать креатифф - нее, тут сразу найдутся охотники...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:10084</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/10084.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=10084"/>
    <title>Ясность и чистота кода VS "лишь бы работало"</title>
    <published>2008-12-12T13:52:27Z</published>
    <updated>2008-12-12T13:52:27Z</updated>
    <category term="программинг"/>
    <content type="html">Меня часто ругают за грязный код. За copy/paste. За баги. Но позвольте! Дорога к т.н. "чистому" коду лежит как раз через copy/paste и через "грязный код". Код должен пройти много стадий рефакторинга, прежде чем он превратится в образчик чистоты (тьфу!), где даже комар носа не подточит, где царит идеальная стерильность, как в операционной, где все выверено до последней буковки, где улучшать уже нечего. До этой стадии "нирваны" дойдет далеко не весь написанный код, а хорошо, если 1/100 его часть, а все остальное так и останется "грязным мусоросборником", неясным, нечистым, непонятным отстоем.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:9865</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/9865.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=9865"/>
    <title>Idea Fix</title>
    <published>2008-12-11T11:57:16Z</published>
    <updated>2008-12-11T12:12:46Z</updated>
    <content type="html">Goщgle сделал онлайн-версию Офиса. Adobe скоро сделает online-версию Photoshop-а.&lt;br /&gt;А мне бы сделать нотный редактор-онлайн.&lt;br /&gt;Прикиньте: онлайн-редактор с продвинутыми фичами, как в Finale, добровольцы будут туда перебивать все произведения мировой музыкальной культуры, будет онлайновая библиотека партитур - рай для музыкантов, откуда каждый композитор типа Шнитке сможет запэйстить к себе в сочинение целые цитаты из классиков, а каждый композитор не типа Шнитке будет иметь в арсенале готовые паттерны типа "вставить генеральную паузу" или "вставить стандартный рок-н-ролльный квадрат" или "поместить в корзину всю партитуру". Нет проблемы с публикацией нот новоиспеченных композиторов, с поиском нот для исполнителей и дирижеров...ээх, мечты, мечты...А ведь такого редактора реально сейчас нет! И можно заработать миллионы, миллиарды долларов на баннерной рекламе, если занять эту нишу первым!!! Срочно! Срочно! Все бросать и делать редактор!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:9478</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/9478.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=9478"/>
    <title>file or folder?</title>
    <published>2008-12-10T11:24:43Z</published>
    <updated>2008-12-10T12:07:20Z</updated>
    <category term="c++"/>
    <content type="html">Задался вопросом: каков самый быстрый и лучший способ определить, является ли данный 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;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:9366</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/9366.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=9366"/>
    <title>Тяжела и неказиста жизнь простого программиста - день 1 - продолжение</title>
    <published>2008-12-08T19:14:32Z</published>
    <updated>2008-12-08T19:14:32Z</updated>
    <content type="html">Задача: дан exe-шник, в нем лежат два xslt-шника.&lt;br /&gt;Кто-нибудь знает, как _штатно_ заинклюдить один в другой (xsl:include), а то я своими тупыми мозгами еще не скоро до этого дойду? Протокол res не работает, а глючит (&lt;a href="http://support.microsoft.com/?scid=kb%3Ben-us%3B220830&amp;x=13&amp;y=12"&gt;http://support.microsoft.com/?scid=kb%3Ben-us%3B220830&amp;x=13&amp;y=12&lt;/a&gt;). MS, как обычно, рулит...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:9104</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/9104.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=9104"/>
    <title>Тяжела и неказиста жизнь простого программиста, день 1</title>
    <published>2008-12-08T18:58:53Z</published>
    <updated>2008-12-08T19:21:39Z</updated>
    <category term="глюкокодерство"/>
    <content type="html">Час думал над тем, как получить имя дефолтного шрифта через theme API.&lt;br /&gt;Сделал так, предварительно написав wrapper над uxtheme (грязный хак, достойный худших анналов глюкокодерства, как и все мои "поделки", но других вариантов у меня не нашлось):&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Uxtheme wrapper;&lt;br /&gt;HTHEME hTheme = wrapper.openThemeData( 0, L"BUTTON" ); // почему "BUTTON"? какой дурак так пишет?&lt;br /&gt;&lt;br /&gt;String fontName;&lt;br /&gt;&lt;br /&gt;if( hTheme )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LOGFONT themeLogFont;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HRESULT res = wrapper.getThemeSysFont( hTheme, TMT_MSGBOXFONT, &amp;themeLogFont ); // почему TMT_MSGBOXFONT???&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if( SUCCEEDED( res ) )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fontName = themeLogFont.lfFaceName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wrapper.closeThemeData( hTheme );&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;ATTN! Условие - не задействовать HWND, поскольку данный код используется до создания первого окна.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:8865</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/8865.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=8865"/>
    <title>Хреновый программист</title>
    <published>2008-12-08T16:39:34Z</published>
    <updated>2008-12-08T16:39:34Z</updated>
    <content type="html">1) Не сделал Release, когда это надо было, допустив resource leak. Они меня уже зыдылбали, эти Release-ы!&lt;br /&gt;2) Допустил cross-reference, вставив wise pointer на один класс в другой, а в другой - на первый. Я еще должен за cross-reference-ами следить! Делать мне больше нечего!&lt;br /&gt;3) Сделал аццкую багу с утечкой памяти, забыв проставить в базовом классе виртуальный деструктор! Четвертовать!!!&lt;br /&gt;4) Чуть не захреначил xsl:include через протокол res://, вовремя спохватился.&lt;br /&gt;&lt;br /&gt;Короче, в топку! Уволить меня нахрен!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:mikeme:8639</id>
    <link rel="alternate" type="text/html" href="http://mikeme.livejournal.com/8639.html"/>
    <link rel="self" type="text/xml" href="http://mikeme.livejournal.com/data/atom/?itemid=8639"/>
    <title>Внимание!</title>
    <published>2008-02-09T17:12:10Z</published>
    <updated>2008-02-09T17:12:10Z</updated>
    <content type="html">2 марта - выборы Президента Российской Федерации Владимира Владимировича Путина! Ура, товарищи!</content>
  </entry>
</feed>
