<?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>Stupid notes on my fucking life</title>
  <link>http://hobohabilis.livejournal.com/</link>
  <description>Stupid notes on my fucking life - LiveJournal.com</description>
  <lastBuildDate>Fri, 18 Dec 2009 06:02:32 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>hobohabilis</lj:journal>
  <lj:journalid>15001265</lj:journalid>
  <lj:journaltype>personal</lj:journaltype>
  <atom10:link rel='hub' href='http://pubsubhubbub.appspot.com/' />
  <image>
    <url>http://l-userpic.livejournal.com/87428340/15001265</url>
    <title>Stupid notes on my fucking life</title>
    <link>http://hobohabilis.livejournal.com/</link>
    <width>100</width>
    <height>100</height>
  </image>

<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/35631.html</guid>
  <pubDate>Fri, 18 Dec 2009 06:02:32 GMT</pubDate>
  <title>Спасите мои уши!</title>
  <link>http://hobohabilis.livejournal.com/35631.html</link>
  <description>В последнее время по 1-ому каналу телевидения прокручивают рекламный ролик сочинской Олимпиады 2014 года. Зачем они это делают, мне не понятно, потому что все заинтересованные лица начали готовиться к Олимпиаде загодя, зная точное место и время ее проведения. Если не нашлось лучшего применения бюджетным деньгам или эфирному времени, то излишками можно было бы поделиться с &lt;a href=&quot;http://www.podari-zhizn.ru/&quot;&gt;благотворительным фондом &quot;Подари жизнь!&quot;&lt;/a&gt;, например.&lt;br /&gt;&lt;br /&gt;Что касается проблемы моих ушей, то они &quot;вянут&quot; всякий раз, когда вкрадчивый голос зачитывателя текста телерекламы доходит до слов: &quot;мы трудно зарабатываем на Севере и легко тратим на Юге&quot;. Да, я понимаю, что не для всех людей с голосом известного телеведущего Познера русский язык является родным, а выражение &quot;working hard&quot; и его производные можно, в принципе, переводить дословно в ESL классе для уезжающих на ПМЖ. Но почему на всем 1-ом канале не нашлось ни одного русского человека, который бы объяснил известному телеведущему, что у нас говорят: &quot;много работаем&quot; или &quot;зарабатываем с трудом&quot;, а &quot;трудно зарабатываем&quot; режет слух.</description>
  <comments>http://hobohabilis.livejournal.com/35631.html</comments>
  <category>Познер</category>
  <category>русский язык</category>
  <category>Телереклама сочинской Олимпиады 2014 год</category>
  <category>трудно зарабатываем</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/35509.html</guid>
  <pubDate>Fri, 18 Dec 2009 03:25:24 GMT</pubDate>
  <title>Он спас страну от голода, гражданской войны и распада</title>
  <link>http://hobohabilis.livejournal.com/35509.html</link>
  <description>Примерно за день до смерти Гайдара его подельник &lt;a href=&quot;http://www.chubais.ru/workplace/news/view/5233/&quot;&gt;Чубайс весьма предусмотрительно обзавелся сетевым дневником&lt;/a&gt;. Не иначе - провидец? А как же! Кого попало во власть не берут. И в 90-х тоже не брали. Кандидатов с учеными степенями тогда было побольше, чем сегодня спортсменов в Единой России. А вот личностей иного масштаба, обладавших талантом предвидеть и избежать голод, гражданскую войну и распад страны, всего двое: Чубайс да Гайдар. Оказывается, оба были для страны во благо, а народ по причине своей бесконечной тупости этого никак ни разумеет, матерными словами покрывает, из кустов палит, отравить пытается. Плохой он, и как свинья неблагодарный этот русский народ. А ведь между тем, оба действующих президента РФ специально для тупых пояснили, что Гайдар был хорошим, и по нему не грех &lt;a href=&quot;http://a-chubais.livejournal.com/961.html&quot;&gt;поплакать вместе с пока что зравствующим Чубайсом&lt;/a&gt;. Как добропорядочный гражданин я тоже пробовал всплакнуть, но (блядь) слезы (сука) по герою некролога ни хуя не льются. Наверное, все-таки правы русские классики, утверждающие, что народ наш всегда прав, и любовь его заслужить нужно.</description>
  <comments>http://hobohabilis.livejournal.com/35509.html</comments>
  <category>Чубайс о смерти Гайдара</category>
  <category>Гайдар</category>
  <category>Смерть Гайдара</category>
  <category>Чубайс</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/35190.html</guid>
  <pubDate>Wed, 16 Dec 2009 06:27:44 GMT</pubDate>
  <title>Говнокод высокого уровня</title>
  <link>http://hobohabilis.livejournal.com/35190.html</link>
  <description>На днях я снова попытался отыскать разумное начало в пресловутом Moose, но в очередной раз сдался, ограничившись избирательным полистыванием исходников. Нагромождение едва ли понятных &quot;abstraction layers&quot;, работающих на честном слове в отсутствие продуманной системы отладки и обработки ошибок, отбивает всякое желание испытывать платформу в полевых условиях. Отождествление False-значений, пренебрежение возможностью многократного использования атомарных функций проверки типов вместо часто повторяющихся выражений, передача и возврат списков по значению, злоупотребление прагмой use - все это бросается в глаза прямо сразу. Говорить о самодостаточности Moose тоже нельзя из-за весьма прочных зависимостей от ряда дополнительных CPAN модулей, не поставляющихся вместе с Perl. В целом, код написан старательно плохо, что часто случается, когда разработчику хочется казаться сильно лучше, чем он есть на самом деле. В результате имеем говнокод высокого уровня для решения простых задач наиболее шизофреничным образом.</description>
  <comments>http://hobohabilis.livejournal.com/35190.html</comments>
  <category>perl</category>
  <category>moose</category>
  <lj:security>public</lj:security>
  <lj:reply-count>8</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/35061.html</guid>
  <pubDate>Tue, 15 Dec 2009 05:48:09 GMT</pubDate>
  <title>Рыбак рыбака...</title>
  <link>http://hobohabilis.livejournal.com/35061.html</link>
  <description>Полуденное зимнее небо. Красивое и величественное:&lt;br /&gt;&lt;a href=&quot;http://pics.livejournal.com/hobohabilis/pic/0002b291/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/hobohabilis/pic/0002b291/s320x240&quot; width=&quot;320&quot; height=&quot;240&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Озеро еще не затянулось льдом, но рыбаки везде одинаково нетерпеливы...&lt;br /&gt;&lt;a href=&quot;http://pics.livejournal.com/hobohabilis/pic/0002ccg9/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/hobohabilis/pic/0002ccg9/s320x240&quot; width=&quot;320&quot; height=&quot;240&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://pics.livejournal.com/hobohabilis/pic/0002da6p/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/hobohabilis/pic/0002da6p/s320x240&quot; width=&quot;320&quot; height=&quot;240&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Какие силы управляют этими любителями тонкого льда, мне совершенно не понятно. Или, может, есть в этом испытывании судьбы какой-то кайф подобный тому, что испытывают альпинисты, меряющиеся с горными баранами своим умением выживать выше уровня альпийских лугов. Не знаю... Но со стороны все выглядит глупо и не романтично.&lt;br /&gt;&lt;a href=&quot;http://pics.livejournal.com/hobohabilis/pic/0002ekg2/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/hobohabilis/pic/0002ekg2/s320x240&quot; width=&quot;320&quot; height=&quot;240&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</description>
  <comments>http://hobohabilis.livejournal.com/35061.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/34759.html</guid>
  <pubDate>Tue, 15 Dec 2009 04:24:13 GMT</pubDate>
  <title>Yet another crappy Dell</title>
  <link>http://hobohabilis.livejournal.com/34759.html</link>
  <description>На работе отнимают честно-работающие Thinkpad-ы. Взамен выдают гребаные Latitude-ы с 1Gb ОЗУ, засирающимся touchpad-ом, HDD с 5400 rpm-ами и далее по списку. Выглядит эта хуйня примерно так: &lt;a href=&quot;http://www.dell.com/us/en/business/notebooks/laptop_latitude_e5400/pd.aspx?refid=laptop_latitude_e5400&amp;s=bsd&amp;cs=04&quot;&gt;http://www.dell.com/us/en/business/notebooks/laptop_latitude_e5400/pd.aspx?refid=laptop_latitude_e5400&amp;s=bsd&amp;cs=04&lt;/a&gt;&lt;br /&gt;Одной рукой не открывается. В docking station вставляется с трудом и со скрипом оттуда вынимается, при этом всякий раз возникает ощушение, что чего-то сломал. Весит на удивление мало - не более 3 фунтов, но это, пожалуй, вторая положительная черта устройства, если первой считать slim и fancy-looking блоки питания. В остальном все тот же crappy Dell. Больше всего добивает бесплатная сумка себестоимостью полтора юаня: &lt;a href=&quot;http://accessories.us.dell.com/sna/products/Classic/productdetail.aspx?c=us&amp;l=en&amp;s=bsd&amp;cs=04&amp;sku=330-5044&quot;&gt;http://accessories.us.dell.com/sna/products/Classic/productdetail.aspx?c=us&amp;l=en&amp;s=bsd&amp;cs=04&amp;sku=330-5044&lt;/a&gt;&lt;br /&gt;Надо иметь какой-то особый талант, чтобы засовывать и вынимать из нее ничем не примечательный 14-ти дюймовый лэптоп. Для чего этой сумке нужны наружные карманы на молнии не понятно вообще, т.к. в них даже блокноту тесно. Блядь... - и куда только катится этот мир наживы и чистогана?</description>
  <comments>http://hobohabilis.livejournal.com/34759.html</comments>
  <category>делл</category>
  <category>делл - говно</category>
  <category>crappy dell</category>
  <category>fucking dell</category>
  <category>dell</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/34328.html</guid>
  <pubDate>Fri, 11 Dec 2009 04:12:38 GMT</pubDate>
  <title>Импорт XML/XSD в базу данных Sybase ASE</title>
  <link>http://hobohabilis.livejournal.com/34328.html</link>
  <description>Есть любопытная задача: импортировать группу XML файлов, описанных XSD-схемами, в базу данных Sybase ASE (это схема данных в терминологии Oracle). Требуется предложить универсальное решение независящее от конкретных XSD-схем с тем, чтобы реляционная модель данных могла изменяться динамически - без участия программиста. Сама база не предназначена для долговременного хранения информации и используется в качестве транзитной: для первичной обработки и последующей пересылки данных. С точки зрения СУБД объемы входных данных исчисляются десятками миллионов строк. Задачу необходимо решать средствами Perl и ASE, но без каких-либо полезных в контексте поставленной задачи дополнений вроде: ASE_JAVA, ASE_XMLMGMT, ASE_CONTMGT и пр.&lt;br /&gt;&lt;br /&gt;С одной стороны, мне бы не хотелось использовать Perl и libxml поскольку XML парсер (предположительно Xerces) есть и в ASE, иначе мы тупо произведем на свет еще одного гетерогенного уродца с массой зависимостей. С другой стороны, я сильно сомневаюсь, что возможностей T-SQL и XPath хватит, чтобы из произвольных XSD на лету слепить новую базу данных.</description>
  <comments>http://hobohabilis.livejournal.com/34328.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/34091.html</guid>
  <pubDate>Thu, 03 Dec 2009 05:19:12 GMT</pubDate>
  <title>Кукловодство по-американски</title>
  <link>http://hobohabilis.livejournal.com/34091.html</link>
  <description>Все-таки интересно, кто ж это надоумил хорошего президента Обаму, пришедшего на смену плохому Бушу, отправить в Афганистан очередную партию солдат стоимостью 30 миллиардов долларов? Да еще и в канун католического Рождества? Наверное, пришла пора платить народу по счетам - и за лишний четвертной к пособию по безработице, и за малопривлекательный энерджи-стар и даже за пролетевший мимо большинства автовладельцев кэш-фор-кланкерс. А то, &quot;богатые евреи из Флориды&quot; останутся без праздничных подарков от Lockheed Martin и Raytheon.</description>
  <comments>http://hobohabilis.livejournal.com/34091.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/33852.html</guid>
  <pubDate>Thu, 03 Dec 2009 04:56:24 GMT</pubDate>
  <title>Свежо придание, да верится с трудом...</title>
  <link>http://hobohabilis.livejournal.com/33852.html</link>
  <description>Что вообще можно хотеть от чиновников, если уже и приличных бомбистов не осталось? Вон те, что (говорят) &quot;Невский Экспресс&quot; подорвали, вместо того, чтобы тайком заложить радиоуправляемую бомбу под мостом или в тонелле каком-нибудь, выбрали местом теракта ничем не примечательные окрестности деревни Лукошино. Мало того, успели еще и с местными жителями раззнакомиться. По дворам ходили парами, от дома к дому перемещались на серебристом внедорожнике, говорили с кавказским акцентом. Ну, какие циники! Но ничего... Думаю, теперь их очень скоро отыщут и в сортире замочат, как это уже когда-то было с исполнительными и аккуратными подкладывателями гексогена.</description>
  <comments>http://hobohabilis.livejournal.com/33852.html</comments>
  <category>Невский экспресс</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/33605.html</guid>
  <pubDate>Tue, 24 Nov 2009 05:43:20 GMT</pubDate>
  <title>Дежавю</title>
  <link>http://hobohabilis.livejournal.com/33605.html</link>
  <description>Прошедший на днях съезд партии &quot;Единая Россия&quot; мало чем отличался от памятных съездов КПСС. Во всяком случае, надо сильно постараться, чтобы отыскать хотя бы десять отличий. Триколор вместо кумача, какой-то левый &quot;Мишка на севере&quot; там, где в самую пору красоваться Серпу и Молоту, какие-то молокососы в зале вперемешку со спортсменами-интеллектуалами, вдумчиво слушающими монологи о неизбежном светлом будущем, ошибках прошлого и все тех же временных трудностях. Вообщем, все как обычно. Заметил лишь одно принципиально-важное отличие. Раньше народ и власть мирно сосуществовали в одном примерно одинаковом мире, и народ (может, и не вполне искренне) но все-таки готовился к партийным съездам, перевыполняя план на заводах и фабриках. А нынешняя власть форкнулась окончательно и бесповоротно. Живет сама по себе, разговаривает сама с собою и с собою же борется, искореняя коррупцию какими-то высокотехнологичными методами. Мне просто любопытно, а чего ж у них там на самом деле творится в коридорах власти, если всяк туда входящий практически не имеет шансов остаться нормальным человеком? Может, там над нашими согражданами во всю экспериментируют злые инопланетяне, а мы тут тупо молчим, кушая про нанотехнологии, помощь АвтоВАЗу, дифференцированную индексацию вкладов в Сбербанке с учетом возраста вкладчика, пенсии зашкаливающие за прожиточный минимум, и еще эти энергосберегающие лампочки для решения демографических проблем.</description>
  <comments>http://hobohabilis.livejournal.com/33605.html</comments>
  <category>Съезд партии Единая Россия</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/33426.html</guid>
  <pubDate>Sat, 21 Nov 2009 06:32:14 GMT</pubDate>
  <title>Ботаны маст дай!</title>
  <link>http://hobohabilis.livejournal.com/33426.html</link>
  <description>Есть такая категория программистов перед которыми подразумевается млеть и таять. В простонародье их обычно величают ботанами и ботаниками, а по ту сторону Атлантического океана - nerd-ами или geek-ами, соответственно. Ботаны света белого не видят - программируют чего-то. Живут себе в каком-то параллельном и до неприличия скучном мире if-ов и else-ов как будто бы никого не трогая... - Но говнокод-яяяяя-т... - мама, не горюй! Наверное, потому, что бабу живую никогда не тискали и не догадываются даже, чем еще мужчина отличается от женщины, не считая первичных половых признаков. Вот, передо мной сейчас каждый день мелькает один ботан, который в отсутвие женской любви и ласки нахуячил какую-то пародию не репликацию данных концепциям всех СУБД вопреки. Мне совершенно не интересно, почему он - сука замахнулся на святое, но в морду я б ему дал с превеликим удовольствием.</description>
  <comments>http://hobohabilis.livejournal.com/33426.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/33071.html</guid>
  <pubDate>Fri, 20 Nov 2009 06:17:17 GMT</pubDate>
  <title>CamelCase, camelCase and when_CamelCase_sucks</title>
  <link>http://hobohabilis.livejournal.com/33071.html</link>
  <description>Споры о том, какая из нотаций именования переменных и функций лучше, обычно заканчиваются тем, что о вкусах не спорят. И я не буду, но замечу, что выбор нотации должен обуславливаться не столько вкусовыми предпочтениями автора, сколько спецификой используемого языка программирования. Несложно догадаться, почему программисты на C++, Java, VB и пр. предпочитают CamelCase-ову вязь разделению компонент имени идентификатора символом подчеркивания.&lt;br /&gt;&lt;br /&gt;Во-первых, так короче.&lt;br /&gt;&lt;br /&gt;Во-вторых, когда идентификаторы не имеют префиксной части (в отличие от Perl, например: $scalar, @array, %hash, &amp;function, *glob) можно с одинаковым успехом использовать как lower-, так и UpperCamelCase. А вот, в Perl lowerCamelCase требует меньших энергозатрат при ознакомлении с исходным кодом, сравните: $stayAwayFromMyFuckingCode и $StayAwayFromMyFuckingCode. Первые два символа второго идентификатора имеют схожие начертания и визуально не различаются по высоте, что навряд ли способствует непринужденному восприятию переменной в качестве скаляра. Плохой монитор, на коленке деланный шрифт, антисоциальный окрас текстового редактора или всего терминала сразу могут только усугубить впечатление.&lt;br /&gt;&lt;br /&gt;В-третьих, в компилируемых в машинный код языках программирования никто не балуется с символьными таблицами, объединяя идентификаторы в группы по компонентам имени: qr/^(?:get|set)/ - метод доступа, qr/^is/ - функция проверки, qr/^expect/ - чтобы ругаться, если родственная функция проверки не вернула TRUE, qr/^CFG/ - конфигурационная переменная, qr/^ARG/ - аргумент командной строки и т.д. Да, т. н. фабрики функций нужны далеко не всем. Да, и с ними тоже можно запросто наговнокодить. Но при умелом использовании этой техники программирования существенная часть исходного кода может быть сгенерирована в разы быстрее, чем ее наваляли бы в трудолюбивом Китае. Причем тут CamelCase? А при том, что в природе не существует универсальной функции разбиения на компоненты CamelCase-идентификаторов. Если идентификатор включает в себя акронимы, нужен либо словарь, либо hard-code в регулярном выражении. С индентификаторами вида: qr/^\w+(?:\_\w+)*/ такой проблемы не возникает.&lt;br /&gt;&lt;br /&gt;Ну, и наконец, некоторые приверженцы CamelCase понимают альтернативную underbar-нотацию чересчур буквально: если не mixed-case, значит либо lower- либо upper-case в перемешку с подчеркиванием. И тут сразу же начинает болеть голова об именах собственных, предлогах и акронимах. А зачем? Все просто - если слово в lower-case не употребляется, оставляем как есть: hostname2TLD, is_gcTLD, expect_ccTLD, TLD_bydef и пр.</description>
  <comments>http://hobohabilis.livejournal.com/33071.html</comments>
  <category>нотация</category>
  <category>upper camelcase</category>
  <category>lower camelcase</category>
  <category>camelcase</category>
  <category>подчеркивание</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/32963.html</guid>
  <pubDate>Sun, 15 Nov 2009 02:25:04 GMT</pubDate>
  <title>Мы уже летим к другим планетам...</title>
  <link>http://hobohabilis.livejournal.com/32963.html</link>
  <description>&lt;a href=&quot;http://www.kremlin.ru/transcripts/5979&quot;&gt;Очередное послание президента Федеральному Собранию Российской Федерации&lt;/a&gt; поражает противоречивостью тезисов. К примеру, президент предлагает подумать о сохранении природных богатств для потомков но в то же время ратует за увеличение добычи полезных ископаемых а также использование древесины в качестве перспективного энергоресурса:&lt;br /&gt;&lt;small&gt;&lt;cite&gt;&lt;br /&gt;И, конечно, мы обязаны думать, какие природные богатства сможем сохранить и передать будущим поколениям.&lt;br /&gt;...&lt;br /&gt;В-четвёртых, нам нужно не только наращивать добычу полезных ископаемых, но и добиваться лидерства во внедрении инноваций - как в традиционной, так и в альтернативной энергетике.&lt;br /&gt;...&lt;br /&gt;Одно из наиболее перспективных направлений - это применение широко распространённых у нас биоресурсов, прежде всего древесины, торфа, отходов производства для получения энергоносителей.&lt;br /&gt;&lt;/cite&gt;&lt;/small&gt;&lt;br /&gt;Как я понимаю, строить &lt;a href=&quot;http://www.gepower.com/businesses/ge_wind_energy/en/index.htm&quot;&gt;ветряные мельницы мощностью 1-2.5 МВт&lt;/a&gt; вдоль береговой линии - это для нас слишком просто. Или дорого? Странно... Я слышал, что даже островные государства с ВВП принципиально меньшим, чем у Эстонии могут себе это позволить.&lt;br /&gt;&lt;br /&gt;Следующее противоречие подтверждает отсутствие у властьимущих того, что здесь называется critical thinking abilities. Теоретически таких людей несложно раскрутить на групповой секс и курение марихуаны:&lt;br /&gt;&lt;small&gt;&lt;cite&gt;&lt;br /&gt;Мы обеспечим людей качественными и доступными лекарственными средствами, а также новыми технологиями профилактики и лечения заболеваний...&lt;br /&gt;...&lt;br /&gt;Во-вторых, мы начали переход к использованию энергосберегающих ламп.&lt;br /&gt;&lt;/cite&gt;&lt;/small&gt;&lt;br /&gt;То есть, &lt;a href=&quot;http://en.wikipedia.org/wiki/Fluorescent_lamp#Health_and_safety_issues&quot;&gt;о вреде окружающей среде и здоровью, что таят в себе т.н. энергосберегающие лампы&lt;/a&gt; кремляди просто не слышали. Или притворяются? Или, может, планируют утилизировать отработавшие лампы иными способами нежели, это принято в России?&lt;br /&gt;&lt;br /&gt;Не знаю, видел ли президент, как прокладывают оптоволоконный кабель, чтобы заявлять, что &quot;на нашей территории будут проложены современные высокоскоростные оптические магистрали&quot;. Но как следует из приложенной иллюстрации, для этого нужна не только машина с катушкой кабеля, но еще и дорога. Впрочем, в отсутствие дорог можно воспользоваться кораблями и вертолетами. Может быть тогда вертолеты наконец-то придут на службу людям, а не генералам с губернаторами.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://pics.livejournal.com/hobohabilis/pic/0002aahf/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/hobohabilis/pic/0002aahf/s320x240&quot; width=&quot;320&quot; height=&quot;215&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;lj-embed id=&quot;4&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Президентские сомнения относительно целесообразности часовых поясов и перехода на зимнее-летнее время вынуждают и меня сомневаться в том, что до президента Медведева на свете жили еще и другие далеко не глупые люди. Но возможно, президент обладает каким-то эзотерическим знанием, ранее недоступным ни &lt;a href=&quot;http://en.wikipedia.org/wiki/Sandford_Fleming&quot;&gt;инженеру Флемингу&lt;/a&gt;, ни &lt;a href=&quot;http://en.wikipedia.org/wiki/Quirico_Filopanti&quot;&gt;математику Филопанти&lt;/a&gt;, ни &lt;a href=&quot;http://en.wikipedia.org/wiki/George_Vernon_Hudson&quot;&gt;энтомологу и астроному Джорджу Хадсону&lt;/a&gt;:&lt;br /&gt;&lt;small&gt;&lt;cite&gt;&lt;br /&gt;Примеры других стран (Соединённых Штатов Америки и Китая) показывают, что можно обходиться и меньшей разницей во времени. Это большие страны. Нужно рассмотреть возможность сокращения количества часовых поясов. Конечно, надо просчитать все последствия такого решения. Это касается, кстати, и целесообразности перехода на летнее и зимнее время.&lt;br /&gt;&lt;/cite&gt;&lt;/small&gt;&lt;br /&gt;Остальное мне лень комментировать, но в заключение замечу, что &quot;Силиконова Долина&quot; не является &quot;технологическим центром&quot; как это видится с высоты кремлевских башен.&lt;br /&gt;&lt;small&gt;&lt;cite&gt;&lt;br /&gt;Речь идёт о создании современного технологического центра, если хотите, по примеру Силиконовой долины и других подобных зарубежных центров.&lt;br /&gt;&lt;/cite&gt;&lt;/small&gt;</description>
  <comments>http://hobohabilis.livejournal.com/32963.html</comments>
  <category>Послание президента Федеральному Собрани</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/32635.html</guid>
  <pubDate>Thu, 12 Nov 2009 05:14:03 GMT</pubDate>
  <title>Они такие крутые...</title>
  <link>http://hobohabilis.livejournal.com/32635.html</link>
  <description>Ехал лифтом на работу. В пути вспомнилась КВНовская шутка: &quot;Они такие крутые, что в детстве курили не за гаражами, а перед.&quot; Разглядывая панель управления лифтом, я перефразировал: &quot;Они такие крутые, что пользуются именной кнопкой лифта с логотипом &lt;a href=&quot;http://www.ml.com&quot;&gt;Merrill Lynch&lt;/a&gt;&quot; (см. 34-ый этаж; на 29-ом люди попроще)&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://pics.livejournal.com/hobohabilis/pic/00029410/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/hobohabilis/pic/00029410/s320x240&quot; width=&quot;320&quot; height=&quot;240&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</description>
  <comments>http://hobohabilis.livejournal.com/32635.html</comments>
  <category>merrill lynch</category>
  <category>они - крутые</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/32298.html</guid>
  <pubDate>Sat, 07 Nov 2009 02:37:28 GMT</pubDate>
  <title>А из нашего окна...</title>
  <link>http://hobohabilis.livejournal.com/32298.html</link>
  <description>&lt;a href=&quot;http://pics.livejournal.com/hobohabilis/pic/00028wea/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/hobohabilis/pic/00028wea/s320x240&quot; width=&quot;320&quot; height=&quot;240&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</description>
  <comments>http://hobohabilis.livejournal.com/32298.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/32178.html</guid>
  <pubDate>Fri, 06 Nov 2009 05:44:00 GMT</pubDate>
  <title>Первые впечатления от Sybase ASE 12.5</title>
  <link>http://hobohabilis.livejournal.com/32178.html</link>
  <description>ASE меня ничем не впечатлил, а скорее, наоборот - разочаровал. И прежде всего своей производительностью. Простейшие запросы для правильно проиндексированной таблицы из 2 миллинов относительно коротких строк (общая длина колонок не превышает 128 байт) выполняются долгими секундами. Об OLTP можно даже не мечтать. Песочница, правда, старая, но я знаю точно, что в аналогичной ситуации Oracle 9i (а это ровесник ASE 12.5) на порядок эффективнее распорядился бы двумя UltraSPARC-ами типа T1 и 4Gb ОЗУ. Ну, предположим, что &lt;a href=&quot;http://hobohabilis.livejournal.com/29368.html&quot;&gt;в свое междуверсие&lt;/a&gt; Sybase совершил эдакий breakthrough, и невысокая производительность более не является неразрешимой проблемой, начиная с 15-ой версии продукта.&lt;br /&gt;&lt;br /&gt;Не порадовало меня отсутствие UPSERT, безобразно тупой PRINT (кстати, хороший пример для фанатов строгой типизации), непоследовательный GO (например, после USE или объявления курсора вне процедуры глагол обязателен), масса условий во избежание deferred INSERTs там, где хочется иметь direct, а также deferred UPDATE с неизбежной дефрагментацией устройства. Другим существенным недостатком ASE является невозможность программного управления импортом и экспортом данных. В частности, в T-SQL диалекте Sybase никакого BULK INSERT нету. В качестве компенсации разработчикам предлагается утилита bcp а также xp_cmdshell() на все остальные случаи жизни. Планы выполнения запросов, печатаемые Sybase, выглядят малоинформативными - не отвечающими на вопрос, насколько эффективен тот или иной этап выполнения запроса.&lt;br /&gt;&lt;br /&gt;С точки зрения потребителя, Sybase вообще ужасен, потому что для него не существует бесплатного или относительно недорогого клиента с графическим интерфейсом. Убогий Sybase Central, входящий в поставку ASE, производит впечатление продукта, которым сам производитель никогда не пользуется. Во всяком случае, в прикладных целях. &lt;a href=&quot;http://www.quest.com/toad-for-data-analysts/&quot;&gt;Toad for Data Analysts&lt;/a&gt; продается по полтыщи за копию, но не тянет и на червонец: сделан явно наспех, удобного переключения между серверами и объектами базы данных не имеет, пожалуй, это вообще худший Toad из всех, что я когда-либо видел. &lt;a href=&quot;http://www.aquafold.com/&quot;&gt;Aqua Data Studio&lt;/a&gt; в той же ценовой категории, выглядит привлекательно, но на моем лэптопе рухнула в процессе установки. На соседнем десктопе установилась без проблем, но как потом оказалась, trial-версия не позволяет оценить испытуемый инструмент по достоинству. А кто ж покупает кота в мешке?&lt;br /&gt;&lt;br /&gt;Из хорошего: в ASE имеется мощный репликационный сервер с поддержкой Oracle и DB2. Причем, репликация может быть двусторонней; есть также планировщик задач и функциональные индексы. Вполне возможно, имеется масса других достоинств, о которых я и не догадываюсь. Ну, не зря же ASE мучают в JPMorgan и Citigroup. Значит, есть, наверное, какой-то секрет. Ну, его не может не быть ;)</description>
  <comments>http://hobohabilis.livejournal.com/32178.html</comments>
  <category>ase</category>
  <category>aqua data studio</category>
  <category>sybase ase</category>
  <category>toad for data analysts</category>
  <category>sybase</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/31807.html</guid>
  <pubDate>Thu, 05 Nov 2009 01:44:19 GMT</pubDate>
  <title>Автомобили Нива сводят с ума</title>
  <link>http://hobohabilis.livejournal.com/31807.html</link>
  <description>В марте этого года &lt;a href=&quot;http://auto.lenta.ru/news/2009/03/30/niva/&quot;&gt;Владимир Владимирович Путин прикупил автомобиль Нива&lt;/a&gt;, а уже в ноябре, используя свое служебное положение, &lt;a href=&quot;http://auto.lenta.ru/news/2009/11/04/vazmoney/&quot;&gt;распорядился оказать материальную помощь АвтоВАЗу на сумму эквивалентную 1.9 миллиардам долларов США.&lt;/a&gt;. Интересно, а какие еще побочные эффекты таят в себе автомобили Нива?</description>
  <comments>http://hobohabilis.livejournal.com/31807.html</comments>
  <category>материальная помощь АвтоВАЗу. бэйлаут по</category>
  <category>Нива</category>
  <category>АвтоВАЗ</category>
  <category>Путин</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/31525.html</guid>
  <pubDate>Sun, 01 Nov 2009 03:43:18 GMT</pubDate>
  <title>Эстония? Это где?</title>
  <link>http://hobohabilis.livejournal.com/31525.html</link>
  <description>&lt;cite&gt;&lt;a href=&quot;http://lenta.ru/news/2009/10/31/language/&quot;&gt;В Таллине врач отказался лечить русскоязычного пациента...&lt;/a&gt;&lt;/cite&gt;&lt;br /&gt;&lt;br /&gt;Да, заебали уже. Недобитки, бля.</description>
  <comments>http://hobohabilis.livejournal.com/31525.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/31316.html</guid>
  <pubDate>Sat, 31 Oct 2009 03:28:44 GMT</pubDate>
  <title>Что может быть хуже самодельной репликации?</title>
  <link>http://hobohabilis.livejournal.com/31316.html</link>
  <description>Хуже самодельной репликации может быть только другая самодельная репликация с использованием вспомогательных объектов СУБД и какой-нибудь паранормальной логики порционного обновления данных. Если СУБД не поддерживает репликацию в мере необходимой для построения простой и удобной в поддержке системы - гоу Oracle! В долгосрочной перспективе кулибинщина обойдется дороже любых лицензий.</description>
  <comments>http://hobohabilis.livejournal.com/31316.html</comments>
  <category>самодельная репликация</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/31126.html</guid>
  <pubDate>Fri, 30 Oct 2009 03:16:54 GMT</pubDate>
  <title>Китайцы погубят нашу планету</title>
  <link>http://hobohabilis.livejournal.com/31126.html</link>
  <description>Чем дальше, тем страшнее. Сегодня вычитал, что &lt;a href=&quot;http://www.cpsc.gov/info/drywall/index.html&quot;&gt;китайцы произвели ядовитый гипсокартон&lt;/a&gt; и даже умудрились продать его американцам. Казалось бы, зачем переизобретать и без того дешевый материал, который безо всяких ядохимикатов не подлежит утилизации. Точнее - ошметки гипсокартона тупо захоранивают в Тихом океане (благо он большой самый), поскольку это гораздо дешевле чрезвычайно энергоемкого расщепления на молекулы при сверхвысоких температурах. Вообщем, гаденькая нация хитрожопых торгашей в очередной раз продемонстрировала всему миру, что &quot;Made in China&quot; пострашнее едреной бомбы.</description>
  <comments>http://hobohabilis.livejournal.com/31126.html</comments>
  <category>китайцы - сволочи</category>
  <category>китайский гипсокартон</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/30791.html</guid>
  <pubDate>Wed, 28 Oct 2009 01:08:27 GMT</pubDate>
  <title>А зверушку жалко...</title>
  <link>http://hobohabilis.livejournal.com/30791.html</link>
  <description>Сегодня утром какой-то сумасшедший олень набросился на мою машину. Когда я его заметил, уворачиваться было уже поздно. Пришлось держать удар, понадеявшись, что машину не развернет поперек шоссе, а 300 фунтовая зверушка пролетит мимо лобового стекла на скорости 55-60 миль в час. Короче, мне повезло. А вот оленю, скорее всего - нет. От машины осталось примерно 3/4 того, что было вчера. В автомастерской сказали, что починят, хотя мне показалось, что передняя правая стойка и фронтальная часть рамы сместились. Ну, посмотрим. Если после ремонта дверь, крыло или капот будут висеть криво, стану настаивать на признании &quot;тотал&quot;. Страховая компания не обеднеет. А мне чего-то уже совсем стремно ездить на такой невезучей машине. За 2.5 года это уже 3-ий инцидент. Причем, как говорится, на пустом месте, а не по собственной глупости.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://pics.livejournal.com/hobohabilis/pic/00025ytc/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/hobohabilis/pic/00025ytc/s320x240&quot; width=&quot;320&quot; height=&quot;240&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://pics.livejournal.com/hobohabilis/pic/00026ky7/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/hobohabilis/pic/00026ky7/s320x240&quot; width=&quot;320&quot; height=&quot;240&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://pics.livejournal.com/hobohabilis/pic/000278r9/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/hobohabilis/pic/000278r9/s320x240&quot; width=&quot;320&quot; height=&quot;240&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</description>
  <comments>http://hobohabilis.livejournal.com/30791.html</comments>
  <category>fucking deer</category>
  <category>fucking deductible</category>
  <category>hit a deer</category>
  <category>i&apos;d better buy dyson</category>
  <category>fucking buck</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/30692.html</guid>
  <pubDate>Tue, 27 Oct 2009 04:20:22 GMT</pubDate>
  <title>Зла не хватает...</title>
  <link>http://hobohabilis.livejournal.com/30692.html</link>
  <description>Блядь, за такие вещи надо уволнять и сраных разработчиков, и сраных интеграторов. Что может подумать человек, который вместо домашней страницы Lund видит какую-то хуйню, стилизованную под сообщение об ошибке браузера? - Правильно, что в его компе завелось malware, которое необходимо найти и обезвредить. Вот, так вот. Какой-то прыщавый ботан с куриными мозгами украл у меня три часа драгоценного времени. Наверное, в детстве его мало пиздили, поэтому не знает сука, что уважительное отношение к окружающим является необходимым и достаточным условием выживания в социуме. А все остальное, в т.ч. и умение говнокодить на VB - вещи второстепенные.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://pics.livejournal.com/hobohabilis/pic/00024h9h/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/hobohabilis/pic/00024h9h/s320x240&quot; width=&quot;320&quot; height=&quot;193&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</description>
  <comments>http://hobohabilis.livejournal.com/30692.html</comments>
  <category>fucking morons</category>
  <category>webknight application firewall alert</category>
  <category>lund boats</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/30256.html</guid>
  <pubDate>Fri, 23 Oct 2009 02:51:10 GMT</pubDate>
  <title>Бифштекс, а не стейк!</title>
  <link>http://hobohabilis.livejournal.com/30256.html</link>
  <description>Сдается мне, что некоторые российские рестораторы, называющие бифштекс модным словом &quot;стейк&quot;, просто не знали о существовании говядины, покуда в нашей многострадальной стране не случился период накопления начального капитала посредством разворовывания социалистической собственности.</description>
  <comments>http://hobohabilis.livejournal.com/30256.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/30016.html</guid>
  <pubDate>Thu, 22 Oct 2009 03:25:24 GMT</pubDate>
  <title>Потому что всему надо учиться! И этому тоже.</title>
  <link>http://hobohabilis.livejournal.com/30016.html</link>
  <description>Американцы не умеют пить. До 21-года - категорически нельзя, а после - уже некогда. Так и живут, мертвецки хмелея из-за нескольких банок пива, или после двух бокалов вина, или от одного только запаха водки. Вообщем, жалкое зрелище:&lt;br /&gt;&lt;br /&gt;&lt;lj-embed id=&quot;2&quot; /&gt;</description>
  <comments>http://hobohabilis.livejournal.com/30016.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/29899.html</guid>
  <pubDate>Wed, 21 Oct 2009 01:30:26 GMT</pubDate>
  <title>Слова не юноши, но мужа</title>
  <link>http://hobohabilis.livejournal.com/29899.html</link>
  <description>Из сквишевского руководства:&lt;br /&gt;&lt;cite&gt;&lt;br /&gt;&lt;a href=&quot;http://www.sqsh.org/sqsh.pdf&quot;&gt;The rationale behind this is that I was lazy and didn’t feel like writing all of the same bizarre variable handling, &amp;&amp;’ing, ||’ing, grouping, and variable expansion rules that Bourne shell supports, and instead I let Bourne do the dirty work.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;No complaints about spelling or grammar. I hate documentation, so count yourself lucky that you have a manual page at all. I know that there are more&lt;/a&gt;&lt;/cite&gt;</description>
  <comments>http://hobohabilis.livejournal.com/29899.html</comments>
  <category>sqsh</category>
  <category>руководство</category>
  <category>sybase</category>
  <category>документация</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://hobohabilis.livejournal.com/29506.html</guid>
  <pubDate>Sat, 17 Oct 2009 03:57:55 GMT</pubDate>
  <title>У программистов свои скелеты...</title>
  <link>http://hobohabilis.livejournal.com/29506.html</link>
  <description>В шкафу любого программиста обязательно найдется скелет (а то и не один) какого-нибудь мертворожденного кода. Это - нормально. Мы учились, учимся и будем учиться на собственных ошибках, чтобы, может быть, когда-нибудь уйти на покой со словами: &quot;Я написал все, что мог. Простите, люди добрые.&quot;&lt;br /&gt;&lt;br /&gt;В моем шкафу сегодня обнаружился SQL-запрос для системы перераспределения материальных благ под патронажем местного университета. По прошествии лет реализованную бизнес-логику не смогу объяснить даже хорошему человеку. Зато прекрасно понимаю, почему мои бывшие коллеги перестали приглашать меня на ежегодный Halloween вечере для взрослых программистов. Жаль, конечно. Надо уметь прощать чужие ошибки ;)&lt;br /&gt;&lt;br /&gt;&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;
with
    TMP as (
    select distinct
        requestdata.rid rid,
        requestdata.attr attr,
        lower(requestdata.val) val,
        case
            when
                requestdata.attr=&apos;fffPriEMail&apos; and
                trim(requestdata.val) is not null
            then 1
            when
                ltrim(replace(requestdata.attr, &apos;fffApp&apos;), &apos;0123456789&apos;) is null and
                trim(requestdata.val) is not null
            then 2
            when
                ltrim(replace(requestdata.attr, &apos;fffCoEMail&apos;), &apos;0123456789&apos;) is null and
                trim(requestdata.val) is not null
            then 3
            when
                ltrim(replace(requestdata.attr, &apos;fffMultiPIY&apos;), &apos;0123456789&apos;) is null and
                trim(requestdata.val)=&apos;on&apos;
            then 4
            when
                requestdata.attr=&apos;fffAppTo&apos; and
                upper(trim(requestdata.val))=&apos;FFFDOT - FFF DEPARTMENT OF TRANSPORTATION&apos;
            then 5
        end grp
    from
        requests, formtype, requestdata
    where
        ${\($rid ? qq/requests.rid=? and / : &apos;&apos;)}formtype.abbr=&apos;FFF&apos; and
        requests.ftid = formtype.ftid and
        requests.status = &apos;C&apos; and
        requests.rid = requestdata.rid),
    -- Primary investigators
    PI as (
    select distinct
        A.rid rid, A.val val
    from
        TMP A, TMP B
    where
        A.grp=3 and
        B.grp=4 and
        A.rid=B.rid and
        B.attr=&apos;fffMultiPIY&apos; || replace(A.attr, &apos;fffCoEMail&apos;)
    union
    select rid, val from TMP where grp=1),
    -- Here we&apos;ll find all valid FFF Request IDs (RIDs)
    FFF as (select distinct rid from PI),
    -- Level 2 approvers
    L2 as (select distinct FFF.rid rid, val from TMP, FFF where TMP.rid=FFF.rid and grp=2 minus select * from PI),
    -- Level 2 alternates
    L2_ALT as (
    select distinct rid, val, altsigner0 alt from othersigner, L2 where altsigner0 is not null and usrid=val
    union
    select distinct rid, val, altsigner1 alt from othersigner, L2 where altsigner1 is not null and usrid=val
    union
    select distinct rid, val, altsigner2 alt from othersigner, L2 where altsigner2 is not null and usrid=val
    union
    select distinct rid, val, altsigner3 alt from othersigner, L2 where altsigner3 is not null and usrid=val),
    -- FFFDOT approvers
    FFFDOT as (select distinct FFF.rid rid, ${FN_FFFDOT_PRIAPP()} val from TMP, FFF where grp=5 and TMP.rid=FFF.rid),
    FFFDOT_ALT as (
    select distinct rid, val, altsigner0 alt from othersigner, FFFDOT where altsigner0 is not null and usrid=val
    union
    select distinct rid, val, altsigner1 alt from othersigner, FFFDOT where altsigner1 is not null and usrid=val
    union
    select distinct rid, val, altsigner2 alt from othersigner, FFFDOT where altsigner2 is not null and usrid=val
    union
    select distinct rid, val, altsigner3 alt from othersigner, FFFDOT where altsigner3 is not null and usrid=val),
    -- SPA approvers
    SPA as (select distinct FFF.rid rid, admin val from FFF, cufsba23alts where primary=&apos;1&apos; and admin is not null),
    SPA_ALT as (select distinct rid, val, admin alt from SPA, cufsba23alts where primary=&apos;0&apos; and admin is not null),
    -- Who has already signed on FFF
    TID as (
    select
        tid, FFF.rid rid, actn, usrid
    from
        transactions, FFF
    where
        FFF.rid=transactions.rid and
        actn in (&apos;S&apos;, &apos;C&apos;, &apos;T&apos;)
	),
    -- Looking for the maximum TID for each transaction
    MAX_TID as (select rid, max(tid) tid from TID where actn &amp;lt;&amp;gt; &apos;S&apos; group by rid),
    -- Create a temporary view to find out creators and signers. When signer == 1 val does not refer to the creator
    CREATORS_AND_SIGNERS as (
    select distinct
        TID.rid rid, TID.usrid val, case when TID.actn &amp;lt;&amp;gt; &apos;S&apos; then 0 else 1 end signer
    from
        MAX_TID, TID
    where
        TID.tid &amp;gt;= MAX_TID.tid and
        TID.rid=MAX_TID.rid),
    -- Who created
    CREATORS as (select rid, val from CREATORS_AND_SIGNERS where signer=0),
    -- Who signed
    SIGNERS as (select rid, val from CREATORS_AND_SIGNERS where signer=1),
    -- PI to signed
    PI_SIGNED as (select * from PI intersect (select * from SIGNERS union select * from CREATORS)),
    -- PI to sign
    PI_LEFT as (select * from PI minus select * from PI_SIGNED),
    -- L2 signed
    L2_SIGNED as (
    (select rid, val, val signer from L2 intersect select rid, val, val signer from SIGNERS)
    union
    (select distinct
        L2_ALT.rid rid, L2_ALT.val val, L2_ALT.alt signer
    from
        L2_ALT, SIGNERS
    where
        L2_ALT.rid=SIGNERS.rid and
        L2_ALT.alt=SIGNERS.val)),
    -- L2 to sign
    L2_LEFT as (select * from L2 minus select rid, val from L2_SIGNED),
    -- FFFDOT signed
    FFFDOT_SIGNED as (
    (select rid, val, val signer from FFFDOT intersect select rid, val, val signer from SIGNERS)
    union
    (select distinct
        FFFDOT_ALT.rid rid, FFFDOT_ALT.val val, FFFDOT_ALT.alt signer
    from
        FFFDOT_ALT, SIGNERS
    where
        FFFDOT_ALT.rid=SIGNERS.rid and
        FFFDOT_ALT.alt=SIGNERS.val)),
    -- FFFDOT to sign
    FFFDOT_LEFT as (select * from FFFDOT minus select rid, val from FFFDOT_SIGNED),
    -- SPA signed
    SPA_SIGNED as (
    (select rid, val, val signer from SPA intersect select rid, val, val signer from SIGNERS)
    union
    (select distinct
        SPA_ALT.rid rid, SPA_ALT.val val, SPA_ALT.alt signer
    from
        SPA_ALT, SIGNERS
    where
        SPA_ALT.rid=SIGNERS.rid and
        SPA_ALT.alt=SIGNERS.val)),
    -- SPA to sign
    SPA_LEFT as (select * from SPA minus select rid, val from FFFDOT_SIGNED)
-- Build the FFF routing map
select rid, val usr, null alt, 0 grp, val signer from CREATORS
union all
select rid, val usr, null alt, 1 grp, null signer from PI_LEFT
union all
select rid, val usr, null alt, 1 grp, val signer from PI_SIGNED
union all
select L2_LEFT.rid, L2_LEFT.val usr, alt, 2 grp, null signer  from L2_LEFT, L2_ALT where L2_LEFT.rid=L2_ALT.rid(+) and L2_LEFT.val=L2_ALT.val(+)
union all
select rid, val usr, null alt, 2 grp, signer from L2_SIGNED
union all
select FFFDOT_LEFT.rid, FFFDOT_LEFT.val usr, alt, 3 grp, null signer from FFFDOT_LEFT, FFFDOT_ALT where FFFDOT_LEFT.rid=FFFDOT_ALT.rid(+) and FFFDOT_LEFT.val=FFFDOT_ALT.val(+)
union all
select rid, val usr, null alt, 3 grp, signer from FFFDOT_SIGNED
union all
select SPA_LEFT.rid, SPA_LEFT.val usr, alt, 4 grp, null signer from SPA_LEFT, SPA_ALT where SPA_LEFT.rid=SPA_ALT.rid(+) and SPA_LEFT.val=SPA_ALT.val(+)
union all
select rid, val usr, null alt, 4 grp, signer from SPA_SIGNED
&lt;/pre&gt;&lt;br /&gt;</description>
  <comments>http://hobohabilis.livejournal.com/29506.html</comments>
  <category>sql</category>
  <category>over-engineered code</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
</channel>
</rss>
