Archive for the ‘Uncategorized’ Category

Оборона 22-го центра

October 31, 2009

Вступление.

Мне сняться странные сны. Доктор велит их записывать.  Я записываю.

День войны

Я плохо помню этот день, но я уверен – того, что удержала моя память, мне уже не забыть никогда….

У меня нет имени – только номер. 631.  Я клон. Когда-то давно,  в далекие времена жил один человек, у него были родители, друзья, детство. Он обладал разносторонним мышлением. Он прожил счастливую жизнь и умер. Его ДНК сохранилась. Спустя много лет его клонировали. Так получились МЫ.  Наша группа – с 630-го по 650 – военные ученые. Мы исследуем технологии Чужих. Наш дом – 22-й Исследовательский Центр на краю Территории Людей.

Третья смена всегда такая долгая.  Я углублен в работу. Шепот Системы: “Акустическая станция:  фиксирую воздушное перемещение габаритного объекта. Ожидаемое время контакта – одна минута.”  В углу экрана – красное окно: “Тревога, нападение противника”.

“К оружию!”- орет 630, он у нас за командира. Все быстро-быстро.  Плащ (защищает от легкого оружия). Очки (оружие, карта, коммуникации). “631-й, ракеты!”. Ракетница. 4 единицы. Наверх. Наверх.

“Четыре киборгизированные особи противника”, шепчет Cистема. “Тяжелое лучевое оружие. Ракетная установка”.

Солнце слепит глаза. Больно.   На фоне голубого неба – внезапно – десантная машина Чужих.  Могнул – она уже у земли.

“Луч!!!” – орет командир. Марево в воздухе. Мне становиться страшно и неуютно. Этого не рассказать – кто воевал, меня поймет.

632-й зажегся красным на карте. Плохо.

“Беречь эмиттер!” -командир. Наша последняя надежда – эмиттер. Он разрушает защиту чужих, и мы можем поразить их нашим оружием. Вон он -  ажурная конструкция над нашим куполом. Мы свистнули эмиттер у Чужих и разобрались. Это дало нам значительные шансы в войне.

Чужак пускает ракету. Целит в эмиттер…Тут я включаюсь в игру. Пускаю ракету-перехватчик.  Прицел – захват – пуск. Вспышка в воздухе, ярчайшая вспышка. Оптика резко темнеет. Недостаточно резко.В глазах пятна и круги.

“Пехота!” бормочет Система. 4 Особи.  Ксеношок. Желудок стремиться вывернуться наизнанку.  Чужие в броне, но все равно выглядят омерзительно. Умом ты понимаешь, разбираешь их амуницию – вот оружие, экзоскелет, батарея, броня, жизнеобеспечение, но все вместе это кажется отвратным. Чуждым. Нечеловеческим. Это глумление над эстетикой, это поруганная гармония.

Дальнейшее я помню плохо. Мы дрались. Меняли позиции, снова дрались. Это длилось вечность. Нас осталось пять человек. Мы победили. Они проиграли.  Отбой. Отдых. Вернуться к исследованиям. Инициировать клонов взамен убитых.  Война окончена – до следующего раза.

Комментарий

А мы точно курили “Мальборо”? Один мой друг тоже часто видит такие сны.  Наверно, чем сильнее интеллект, тем выше шансы что-то там прочесть откуда-то…

А не стать ли мне чиновником?

September 26, 2009

А что? Это идея! Деньги платят, а делать ничего не надо. Я как-то, по служебной надобности, побывал у господ чиновников. Отличное, комфортное здание, со вкусом одетые люди, степенно с папочками шествуют по зданию. Никакой суеты, все чинно.  Я, грешным делом, так им тогда позавидовал…

(И систему  для них писали обстоятельную,  без упущения деталей. Могучая СУБД,  профессиональная серверная платформа, защита по высшему гражданскому классу. Тщательное и долгое тестирование, доработки.  Работала надежно и долго, до отмены какой-то там директивы…)

Костюм себе куплю.  Кредит возьму небибический в солидном  банке. В отпуск съезжу. Куда-нибудь, где почище.  Пущай меня отправят на курсы государственных чиновников, где я узнаю как:

  • безопасно брать взятки
  • политика откатов в РФ
  • как заводить и поддерживать связи

Много нового. Некоторым людям везет, они становятся чиновниками сразу же. Некоторым – нет, они становятся ими в среднем возрасте. Кому-то не везет вообще.

Надо принять законодательный акт, защищающий чиновников от произвола МВД, с одной стороны, с другой – табелю о рангах. Соответственно, взятки чтобы все брали “по чину”. Одно дело – подкупить лейтенанта, а другое – дело генерала.  В совдепии за этим ОБХСС наблюдало, а теперь кто?

Откаты, опять же. Надо брать с них налоги.

Современные хокку-2

September 26, 2009

Потерял работу

Но нашел себя

Старость

Теперь я – безработный

September 5, 2009

Все. Уволился. Теперь я – безработный. Надо как следует отдохнуть.

Энтропия (пока не структурировано)

July 6, 2009

 Будем проще

Погубит нас наш вульгарный материализм. Вот предки – всякие там Декарты и Ньютоны – они соображали получше нашего. Есть вот всемирный эфир, законы у него такие-то. Электромагнитное поле похоже на систему зубчатых шестереной, а электичество – на жидкость. Уравнения вот. Объяснять суть вещей не пытались. Мы вот пытаемся, но без особого успеха. Тупые мы и некультурные. Раса паршивых торгашей…

Энтропия больших систем

Так уж получилось, что работаю я с большими системами. В больших системах обязательно что-то идет не так. Хоть что делай. Можешь писать инструкции, правила, назначать штрафы, устанавливать бюрократические процедуры – все без пользы. Всегда определенный процент системы работает криво. А почему?

Энтропийная жидкость

Потому что энтропия – несжимаемая жидкость. Бардак в системе нельзя уменьшить. (а вот увеличить – пожалуйста).  После того как система собрана и вступила в эксплуатацию, уровень ее энтропии составляет определенную величину. Это технический параметр, такой же как производительность. Относительную энтропию системы можно определить как отношение числа нелигимных состояний к общему числу.

Следствие: как бы парадоксально это не звучало, нельзя наладить систему, отлаживая ее по кускам.

Наладишь одно – развалиться другое, будь оно трижды надежным.

Вот простецкий пример: радиоприемник. Если уровень собственных шумов высокий, то как не разгоняй усиление, слабый сигнал не примешь.

Наиболее удивительно то, что проявления энтропии различны. Устранив ее из одного физического процесса, мы получим ее в другом.

Я назвал это явление “спектром энтропии“.  Примеры я наблюдал самые поразительные. Наладили софт  – упал фирменный высоконадежный хард. Наладили хард – половина админов слегла с гриппом (фантастика,а). Ну что сказать? Я бился головой об стену три года. Потом меня озарило.

Состояния

Все дело в числе состояний. Часть легитимные. Остальные нет. Вообразим систему из двух элементов. Каждый элемент имеет два равновероятных состояния. Легитимное – 0 и нелегитимное -1.  Легитимное состояние системы -00. Остальные комбинации нелегитимны. Итого. Всего состояний 4 из которых три паразитных. Энтропия 75%. Еще по-божески..

Методы борьбы

Сократить число паразитных состояний, конечно, нельзя.( В основном из-за феномена, который я называю “прогностический горизонт”.  Проектировщики системы предвидят ее поведение только до определенного уровня. Слоны вылезают потом.)

Можно увеличить вероятность полезных состояний. (усиливая сигнал малошумящим усилителем или объединяя полезные состояния с некоторыми безвредными бесполезными, как это делается в корректирующих кодах). Можно сократить общее число элементов.

Можно понизить до невероятно малой величины вероятность отказа малого элемента (юнит -тесты) Можно сократить время пребывания системы в нелигитимном состоянии (перезапуски, резервирование элементов). Можно делать слабосвязанные системы, которые могут находиться во фрагментарно нелигитимном состоянии. Это избыточность по времени.

Формальное определение

 Формально мы можем выразить энтропию через вероятность правильной работы системы, выражаемую как доля времени системы в нелегитимном состоянии по отношению в общему времени работы.  Может быть равна,  в самом хорошем случае, произведению вероятностей правильной работы отдельных элементов. (ну не так тривиально все, но в целом верно).  Короче говоря, вероятность правильной работы системы никогда не достигает единицы.

Феномен  заключается в том, что энтропия проявляется в различных физических обличьях. Энтропия управляет физическими процессами,  и переходит из одной формы в другую. Как энергия.

Помимо забот об уменьшении энтропии на этапе проектирования системы надо приложить усилия но недопущению роста энтропии в системе. В противном случае система разрушится, рано или поздно. Аппаратура сгорит. Память, вне зависимости от физической реализации, переполнится и\ или зафрагментируется. Сеть зарастет червями и вирусами.

Борьба

Уменьшить общее число состояний. Kiss.

  • Уменьшить вероятность сбоя отдельного элемента. Юнит тесты, готовые элементы.
  • Сократить время пребывания в нелигитимном состоянии. Перезапуски, резервирование
  • Ввести избыточность. По элементам – резервирование. По времени – слабо связанные системы, по состояниям – пороговые схемы, машины состояний. Корректирующие коды
  • Увеличить вероятность полезных состояний – повышение соотношения сигнал\ шум( сопротивление неверным данным на ранних этапах).

Вихревые (не эргодические) случайные процессы

Отдельная специфическая  беда, свойсвенная слабосвязанным системам – основанным на таймаутах, сообщениях, событиях, процессах, потоках…

Наблюдал в программах на Эрланге и одной большой системе, не будем говорить где. Вначале все работает как надо. Потом один процесс упал. Второй слал в это время первому сообщение и тоже упал. Супервизор запланировал перезапуск первого процесса, но его пришлось отложить из-за отсутствия ресурсов. Грохнулся по таймуту третий процесс на удаленном узле. В четвертом процессе переполнилась очередь. И понеслось… В общем и целом неприятности могут так и ходить по кругу. Это очень опасные для системы состояния, поскольку нормальное состояние может и не возвратиться и наступит тепловая смерть системы. В Эрланге OTP придумали именно по этому – чтобы все бегало по рельсе и в дебри не убегало. Как лечить переходные и вихревые процессы: жестко прописывать состояния и переходы. Хотя бы подумать о них. Как на уровне элементов, так и на уровне системы.

Тепловая смерть системы

Рано или поздно наступает момент, когда система все дольше и дольше остается в сбойном состоянии. Наконец, вероятность возврата в норму становиться равной нулю. Наступает смерть системы – распад функций.

Gedanken experiment. Идеальная система

В идеальной системе отсутствуют материальные компоненты. Может ли это означать, что ей не грозит тепловая смерть? Отнюдь! В нашей вселенной существуют необратимые процессы. Так сказать, не все транзакции можно откатить…Необратимость и есть источник повышения энтропии.

Второй момент – наличие нелегитимных состояний, которые система может войти и не выйти.

Иными словами, любую систему, даже идеальную, ждет распад.

Информационная система как субъект термодинамики

 Модель. Совместное воздействие на вход обрабатывающего элемента шумовых и полезных данных.  Полезные данные – набор комбинаций битов, трактуемых как правильные данные. Шумовые данные – все остальные комбинации битов. Отношение числа полезных к числу произвольных и есть отношение сигнал – шум.  Как его поднять? Поставить на входе малошумящий усилитель – каскад, минимально(в идеале-ничего не) добавляющий к битам, а просто фильтрующий нелегитимные комбинации. Если таКой каскад поставить в глубине обработки, то там он пользы не принесет – полезный сигнал смешается с вредным.

 Полезный и вредный

 Фиксированные значения

  • Разрешенные диапазоны
  • Наложенные внутренние зависимости – хеши, контРольные суммы, цифровые подписи
  • Фиксированные длины
  • Корреляция?

Мои комментарии к Торе

July 6, 2009

Читал сабж.  Интересуюсь историей. Занимательная наука… Тора, или Пятикнижие, состоит, как легко догадаться, из пяти книг.

Первые книги достаточно интересны.  А вот в книге Шмот, начиная с главы Трума исключительно интересные моменты начинаются. Там приводится описание Мишкан – переносного Храма древних евреев. Читаю описание храма и меня медленно глаза на лоб лезут – описано коммуникационное устройство!!! Девайс! Девайс для связи с Богом. Приведены точные геометрические размеры. Все покрыто золотом.  Инструкции по изготовлению даны тщательно и буквально.Расписаны инструкции по использованию, когда заходить, что говорить… А самое главное – описано действие. Когда Всевышний обращается к Моше, Его голос звучит между крыльями ангелов, распростертых над крышкой.

Каков принцип  этого девайса  и где он теперь – неизвестно.

Вот и читай древние книги…

 P.S.

Надеюсь, я никого не обидел, в мыслях у меня такого не было. Тора чИтана в русском переводе, с комментариями доктора Герца, главного раввина Британии.

Город, которого нет. Наводнение.

June 22, 2009

Волна

 В Городе нередки зимние шторма. Вот и сейчас город заливает огромная волна, смешанная со снегом и ледяной крошкой. Она покроет  город двух-пятиметровым слоем воды. Удовольствие на неделю, не меньше.

 Убежище

 Народ в панике разбегается с поверхности. Я прячусь в какой-то недостроенной высотке. 23 этаж – тут-то вода меня не достанет,а? Следующая лестница упирается в небо. Ниже все уже занято…

 На этаже – голый бетон, слава богу хоть окна есть. Изо всех щелей дует ветер.

Из несчастных вроде меня на этаже имеется женщина лет 30 с ребенком, старик и какие-то бомжи.

Старик разводит маленький костерок в ведре. Народ потихоньку сползается греться.

 Природа

 Демонстрирует свою сокрушительную силу. Обливаясь от страха потом(высоты очень боюсь) выглядываю из окна. Поверхности не видно, виден только бушующий снежный океан до горизонта. Жутко завывает ветер. Дикая, невозможная картина. Ощутимо стемнело. Мне кажется, что ветер раскачивает здание и оно сейчас упадет. От всего этого мне  становится вконец плохо и я со стонами отползаю от окна.

 Питание

 Учитывая специфику местного климата, в период зимних штормов каждый гражданин обязан каждый день носить с собой НЗ на пять суток. Кроме того, на высоких  этажах всех зданий есть хранилища- “заначки”. Еда, вода, таблетки…  Мои невольные компаньоны тихонечко раскупоривают припасы. Старик ушел искать спрятанную стационарную заначку. Я лежу на оставленном строителями матрасе. Меня серьезно мутит -из за высотной фобии и резкого падения атмосферного давления. Паршиво выглядят все. женщина вон совсем бледная.

Мне бы в туалет, но это нужно идти этажей шесть вниз по лестнице без перил.

 Электичество

 Ясное дело вырубилось. Сотовая связь не работает, лифты встали, водопровод тоже. Уличные телепорты укрыты двухметровым слоем воды.  При всем нашем дутом техногенном могуществе против сил природы мы слабоваты.

 Спасатели

 Какие спасатели? Чай не Америка! (да и вообще не Земля.) Это вам не фильм, мои милые, а суровая реальность.  Будет здорово,  если в нашу высотку забрел хотя один врач, а также если с водой нижние подсобят.

 Что потом

 Спросите Вы. Потом вода спадет, выжившие разбредутся по домам, а умерших свезут в морг. Городские службы еще долго будут отчищать поверхность от грязи, снега, дохлой рыбы, трупов неудачников и прочего мусора.  А мы им будем помогать. Затем тучи уйдут, и проглянет оранжевое Солнце. Наше Солнце.

Эранг : постусловия и инварианты

May 22, 2009

Что есть что

Инвариант процесса – это некоторая функция, вычисленная над состоянием процесса, которая остается постоянной все время жизни процесса.  Если инвариант разрушился, процесс, очевидно, работает неверно.

Постусловие метода (обработчика сообщения) – условие, которое истинно на выходе функции. Касается каких-либо обязательных завершающих действий или выходных параметров. Если постусловие не достигнуто или не выполнено, очевидно, что-то идет не так.

Типовые применения

Инвариант касается состояния процесса.  Мы, программируя на Эрланге, постоянно меняем состояние – особенно явно в шаблонах gen_server. Важно проверить, что мы его не утратили:

handle_call(Msg, From, State)->

 check_invariant(State),

 {reply, Reply, NewState} =  safe_handle_call(Msg, From, State),

    check_invariant(NewState),

{reply, Reply, NewState}.

safe_handle_call(Msg, From, State)->…. // Ваши методы

Что то вроде того. Штука очень полезная, особенно если состояние сложное – есть риск напутать и поставить не то.

Зачем нужны постусловия. Одно из применений – проверка состояния данных перед отсылкой по сети. Важно быть уверенным, что данные уходят правильные (это, правда, не значит, что они правильными придут:)

Продолжение следует…

Язык программирования Erlang

May 16, 2009

Что есть Elang

Во-первых, ссылка : http://www.erlang.org. Язык придумали эрики, жаждавшие облегчить свои мучения при разработке софта для телефонных станций. Можно вполне сказать, что у них получилось – скорость разработки возросла от 9 до 25 раз.

О языке. Эрланг – динамически типизированный строгий функциональный язык. Синтаксис вполне человеческий, чего не скажешь про Лисп и Хаскелл. Впрочем, я их уважаю, особенно Лисп. Для него я в порыве страсти даже написал интерпретатор. Конечно, детский по сравнению с отточенным фирменной реализацией, над которой 40 лет работали лучшие умы человечества.

Язык ориентирован на построение высоконадежных приложений, работающих круглые сутки и без отключений. Достаточно сказать, что приложения можно обновлять без остановки работы – с некототого момента начинает работать новая версия кода и все.  Язык был дополнен массой практических моментов, которые обеспечивают данные возможности – поддержка перезапуска процессов, супервайзинг  и мониторинг, переключение приложения между несколькими узлами и пр.

Процессы и сообщения

Язык дополнен концепцией легковесных процессов и сообщений, которые они передают друг другу. Не сильно новая концепция, но очень к месту. Отлично поддержана мультипросессорные системы. При удачном раскладе прирост производительности линейно растет пропорционально числу процессоров.  Сообщения прозрачно передаются по сети.

Связи и супервизоры

Каждый процесс может быть связан (link) с другим.  Свзять двухсторонняя, включая процессы, расположенные на разных компах. Упал один процесс – падает и другой.  Особый тип процессов, называемых супервизорами, может отслеживать падение просессов и перезапускать их при необходимости. Супервизоры могут образовывать иерархию – дерево супервизоров. Это делает программы на Эрланг просто неубиваемыми. Профессиональные системы на Эрланг работают практически бессбойно.

Встроенная кластеризация

Приложения могут перемещаться от одной – упавшей – ноды к другой. Или, скажем, работать в пуле, распределяя нагрузку.

Богатая библиотека

Поддержана масса технологий – криптография, XML,  CORBA и пр. Все работает очень изящно.

Мультиплатформенность

Unix  <-> Windows не проблема – приложения переносятся в бинарном виде.

Мои впечатления

Два часа думаешь, потом тебя озаряет , пишешь три(!) строки кода  - и задача решена:)

От написания испытываешь удовольствие.  К сожалению, средства IDE пока не сильно разработаны, так что мы пользуемся старым добрым EMACS & Distel.

Отладчик, как правило, не рулит. Рулит трассировка, всякие там вьюверы процессов и пр. Изрядно  радуют профайлеры и средства оценки распараллеленности приложения. Поражен.

Наиболее частая ошибка, которую я делаю – передаю не те данные, которые ожидает функция (издержки динамической типизации). Врочем, постусловия и инварианты решают проблему (об этом – в следующих выпусках).

Еще, как правило, возникают какие-то сложные переходные процессы при сбоях в приложении – то запустилось, это не запустилось…Впрочем, это от плохого дизайна. Правильный дизайн приложения должен учитывать эти моменты.

Интероперабельность несколько геморройная. Врочем, мне, как опытному в этом деле человеку, показалось легкой (у меня есть с чем сравнить – с Java, .Net, COM).

Быстродействие виртуальной машины очень высокое. Достаточно сказать, что в в реальном времени успеваю обрабатывать сообщения сотни килобайт каждое.

В целом,  от программирования испытываешь удовольствие.

Почему я вернулся

May 16, 2009

От себя не убежишь. Раз я блоггер, то так тому и быть. Кроме того, я сменил работу и профиль специализации. Теперь я пишу на Эрланге. Все, что я, возможно, неосознанно делал на других языках для обеспечения надежности приложений – все реализовано и поддержано в Эрланге.