2010-09-29
Прогноз
2010-09-25
Mac Mini
Пишу данный пост вот на этом компьютере. Который под календарем. Mac Mini.
Штучка совершенно бесшумная, маленькая, не слишком мощная, но для маковской операционки вполне достаточная. Поставил на нее привычные программы: Picasa, Chrome. Finder мне всегда нравился, да и к юниксу у меня давние ностальгические чувства. Собрал Wine для остального (полтора часа собирался). Работает. Такого количества багов, как в Убунте, пока не видно. Все чистенько, хоть и бедненько.
В принципе, идеальный компьютер для подключения к телевизору. Но и на стол приятно поставить, и в качестве дополнения к мощному десктопу, или в качестве апгрейда десктопа древнего, как у меня. Особенно, если седьмая винда никак не приживется и после загрузки вызывает иррациональное желание ее немедленно перегрузить в XP или Убунту. Нет, я не PC, I'm Mac. Буду разбираться в Objective-C.
Закрыв книжку
2010-09-19
Сложность
Большинство систем построены по принципу "так уж исторически сложилось". Все связано со всем, чтобы что-то переделать надо все разобрать, потом все собрать. Сломалось одно - не работает ничего. Чтобы добавить фичу, надо поправить все файлы. Сложность растет как экспонента от количества фич. В какой-то момент добавить уже ничего нельзя, все ломается, мало кто понимает как оно работает, проще написать заново, чем переделать. Назовем это мултипликативной, или экспоненциальной сложностью.
Более умный подход состоит в разработке инфраструктуры, когда отдельные фичи могут добавляться независимо. Хороший пример: кодеки видео или аудио. Или приложения для iphone. Есть базовая система, а остальное - приложения. Это аддитивная или линейная сложность. Проблема приложения - это его проблема. На другие приложения это не влияет.
Гениальный подход состоит в такой продуманности структуры, что фичи получаются комбинацией неких базовых элементов, когда несколько элементов дают большое количество фич. По аналогии это можно назвать логарифмической сложностью.
Можно подумать, что последний подход самый замечательный, но это не совсем так. Его проблема в том, что базовые элементы все завязаны, причем так, что изменение их конфигурации меняет все фичи. Проблема одного создает пробему целого измерения в нашей системе. И они должны быть все продуманы одним умом, что затрудняет параллельную разработку. И добавить фичу очень сложно, увеличивая размерность, повышаем сложность, что приводит к тому же тупику, что и первый пример с экспоненциальной сложностью.
Проще всего второй, линейный подход. Пусть все пишут кодеки, фильтры, плагины, приложения. С простым интерфейсом к нашей системе. Мы даже специально можем ограничить или предотвратить взаимодействие таких плагинов-приложений. Чтобы их связи не создавали мультипликативной сложности. Пользователю тоже все понятно. Фича - приложение, видео формат - кодек.
Это в точности то, что делает Apple в iOS. Приложения никак между собой не взаимодействуют, кроме самого минимума. Эплу так проще сохранять контроль над системой, хотя нам это и не всегда удобно. А Микрософт в своем WP7 решил попробовать поиграть в логарифмические игры, которые, как мы знаем, кончаются экспонентой. Посмотрим, посмотрим.
Forest Lake
2010-09-11
Camas Land
2010-09-01
Obsidian
Обсидиан - вулканическое стекло. Внешне напоминает застывший гудрон, но необычайно твёрдое и острое. Об осколок камня можно порезаться, что мы и не преминули сделать. Целые поля обсидиановой лавы вытекли из вулкана Newberry в штате Орегон. Место довольно интересное и недавно обустроенное, сейчас там сделали новую хорошую дорогу, павильон, мостики и дорожки. В окрестностях есть пещеры в лаве и вулканический конус, на который можно подняться на машине. Жаль, что всё мы не успели осмотреть.