<?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:about_zero</id>
  <title>about_zero</title>
  <subtitle>about_zero</subtitle>
  <author>
    <name>about_zero</name>
  </author>
  <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom"/>
  <updated>2009-11-06T17:34:58Z</updated>
  <lj:journal userid="11992164" username="about_zero" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://about-zero.livejournal.com/data/atom" title="about_zero"/>
  <link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:18825</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/18825.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=18825"/>
    <title>снег кружится, летает и тает</title>
    <published>2009-11-06T17:34:58Z</published>
    <updated>2009-11-06T17:34:58Z</updated>
    <content type="html">Сегодня таки убедился, что у меня на машине есть АБС :))</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:18575</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/18575.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=18575"/>
    <title>хозяйке на заметку</title>
    <published>2009-09-15T16:59:04Z</published>
    <updated>2009-09-15T16:59:04Z</updated>
    <content type="html">Очередные заметки на полях.&lt;br /&gt;Итак, исходные данные. Сервер под управлением Win2003 Ent. Edition R2, 32 бита. 8 гиг оперативки. Oracle 10.2.0.3&lt;br /&gt;Как уже понятно, ничего хорошего из такого сочетания получиться не может, ибо ограничение 2 гига на процесс не дает воспользоваться всем богатством.&lt;br /&gt;Итак, что можно сделать. (В принципе, никаких откровений тут нет, все уже разжевано на sql.ru, тут просто компиляция фактов)&lt;br /&gt;1. в boot.ini прописываем ключ /3GB&lt;br /&gt;2. убеждаемся, что включено PAE&lt;br /&gt;3. в реестр прописываем AWE_WINDOW_MEMORY. Есть рекомендации по конкретным значениям для различных конфигураций, я тупо поставил 1Гб (указывать надо в байтах, строковый параметр)&lt;br /&gt;4. Начинаем мучать Oracle. В прниципе, проще всего сделать &lt;br /&gt;create pfile from spfile;&lt;br /&gt;далее, бэкапим на всякий случай этот файлик.&lt;br /&gt;В текстовом варианте правим&lt;br /&gt;use_indirect_data_buffers=true&lt;br /&gt;db_block_buffers = &amp;lt;сколько хотим памяти под кэш / размер страниццы&amp;gt;&lt;br /&gt;&lt;br /&gt;Да, т.к. нам пришлось явно начать распределять SGA, про прелести жизни в виде sga_target можно забыть, поэтому нужно ручками прописать еще как минимум&lt;br /&gt;shared_pool_size&lt;br /&gt;streams_pool_size - нужен для репликации, impdp/expdp&lt;br /&gt;&lt;br /&gt;Еще не забываем про pga_agregate_target, она + все что не кэш должны влезть в 2(3) гига&lt;br /&gt;&lt;br /&gt;далее &lt;br /&gt;shutdown immediate&lt;br /&gt;create spfile from pfile;&lt;br /&gt;startup&lt;br /&gt;&lt;br /&gt;И если все хорошо, то получаем экземпляр, который использует ресурсы нашего сервера как следует</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:18413</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/18413.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=18413"/>
    <title>очередные грабли</title>
    <published>2009-06-11T18:32:06Z</published>
    <updated>2009-06-11T18:32:06Z</updated>
    <content type="html">Просто чтобы в голове не держать.&lt;br /&gt;№1 - alter table &lt;div class='ljparseerror'&gt;[&lt;b&gt;Error:&lt;/b&gt; Irreparable invalid markup ('&amp;lt;enable|disable&amp;gt;') in entry.  Owner must fix manually.  Raw contents below.]&lt;br /&gt;&lt;br /&gt;&lt;div style="width: 95%; overflow: auto"&gt;Просто чтобы в голове не держать.&lt;br /&gt;№1 - alter table &amp;lt;enable|disable&amp;gt; row movement приводит к инвалидации всех пакетов, которые зависят от этой таблицы. А так как для shrink space нужно enable row movement, который по умолчанию выключен, получается больно и обидно :)&lt;br /&gt;&lt;br /&gt;№2 - Это уже скорее антипаттерн. Типичная задача - расчет витрин после окончания загрузки данных в хранилище. Наивная реализация - собрать вызовы всех процедур расчета в одном месте, и дергать этот мега-расчет одним махом. &lt;br /&gt;Недостатки: сложно распарралелить расчет независимых витрин, если нет качественной обработки ошибок, сбой в одной из процедур валит весь расчет. Трудно запустить пересчет только одной витрины.&lt;br /&gt;Так что похоже что гораздо оптимальнее - на каждую процедуру расчета - свой job, объединенные в sequence.&lt;/div&gt;&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:18105</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/18105.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=18105"/>
    <title>хозяйке на заметку</title>
    <published>2009-05-22T19:03:41Z</published>
    <updated>2009-05-22T19:03:41Z</updated>
    <content type="html">oracle 10.2.0.3&lt;br /&gt;impdp схемы (на несколько гигов) с использованием remap_schema приводит к тормозам (более получаса) и падению процесса по out of memory (судя по всему в pga) в момент импорта статистики по таблицам. находил даже ссылку на баг в металинке... выход - указать exclude=statistics и потом ручками ее собрать после подъема дампа...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:17680</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/17680.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=17680"/>
    <title>Эволюция одного процесса</title>
    <published>2009-05-20T16:13:53Z</published>
    <updated>2009-05-20T16:13:53Z</updated>
    <content type="html">"Эволюция одного процесса"&lt;br /&gt;&lt;br /&gt;Disclaimer&lt;br /&gt;Все действующие лица выдуманы, все совпадения с реальностью случайны.&lt;br /&gt;&lt;br /&gt;- Декорации и действующие лица&lt;br /&gt;Фирма А. Есть некоторая система, в которой работают пользователи. Доработки и исправления ошибок идут постоянно, без привязки к версиям.&lt;br /&gt;Разработчик Р&lt;br /&gt;Аналитик А&lt;br /&gt;Менеджер проекта М&lt;br /&gt;Добрый пользователь ДП&lt;br /&gt;Злой пользователь ЗП&lt;br /&gt;&lt;br /&gt;- Действие 0. &lt;br /&gt;ДП. "Ребята, у ват тут фигня какая-то. Посмотрите пожалуйстаЭ&lt;br /&gt;Р. "Так, ага, тут у нас ошибочка. Сейчас мы ее поправим на рабочей базе"&lt;br /&gt;М. Пребывает в блаженном неведении&lt;br /&gt;Р. "Все, поправили, смотрите"&lt;br /&gt;ДП. "Ага, спасибо. Но отвалилось теперь вот здесь"&lt;br /&gt;Р. "Блин"&lt;br /&gt;ЗП. "Ваша система говно! Ничего не работает! Я буду жаловаться!"&lt;br /&gt;&lt;br /&gt;- Действие 1. &lt;br /&gt;М. "Так. Теперь на каждое изменение на рабочей базе вы будете давать на подпись мне бумажку, в которой будет написано, что и зачем вы хотите поменять"&lt;br /&gt;Р. "Yes, sir!"&lt;br /&gt;ДП. "Ребята, а сделайте вот такую вот фишку.."&lt;br /&gt;Р. "Ага, сейчас, сделаем. Только одну бумажку напишу, и на подпись менеджеру"&lt;br /&gt;Р. - М. "Вот, принес бумажку."&lt;br /&gt;М. "А это что? А зачем? Надо? Ну ладно, делай..."&lt;br /&gt;ДП. "Ребят, а вы меня не так поняли... Я то хотел с перламутровыми пуговицами..."&lt;br /&gt;Р. "Блин"&lt;br /&gt;&lt;br /&gt;- Действие 2.&lt;br /&gt;М. "Так, Теперь на любое изменение на бумажке должна быть подпись аналитика, и подпись пользователя, что они это протестировали, и согласны"&lt;br /&gt;Р. "Yes, sir!"&lt;br /&gt;Р. - М. "Вот, принес бумажку. И вот пользователь со всем согласен"&lt;br /&gt;М. "Молодец, давай, выкладывай"&lt;br /&gt;ЗП. "АААА!!! Вы опять все сломали!!! Я буду жаловаться!!!"&lt;br /&gt;М. - Р. "Чё за фигня?"&lt;br /&gt;Р. "Ну это, когда выкладывал, я там пару файлов с теста забыл перенести..."&lt;br /&gt;М. "Все, процесс выкладывания на прод закрываем для разработчиков. А ну быстро забыл пароли! Теперь этим будут заниматься специально обученные люди"&lt;br /&gt;Р. "Yes, sir"&lt;br /&gt;&lt;br /&gt;- Действие 3.&lt;br /&gt;ДП. "Ребят, а у вас теперь фигня в другом месте вылезла"&lt;br /&gt;Р. "Мда. Прохлопали"&lt;br /&gt;М. "Так. Раздолбаи. Вредители. Вводим систему баллов. Принес бумажку - +1 балл, после бумажки что-то сломалось - тебе и тестеру по -3 балла. Уйдете в минуса - ай-яй-яй"&lt;br /&gt;Р. - А. "А подпиши бумажку. Задача плевая, дело верняк"&lt;br /&gt;А. "Ок. Неси еще пару простых, баллы зарабатывать нужно"&lt;br /&gt;&lt;br /&gt;- Действие 4.&lt;br /&gt;Р. - М. "Вот, принес бумажку. Все подписи, красота"&lt;br /&gt;М. "Угумм. Хммм. А как тестировали?"&lt;br /&gt;Р. "Ну... Это А. тестировал, что то там проверили..."&lt;br /&gt;А. "Ну... Это, там щелкнул, что то вылезло, тут что-то посчиталось..."&lt;br /&gt;М. "Раздолбаи! Теперь к каждой бумажке будете готовить еще одну бумажку, где будет написан подробный тест-план"&lt;br /&gt;Р. "Yes"&lt;br /&gt;&lt;br /&gt;- Действие 5.&lt;br /&gt;М. "Таак. Это че? Где документация на код, я тебя спрашиваю! Я те дам самодокументирующийся код! Без документации на доработку никаких подписей!"&lt;br /&gt;Р. (тяжело вздыхая) "..."&lt;br /&gt;&lt;br /&gt;Действие 6.&lt;br /&gt;ДП. "Ребята, произошла срочная фигня, работа встала!!!"&lt;br /&gt;Р. "Ага. понятно. Исправлений там на 5 минут. Через 4 часа все будет исправлено"&lt;br /&gt;ДП "4 часа??? Почему так долго???"&lt;br /&gt;Р. "Ну так это, бумажки писать, подписи собирать..."&lt;br /&gt;Р. "А, сегодня же пятница. Ну тогда до понедельника, в пт. менеджер бумажки не подписывает"&lt;br /&gt;ДП. рычит и превращается в ЗП. "ААА!!! У вас ничего не работает!!! Я буду жаловаться!!!"&lt;br /&gt;&lt;br /&gt;- Действие n.&lt;br /&gt;ДП. "Ребят, а у вас вон там фигня."&lt;br /&gt;Р. "Знаем, заводите задачу, пишите бумагу."&lt;br /&gt;ДП. "У... Этим же надо заниматься. Ладно, обойдусь как нибудь без вас..."&lt;br /&gt;ЗП. "ААА!!! У вас ничего не работает!!! Я буду жаловаться!!!"&lt;br /&gt;Р1. - Р. "Слушай, а у нас ведь там фигня, и все скоро сломается"&lt;br /&gt;Р. "Знаю. Но так ведь это надо задачу заводить, пробивать, бумажки писать... Ну нафиг. Сломается - починим"</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:17550</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/17550.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=17550"/>
    <title>отчет</title>
    <published>2009-04-20T16:52:28Z</published>
    <updated>2009-04-20T16:52:28Z</updated>
    <content type="html">Вот. Завтра исполняется 3 недели с того "прекрасного" момента, как офис банка, в котором я имею честь сидеть на проекте, переехал в Химки. Пришлось из беззаботного пешехода переквалифицироваться в озабоченного водителя :) Ну а также сменить машинку, ибо регулярно ездить на азлыке удовольствия не доставяет. Это вам не раз в неделю на дачу потерпеть.&lt;br /&gt;По времени доставка тела с утра к 8 часам занимает примерно минут 35-40, обратно минут 50. Не сильно хуже предыдущих мест работы. Если ехать общественным транспортом, выходим 1ч 40 мин.&lt;br /&gt;Офис типа класса А+. Ага. По слухам, это первый опты Икеи в построении бизнес-центра. Так что бета-версия. Жрать ходим в Мегу через дорогу. 15-20 минут в одну сторону пешком. Ибо столовая внизу по слухам это дорого и не особо вкусно.&lt;br /&gt;По общему заключению сотрудников, самое плохое в этом офисе - кресла. Блин, испанская инквизиция отдыхает.&lt;br /&gt;Вот. Проект продолжается. Но желания работать на этом проекте, а главное силы воли уже практически не хватает. Все благодаря одному человеку. Вроде бы я и человек спокойный. Но вот нет, достало конкретно. Жаль, но похоже надо будет стряхнуть пыль, освежить в памяти боевые заслуги, и оглядеться вокруг себя. Жаль конечно фирму, она не виновата в том, что один из клиентов неадекватен, но не уверен, что смогу добиться перевода на другой проект. Да и хочется ли мне этого? В общем, хотя говорят и кризис на дворе, но ситуация меня конкретно заебала.&lt;br /&gt;&lt;br /&gt;Ну и напоследок маленькое напоминание самому себе. мониторить базу и состояние объектов на валидность надо постоянно. Первое, что должен сделать правильный админ или DBA - настроить полный мониторинг системы под себя. Надо будет собрать воедино пачку недоделанных своих скриптов, и привести их в порядок. А то надежды, что тут заработает система мониторинга,  как то призрачны. Спасение утопающих - дело рук самих утопающих :)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:17072</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/17072.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=17072"/>
    <title>прозрачность</title>
    <published>2009-02-18T19:17:21Z</published>
    <updated>2009-02-18T19:17:21Z</updated>
    <content type="html">Вот, если предыдущий пост был про прослеживание взаимосвязей "культурным" путем, этот про археологические раскопки :) &lt;br /&gt;Была тут недавно дискуссия на тему, чем кошернее собирать витрины в хранилище - ETL средствами, или средствами самой СУБД. После прослеживания путей растекания данных по хранилищу без участия документации, должен заметить, что у сборки средствами СУБД, есть один большой плюс - легко прослеживаются зависимости и преобразования. Чего не скажешь о ETL, который по сути своей - черный ящик, и автоматизированной обработке поддается весьма плохо, если не сказать отвратительно. Есть конечно исключения, типа SASa, где весь код можно выгрузить и просмотреть, но ведь у нас и не SAS используется :(&lt;br /&gt;ЗЫ: На железный аргумент - а надо писать документацию в полном объеме, мне ответить нечего :) Я полностью согласен, что лучше быть богатым и здоровым :)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:16812</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/16812.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=16812"/>
    <title>мечты, мечты</title>
    <published>2009-02-18T19:07:50Z</published>
    <updated>2009-02-18T19:07:50Z</updated>
    <content type="html">Прорабатывая очередную фичу, столкнулся с необходимостью четкой трассировки требований. Это при том что никаких требований как документов у нас на проекте нет и отродясь не было :)&lt;br /&gt;А в идеале хочется ткнуть пальцем в поле БД, и сразу получить, где, для чего оно нужно и кому понадобилось. Но это конечно уже совсем фантастика. &lt;br /&gt;Похоже, надо будет поднять вопрос о том, что постановок и спецификаций недостаточно. Нужно внедрять полноценное управление требованиями. А то каменный век какой-то.&lt;br /&gt;Остается понять, какую литературу почитать на эту тему, чтобы быть в курсе, до чего дошла современная прогрессивная мысль :)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:16436</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/16436.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=16436"/>
    <title>музыкой навеяло</title>
    <published>2009-02-05T19:08:11Z</published>
    <updated>2009-02-05T19:08:11Z</updated>
    <content type="html">Копался тут с одной базой, которой внезапно стало плохо... Там много всего, но одно уж очень хочется подчеркнуть, ибо сталкивался уже неоднократно. Любой вызов функции в SQL запросе - полусгнившая бомба замедленного действия. Может и не выстрелить, но скорей всего рванет так что мало не покажется. Причем потенциальной засады, если анализируешь только план выполнения запроса, обычно и не видно, т.к. стоимость ее выполнения там не показана... Нужно гнать через trace/tkprof, там всплывает много интересного :) Помню один клинический случай - результат сравнения результатов выполнения функций был условием join'a. На совсем небольшой базе функция успел вызваться за короткий промежуток времени 1 500 000 раз :) Сервер наверное ее уже в лицо узнавал :)&lt;br /&gt;Так что господа - абстракция конечно вещь хорошая, но если есть возможность преобразовать в подзапрос, а еще лучше, тупо присоеденить еще одну табличку, сделайте это. Сервер вам спасибо скажет :)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:16307</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/16307.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=16307"/>
    <title>природа информации</title>
    <published>2009-02-01T08:44:29Z</published>
    <updated>2009-02-01T08:44:29Z</updated>
    <content type="html">Решил тут я выкачать архив своей почты с gmail на свой локальный винт. Выкачал. И вот в процессе разгребания почты за 4 года, подумалось, а имеет ли вообще информация в архиве хоть какую-то ценность для меня? И вообще, пойдя дальше, что в информационном потоке, который ежедневно протекает сквозь нас, имеет ценность, которая не девальвирует через неделю?&lt;br /&gt;К сожалению (а может быть и к счастью), никак у меня не получается консолидировать всю проходящую через меня информацию в одной точке. Да хотя бы потому что используется несколько компьютеров, они меняются, меняются места работы... И вот такого, чтобы собрать почту, переписку по IM, все закладки, ebooks, заметки, куски кода в одном месте - ну не получается. Хотя можно конечно, если поставить себе такую цель.&lt;br /&gt;А теперь возник вопрос - да и стоит ли консолидация и сохранение каких-либо усилий?&lt;br /&gt;Особенно если рассматривать это не на короткой перспективе, например год, а посмотреть издалека, что из информации, которая лежит сейчас, потребуется через 2-3 года? Или же что из информации, которую я собирал 2-3 года назад, сейчас нужно мне? Похоже, что НИЧЕГО.&lt;br /&gt;Технологии меняются, личные архивы используются только при приступах ностальгии.&lt;br /&gt;Действительно важные данные должны находиться в голове. Понимание концепций, опыт, ключевые слова. А кратковременный мусор периодически вымывается, ну и фиг с ним. &lt;br /&gt;В накоплении информации очень много субъективного, иногда она ощущается как вещь, с которой жалко расстаться. Но думаю что возможно. Достаточно провести мысленный эксперимент. Представьте, что вы начинаете новую жизнь. Новая работа, с чистым компом, домашний комп отформатирован, логины и пароли на все сервисы забыты (почта, аська, букмарки, ...), мобильник выкинут. Все, информация только та, что есть в голове. Наступила ли катастрофа? Надеюсь что нет.&lt;br /&gt;&lt;br /&gt;ЗЫ: Пока писал, вспомнил про архив фотографий. Дело конечно приятное, рассматривать фотки из отпуска 4 года назад, но вот честно, имхо все эти просмотры нужны только если пришли гости, и их нечем занять до подачи горячего :))</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:16090</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/16090.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=16090"/>
    <title>спокойствие, только спокойствие</title>
    <published>2008-12-17T04:50:46Z</published>
    <updated>2008-12-17T04:50:46Z</updated>
    <content type="html">&lt;a href="http://blog.not-a-kernel-guy.com/2008/12/16/395"&gt;http://blog.not-a-kernel-guy.com/2008/12/16/395&lt;/a&gt;&lt;br /&gt;а я тут блин понимаешь переживаю над дуростью нашего ББ... По сравнению с гениальными идеями по ссылке это так, фантики... Ну подумаешь новая система именования объектов, когда проект уже на саппорте... будем писать tzx101_operation.cop_pk вместо существующего operation.op_id, и так во всем... Пох... И Нах... Даешь другой проект... уж лучше кипящий бардак, но где можно взять ответственность на себя и делать так, как считаешь нужным без такой опеки...&lt;br /&gt;все, взмахнули рукой и расслабились...&lt;br /&gt;боролся тут с забавным глюком... 2 сервера, почти похожих. на обоих стоит websphere, из-под которой запускается batch через runtime.exec&lt;br /&gt;Так вот, на одном из серверов, при запуске одного специфичного exe, ничего не происходило, в отличии от второго, где все отрабатывало замечательно&lt;br /&gt;первое. товарищи, вычитка выходных потоков дочернего процесса обязательна... а то понимаешь ли, подвисает процесс, ждет когда буфер почистят... Причем до какого то объема batch файла это незаметно (если не стоит echo off), а потом начинается...&lt;br /&gt;и второе. надежнее формировать переменные окружения самому, в batch файле, потому как неизвестно, откуда и как вас будут запускать... потому что пришлось идти через straceNT, чтобы понять, что exe сваливается с exception (код забыл), когда не может найти какую-то dll... Вот почему на одном сервере находит, а на другом нет - хз, параметры запуска я сравнивал... прописал %PATH%, и успокоился...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:14954</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/14954.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=14954"/>
    <title>записки на манжетах</title>
    <published>2008-10-27T11:30:49Z</published>
    <updated>2008-10-27T11:30:49Z</updated>
    <content type="html">Развлекаюсь с небольшим симпатичным дистрибутивом. CRUX. Инициализация в BSD стиле, порты опять почти как в FreeBSD. При установке минимум, далее все ручками.&lt;br /&gt;&lt;br /&gt;Установка ничем особым не отличается для дистрибутивов такого направления, загрузка с boot cd, разметка диска, chroot на размеченный диск, первоначальная настройка rc.conf и сетки, сборка своего ядра, установка lilo/grub, перезагрузка...&lt;br /&gt;Если не угадали с модулями ядра, то повторный процесс :)&lt;br /&gt;&lt;br /&gt;Не забыть сразу в /etc/ports добавить contrib, gnome, kde, xfce репозитории портов, список на сайте&lt;br /&gt;&lt;br /&gt;ports -u чем раньше тем лучше обновить дерево портов&lt;br /&gt;prt-get diff разница между версией в port и установленной&lt;br /&gt;prt-get sysup махом все обновить&lt;br /&gt;prt-get depinst &lt;package&gt; - это чтобы порты сразу с зависимостями&lt;br /&gt;&lt;br /&gt;как обустрою рабочую среду, продолжение следует...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:13715</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/13715.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=13715"/>
    <title>музыкой навеяло</title>
    <published>2008-08-09T11:18:25Z</published>
    <updated>2008-08-09T11:18:25Z</updated>
    <category term="жизня"/>
    <content type="html">"Когда в руках молоток, все вокруг кажется гвоздями"...&lt;br /&gt;А вот когда в руках совковая лопата...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:13517</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/13517.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=13517"/>
    <title>на злобу дня</title>
    <published>2008-06-20T15:13:55Z</published>
    <updated>2008-06-20T15:13:55Z</updated>
    <content type="html">Интересно, каково было бы Гераклу, если бы подвиг по вычистке Авгиевых конюшен ему пришлось бы повторять постоянно, вместо остальных 11ти подвигов?&lt;br /&gt;&lt;br /&gt;NB. а не пора ли вам сударь, обновить свой рекламный щит и встать у дороги?</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:13256</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/13256.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=13256"/>
    <title>диалог, которого не было</title>
    <published>2008-03-26T18:31:37Z</published>
    <updated>2008-03-26T18:31:37Z</updated>
    <content type="html">- Здравствуйте, я бы хотел заказать у вас садовую скамейку. Знаете, обычную такую, пара досок поперек, и спинка.&lt;br /&gt;- Замечательно, что вы обратились именно к нам. Давайте, мы разработаем чертежи скамейки, приходите через неделю.&lt;br /&gt;... прошла неделя...&lt;br /&gt;- Здравствуйте, я насчет скамейки...&lt;br /&gt;- Замечательно что вы пришли. Смотрите, у нас получился замечательный диван в викторианском стиле. Сейчас мы заняты тем, что рассчитываем толщину пуленепробиваемого стекла, стена из которого будет окружать ваш диван.&lt;br /&gt;- Э... минуточку, мне нужна обычная садовая скамейка, ничего более...&lt;br /&gt;- Мы все понимаем, не волнуйтесь. Вот, не могли бы вы взглянуть на эту электрическую схему? Она позволяет вам дистанционно управлять углом наклона спинки дивана. Правда здорово?&lt;br /&gt;- Но мне нужна была всего лишь скамейка...&lt;br /&gt;- Мы специалисты в своем деле, не волнуйтесь. Мы можем предугадать ваши дальнейшие потребности, и заложить механизмы реализации уже прямо сейчас. Как вам идея сделать вместо ножек у дивана гусеницы? Это поможет вам передвигаться на нем по пересеченной местности...&lt;br /&gt;- Да я... Просто хотел поставить ее во дворе, чтобы бабушкам было на чем сидеть...&lt;br /&gt;... хватает топор...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:12503</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/12503.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=12503"/>
    <title>записки на манжетах</title>
    <published>2008-02-02T13:51:19Z</published>
    <updated>2008-02-02T13:51:19Z</updated>
    <category term="cvs mercurial"/>
    <content type="html">Вот, немножко начал игратся с distributed cvs, т.к. до этого опыта никакого с ними не имел. Далее просто неформальное изложение мыслей, чтобы потом не потерялось...&lt;br /&gt;Итак, начинаем играться с mercurial. Почему именно оно, а не darcs или git? Не знаю, честно говоря, просто в памяти отложился.&lt;br /&gt;Итак, начинаем тихие игры. Самый лучший кандидат на контроль версий в linux системе имхо это /etc :) С него и начнем. Нам нужно создать 2 репозитория (можно обойтись и одним, но зачем тогда dcvs? :) ).&lt;br /&gt;1-й, типа удаленный. Для простоты делаем его в домашнем каталоге. &lt;br /&gt;mkdir -p ~/repo/etc&lt;br /&gt;cd ~/repo/etc&lt;br /&gt;hg init&lt;br /&gt;Создали каталог и проинициализировали репозиторий.&lt;br /&gt;Далее уже под root идем в /etc&lt;br /&gt;cd /etc&lt;br /&gt;hg init&lt;br /&gt;hg add &lt;br /&gt;hg commit -m "initial revision"&lt;br /&gt;Проиницализировали типа локальный репозиторий, добавили в него файлы, и закоммитили в локальный репозиторий.&lt;br /&gt;При коммите пишем текст сообщения, иначе по-любому поднимется редактор и заставит его написать :)&lt;br /&gt;В процессе можно поиграться с &lt;br /&gt;hg status - выводит статус файлов в директории относительно хранящихся в локальном репозитории&lt;br /&gt;hg log - показывает лог коммитов&lt;br /&gt;Теперь отправляем файлы из "локального" в "удаленный" репозиторий (иожно делать и под обычным пользователем)&lt;br /&gt;cd /etc&lt;br /&gt;hg push ~/repo/etc&lt;br /&gt;И получаем их в "удаленном" репозитории&lt;br /&gt;cd ~/repo/etc&lt;br /&gt;hg update&lt;br /&gt;&lt;br /&gt;В общем, как я понял, идеология поощряет использование отдельных репозиториев на каждый бранч (путем hg clone), правки там, и потом hg push в родительский, с периодическим выполнением hg poll для обновления содержимого локального репозитория</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:12281</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/12281.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=12281"/>
    <title>бессознательное</title>
    <published>2008-01-28T19:43:45Z</published>
    <updated>2008-01-28T19:43:45Z</updated>
    <content type="html">Видимо после небольшого перенапряжения на текущем проекте начали меня посещать несообразные мысли об альтернативном пути в жизни - т.н. downshifting... Ну типа там свалить в Гоа, питаться бананами, и ничего не делать. Как щадящий вариант с минимумом изменений - пользуясь бумом спроса на программистов, свалить куда-нибудь обычным рядовым программистом клепать формочки и запросы, по вечерам выходя в космос и общаясь с астралом. Звучит все это черезвычайно заманчиво, удачно вписываясь в анекдот про негра и сбор бананов. &lt;br /&gt;К чему это я все написал? Честно говоря не знаю, просто захотелось структурированно изложить кашу, которая сейчас крутится у меня в голове, авось заодно и смысл жизни найдется, и тогда глупые вопросы перестанут возникать.&lt;br /&gt;&lt;br /&gt;ЗЫ: А вот неудобно иногда, что в OCaml по умолчанию string &amp;lt;&amp;gt; char list, и нужно писать преобразование ручками. Или это я такой невнимательный? :)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:11778</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/11778.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=11778"/>
    <title>back to future</title>
    <published>2007-11-22T18:56:09Z</published>
    <updated>2007-11-25T13:11:28Z</updated>
    <content type="html">Читаю сейчас замечательную книжку Leo Brodie "Thinking Forth" (&lt;a href="http://thinking-forth.sourceforge.net/"&gt;ссылка&lt;/a&gt;)&lt;br /&gt;Несмотря на то, что книга выпущена в 1984 году, актуальности своей она не потеряла. Читаю, и все больше убеждаюсь в корректности изречения "Все новое - это хорошо забытое старое".&lt;br /&gt;&lt;br /&gt;Создание DSL как основной способ решения задач.&lt;br /&gt;Быстрые итерации, прототипирование, постоянное взаимодействие с пользователем - основные постулаты Agile методик. &lt;br /&gt;&lt;br /&gt;Помимо всего прочего, и сам язык показался мне весьма интересным и приспособленным именно под подобный стиль разработки.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:11267</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/11267.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=11267"/>
    <title>лохматость</title>
    <published>2007-10-25T17:40:21Z</published>
    <updated>2007-10-25T17:40:21Z</updated>
    <content type="html">"Структура банковских данных слишком сложна, чтобы применять к ней правила реляционного моделирования" - шедевральная цитата, взята &lt;a href="http://dom.bankir.ru/showthread.php?t=77431&amp;amp;page=2"&gt;из обсуждения здесь&lt;/a&gt;.&lt;br /&gt;Это я к тому, что все виденные мной схемы БД для банков, действительно выглядят несколько "лохмато". Широкие таблицы, куча редкоиспользуемых колонок, дублирующихся значений, смешение различных сущностей в одной таблице... Все это в той или иной степени присутствует во всех виденных системах. Похоже, что либо все архитекторы придерживаются этой максимы, либо таков неумолимый эволюционный процесс, что любая схема БД со временем накапливает энтропию и деградирует до 1НФ (или в лучшем случае до 2НФ)?</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:11094</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/11094.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=11094"/>
    <title>классика</title>
    <published>2007-10-02T16:13:20Z</published>
    <updated>2007-10-02T16:13:20Z</updated>
    <content type="html">В очередной раз перечитываю "Путь камикадзе" Йордона. До чего же хорошая, успокаивающая и умная книжка... Просто сейчас вживую наблюдаю все то, что написано в книжке, точность попадания и систематизации просто поражающая....</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:10911</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/10911.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=10911"/>
    <title>забавно</title>
    <published>2007-08-16T16:22:48Z</published>
    <updated>2007-08-16T16:22:48Z</updated>
    <content type="html">Интересно, какое название лучше подойдет - некропрограммист или археолог-программист? Не хочу ни так, ни так на самом деле...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:10642</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/10642.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=10642"/>
    <title>мысли вслух...</title>
    <published>2007-08-09T17:40:24Z</published>
    <updated>2007-08-09T17:40:24Z</updated>
    <content type="html">Еще несколько наблюдений из разряда типовых задач для баз данных. Итак, времязависимые данные. Есть 2 основных подхода для хранения периода актуальности у сущности:&lt;br /&gt;&lt;br /&gt;- EntityPK, ValidFrom. В этом случае периоды постоянства следуют один за другим без разрывов, до следующего ValidFrom с тем же EntityPK. Из явных плюсов - нет проблем с контролем интервалов постоянства (на наличие дырок, на наличие пересечений), нет проблем при загрузке данных в хранилище (нет необходимости корректировать остальные записи). Но есть один явный недостаток - для определения состояния на дату необходим подзапрос&lt;br /&gt;&lt;br /&gt;- EntityPK, ValidFrom, ValidTo. В этом случае все ровно наоборот - простота выборки и сложность добавления и поддержания согласованности данных.&lt;br /&gt;&lt;br /&gt;Кроме чистого подхода, можно например оптимизировать первый вариант для наиболее часто встречающегося случая - запрос актуальных данных на текущую дату, путем добавления поля-признака isActualState. Вариантов реализации много, от триггера до materialized view.&lt;br /&gt;&lt;br /&gt;Но по большому счету это все проблемы физической реализации типа данных - "временной интервал". У Дейта хорошо описано, что это такое и зачем нужно. И вот меня сейчас мучает вопрос - пропустил ли я что-то в возможностях современных СУБД в этой области, или до сих пор нет удобного типа данных для решения подобных задач? &lt;br /&gt;&lt;br /&gt;Здесь неполный список того, что хотелось бы видеть от этого типа даных.&lt;br /&gt;- Задание даты начала, даты конца. Поддержка +/- бесконечности&lt;br /&gt;- Получение длительности.&lt;br /&gt;- Возможность арифметических действий - сложение, вычитание, пересечение, проверка на равенство.&lt;br /&gt;- Проверка вхождения даты в интервал&lt;br /&gt;- Возможность построения индекса по полям данного типа&lt;br /&gt;- Проверка интервала на уникальность (что нет пересечений с другими значениями данного поля)&lt;br /&gt;- Поддержка NULL-значений</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:10244</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/10244.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=10244"/>
    <title>наболело</title>
    <published>2007-07-27T17:51:37Z</published>
    <updated>2007-07-27T17:51:37Z</updated>
    <category term="angry"/>
    <content type="html">Планета Шелезяка. Жизни нет, мозгов нет, населена биомассой...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:10019</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/10019.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=10019"/>
    <title>Аляска, сэр...</title>
    <published>2007-07-26T17:38:09Z</published>
    <updated>2007-07-26T17:38:09Z</updated>
    <category term="funny"/>
    <content type="html">Из разряда wtf...&lt;br /&gt;&lt;a href="http://dom.bankir.ru/showthread.php?t=75882"&gt;Автоматизация&lt;/a&gt; во всей красе :)&lt;br /&gt;Похоже что разработчиков в Диасе уже не осталось...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:about_zero:9850</id>
    <link rel="alternate" type="text/html" href="http://about-zero.livejournal.com/9850.html"/>
    <link rel="self" type="text/xml" href="http://about-zero.livejournal.com/data/atom/?itemid=9850"/>
    <title>заметки на полях</title>
    <published>2007-07-16T18:52:58Z</published>
    <updated>2007-07-16T18:52:58Z</updated>
    <content type="html">Интересно наблюдать эволюцию развития банковских систем "у нас" и "у них". Очень четко прослеживается разница в подходах к проектированию и решаемых задачах. Почти все отечественные системы для банков идут от бухгалтерского учета, соответственно, вся доступная информация о движении средств доступна через проводки и остатки на счетах. Т.е. главное - выполнение ПБУ и банковская отчетность, а собственно задачи учета и анализа - вторичны. В забугорных системах (не могу сказать, что я видел их много, но все же...) - изначально все шло похоже именно от задач учета. Этот подход мне нравится больше, для текущих решаемых задач возьму похоже за образец аналогичный подход...&lt;br /&gt;Еще до кучи мелкая архитектурная заметка - остатки по валютным счетам. Если мы храним приведенную сумму, то записи будут множиться ежедневно, т.к. курс меняется, соответственно идет переоценка остатка. Другой вариант - таблица курсов. Минус - лишнее соединение, недостаточно таблицы курсов ЦБ, потому что нужен курс на любую дату, в т.ч. и на праздники, что выливается либо в подзапросы, либо в доп. логику при загрузке курсов. А вот при хранении первичных документов проще всего сразу хранить приведенную сумму. Так что надо будет прикинуть и выбрать.</content>
  </entry>
</feed>
