2012-04-24

Цветочки-листочки



Оказывается, Гугл позволяет показывать картинки любого размера, автоматически обрезая и масштабируя согласно параметрам в URL. Это работает для картинок загруженных в Picasa Web, в Google+, Blogger:


http://.../w100-h100-p/vl-nex09384.jpg

http://.../w100-h100/vl-nex09384.jpg

http://.../s100/vl-nex09384.jpg

2012-04-11

Три фотографа


- Oh My Gosh!!! Oh My Gosh!!!
- Зря ехал, снимать здесь нечего...

Эти две фотки были сняты в одно время с одной точки.
Черепаха там, внизу, за ограждением.

2012-03-27

Lake Wenatchee & Leavenworth



Несплошные структуры


Структуры, в принципе, не обязаны быть сплошными. Компилятор мог бы, в принципе, хранить часть данных отдельно, оптимизируя патерны доступа и locality, но в современных языках до этого обычно не доходит. Как редко доходит и до несплошного стека, впрочем, я сегодня не об этом. В предыдушие выходные я выкинул из своего домашнего проекта иерархию классов, заменив классы несплошными структурами, до сих пор не могу нарадоваться, насколько все стало проще и понятнее.

Итак было синтаксическое двоичное древо. С узлами и листьями, которые все наследовались от базового класса, содержащего пару указателей, и нескольких обязательных полей. Наследуемые классы имели несколько виртуальных методов и некоторые контекстно-зависимые данные. Классов в синтаксическом дереве было, как операций в языке, несколько десятков. Был такой огромный файл с их определениями.

class Node {
     Node *left, *right;
     Lexem lexem;
     OpCode code;
     Type type;
   public:
     Node();
     virtual ~Node();
     ...
     };

class ConstantNode : public Node { ... };
class IntNode : public ConstantNode { ... int value; ... };
class StringNode : public ConstantNode { ... double value; ... };
...

class Op1Node : public Node { ... };
class MinusOpNode : public Op1Node { ... };
...

class Op2Node : public Node { ... };
class AddNode : public Op2Node { ... };
...

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

struct Node {
     Node *left, *right;
     Lexem lexem;
     OpCode code;
     Type type;
     void *ext;

     Node() : ext(0){ ... }
     ~Node(){ delete ext; }
     };

Важное отличие здесь - поле ext. Оно указывает на контекстно-зависимые данные для данной node. Фактически это продолжение структуры. То, что было непрерывно в классе теперь разорвано, и содержит дополнительный уровень indirection. Однако это дает и преимущества.

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

Появляется возможность менять тип узла на месте. Так у меня работает компилятор, меняя тип по мере того, как удается что-то вычислить новое про данный узел. Сначала, после первого прохода компилятора, строится синтаксическое дерево, но никакой информации оно не содержит, кроме кодов операций. По мере вычислений типов заполняется поле type и иногда создаются вспомогательные структурки с дополнительными деталями и присваиваются полю ext. Дальше происходят некоторые другие вычисления и поле ext получает новое значение.

На самом деле все несколько сложнее, но идея та же. Как ни странно, оказалось, что почти никаких виртуальных методов мне не надо, таблица функций, индексируемая полем code делает все то же самое.

Какова же мораль? Мораль такова, что не все есть объект. Объект - это черный ящик. А иногда черный ящик не удобен, иногда нужна прозрачность, индексируемость. Синтаксическое дерево - вполне себе хороший объект. А узел дерева - вовсе не обязательно. База данных может быть объектом, но записям в базе данных лучше не быть объектами, а быть записями - структурами, состоящими из полей. Объект - там, где надо скрыть внутреннюю структуру, непосредственные данные - там где внутренняя структура должна быть легко доступна.

2012-03-17

Mt Si

Совсем недавно снимал Mt Si с той же точки. А так она выглядит сегодня.

Опять олени.

На мотоцикле удобно фотоохотиться. Можно встать на узкой обочине там, где нельзя остановиться на машине.


2012-03-14

Старик Хоттабыч

Поскольку нормальной ванны в наших домах нет, а погреться иногда хочется, я наконец собрался, задушил жабу и купил ванну внешнюю, которая называется Spa или Hot Tub. В процессе узнал много нового. Оказывается, это не так просто, как ванна в ванной.

Будучи в отпуске, я довольно часто останавливался в местах, где есть бассейн и спа, и не отказывал себе в удовольствии погрузить свои солнечные ожоги в теплую воду и лениво поучаствовать в ненавязчивой беседе. Но только недавно с удивлением узнал, что спа не подключается ни к водопроводу, ни к канализации. Чистота воды поддерживается химикатами и всякими озонаторами в течении 2-3 месяцев, а затем вода просто выливается в соседский огород и заливается заново из садового шланга.

Воду я периодически вожу к дилеру на анализ, где проверяется жесткость, pH, alkalinity и что-то еще. Они распечатывают мне рекомендацию, чего и сколько добавить и в какой последовательности.

Еще одно открытие состояло в том, что эта штука работает как термос и все время поддерживает воду в нагретом виде. Для этого есть специальная крышка. Кстати, пришлось провести отдельный провод на 220V и 50A. Обычные розетки в домах на 120V, но для этой штуки требуется 220. И тем не менее, в первый раз вода нагревалась 8 часов. Те ванны, которые работают от 120V нагреваются за двое суток.

Бывают спа квадратные, со специальными лежанками и водным массажем по всему телу. А мы купили попроще и подешевле, как говорит Лена, "кастрюльку". Но массажные сопла у нее есть по стенкам, туда можно набить аж пять человек, хотя это будут уже почти шпроты. А еще мне нравится вечером включать подводную подсветку, светодиоды меняют цвет, получается красиво. Надо еще купить водонепроницаемые наушники и ловить кайф по полной программе.

Вот я и исполнил одно из своих желаний. Купил себе Хот Таб. Сижу в ней, глажу бороду, смотрю, на сколько еще желаний моей бороды хватит.

2012-03-02

Mt. Si

Путин

При Путине, конечно, не все так плохо, как могло бы быть. А могло бы быть очень плохо. Я даже не могу сказать, что он хуже других кандидатов.

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

Естественным образом власть в патриархальных обществах азиатской модели, типа российского, всегда схлопывается к модели "патриархии". Т.е. лидер выбираемый узким кругом пожизненно. Не только политбюро с генсеком, но и академия наук так и избиралась. В еще более азиатском случае преемником лидера всегда будет сын.

Какова может быть причина? Только одна - крупный бизнес делается на доступе к ресурсам. Если лидер меняется, клан быстро теряет доступ и может быть заменен другим. А чтобы не вставляли палки в колеса - головы с плеч, ну или в тюрьму.

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

2012-02-28

Время жизни

До чего же коротка человеческая жизнь! Только-только человек начал что-то понимать, сложил в голове систему знаний, набрал умений, казалось бы, пользуйся, твори, а не тут-то было. То голова болит, то зубы, а то вдруг депрессия накатывает и мотивация пропадает напрочь. Да и сотворив креатив, надо еще убедить остальных, что (К≠Г && А≠М), для чего надо быть молодым, энергичным и здоровым. Для интеллектуальной деятельности человеку надо жить дольше. И чем дальше - тем дольше. Полагаю, что наука уже дошла в некоторых областях до состояния, когда мы просто не успеваем узнать достаточно для того, чтобы двигаться дальше. Если и не сейчас, то рано или поздно такой тупик познания будет достигнут.

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

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

Деление клеток, дублирование ДНК - тонкий процесс, который не может происходить без ошибок, особенно при температуре на грани их нестабильности. Если произойдет слишком много ошибок, клетка будет уничтожена иммунитетом организма, как чужая. В процессе размножения особей природа корректирует ошибки соединяя два образца ДНК, причем мужская половинка даже делается при пониженной температуре. А внутри одного организма такого механизма нет (AFAIK), ошибки накапливаются с каждым делением. В какой-то момент это должно достигнуть порога. Включится защита и клетка перестанет делиться или будет убита. Что, наверное, и происходит в старости. Регенерация тканей остановится и человек умрет.

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

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

2012-02-19

Просвет

Снято сегодня в долине реки Snoqualmie.

2012-01-31

Haleakala

За окном темно и моросит дождь, а я разглядываю фотографии Мауи. Как там было хорошо! Этот кадр был снят на подлете к острову из окна самолета.