2008-12-29

Сам писи!

Микрософт завесил все станции метро (BART) в Сан-Франциско вот такой рекламой. Которая, как обычно, является "достойным ответом" на придуманное другими. Рекламная серия предлагает мне сказать "I'm a PC". Какой я вам писи! И не мак, и не грамофон, и не тостер! I'm human. А за PC ответишь...

2008-12-24

SFO

Только что приехали из Сан-Франциско. Небольшая трехдневная поездка превратилась в недельное приключение. Сама поездка была небезынтересной. Три дня впечатлений. Но когда мы, уставшие и довольные, приехали в аэропорт, оказалось, что обратный рейс был отменён по случаю непогоды в Сиэтле. Нам дали талон в гостиницу и перенесли рейс на "завтра", что поначалу вызвало у нас даже некоторый интерес: ещё один день, задаром. Но когда его отменили снова и перенесли рейс уже на четверг, т.е. на день после рождественских праздников, причём, по прогнозам это могло оказаться не последним переносом рейса, это вызвало у нас просто шок. К тому же бесплатных гостиниц больше не предлагалось. Ещё оказалось, что поезда тоже не ходят, автобусы не ходят, и вообще ничего никуда не ходит, короче, "делайте, что хотите". А хотели мы домой. Дома выпал снег! В кои веки! И мы сомневались, сомневались, но решились поехать сами! Прогноз погоды обещал один день без осадков, что давало шанс удачно проехать. Взяли машину, купили цепи на колёса, и поехали. Оказалось даже чуть легче, чем я ожидал. Местность обитаемая, множество гостинниц и заправок. Цепи пришлось надеть дважды. На перевале после озера Шаста и около Портланда. У последнего был самый противный участок с пробкой, в которой мы ползли очень долго. Пробка была из за нечищенной и заледеневшей дороги. Но в целом дорога была довольно хорошая. Всего ехали два дня, проехали порядка 800 миль за 16 часов, из них часа 3 потеряли в Портланде. Такое вот приключение. Мне даже понравилось. А дома снег! Никогда не видел столько снега в этих краях. Жаль скоро растает. P.S. SFO - международный код аэропорта С-Ф.

2008-12-12

Google chrome & native client

Ко всеобщему удивлению, Chome вышел из беты. Все были готовы, что бета будет длиться вечно, как у gmail. Но, понятно, что компо-продАвцы не хотят пред-устанавливать бету на enterprise, а потому пришлось срочно зарелизить. Хотя качество вполне достойно первой версии. RSS, autofill, extensions (включая adblock), native linux and mac versions обещаны. Не слишком заметно произошло появление ещё одного любопытного проекта: native client. Как я понял из анонса, это addon, дающий возможность запускать native code, т.е. программу в машинных кодах из браузера. Все сразу закричали ActiveX и были в корне неправы. В данном случае native code не сможет сделать ничего плохого, в отличие от Active-X, который может всё, из за предварительной верификации кода. Статический анализ кода - вещь популярная (см. например Midori), но готовых решений я пока не видел. Предполагается, что код не будет иметь возможности обращаться к платформе, но сможет работать с предоставленными ему интерфейсами браузера. Поэтому он будет независим от операционной системы, а зависим только от вида процессора. С точки зрения Web-а, это примерно как адобовский flash, только, возможно, быстрее (хотя сравнимо, я полагаю, с будущей 10 версией, если там LLVM). Но реальный смысл появляется, если рассмотреть браузер как платформу. Если запустить браузер поверх некоего мини-ядра, получается полная платформа, которая может запускать приложения, причём работающие с нормальной скоростью. Вот вам и Google OS. Второй смысл этой штуки - это серверные приложение в "облаке". Сейчас у них поддерживаются только Python и Ruby, а с этой штукой добавляется куча нормальных компилируемых языков. Изолированный код легко перемещать и копировать в облаке. Почему мне всё это понравилось? Во первых, потому, что я всегда считал, что модель безопасности должна исходить из ограничения того, что может сделать компонент кода, а не абстрактного "юзера". Я доверяю себе, как "юзеру", но я не доверяю конкретному компоненту кода. А сейчас код, откуда бы он не появился, автоматически может сделать всё, что может сделать "юзер". Во вторых, это может привести к появлению бинарного выполняемого формата, который имеет чётко описанный внешний интерфейс, и в то же время независим от операционной системы. Что давно, уже лет двадцать, ждёт всё прогрессивное человечество. По поводу статического анализа, это непросто в современной архитектуре, где данные и программы перемешаны в памяти. В байт-коде это значительно проще, но хорошие оптимизирующие компиляторы байт-кода, во первых сложны, во вторых, медленны и не защищены от ошибок. Многие, в результате, предпочитают проверять сгенерированный код, особенно если в него добавить некоторые подсказки, (интересующиеся могут погуглить "typed assembler"). Анализатор дизассемблирует код и проверяет все инструкции восстанавливая логику программы, проверяя типы всех операндов, допустимые смещения и т.д. Любой код, который может сделать что-то не то, не будет допущен до выполнения. А сделать можно многое, например, изменить адрес возврата из стека, что выглядит в точности как целочисленное присваивание локальной переменной. Анализатор должен определить не выполняя программы, что по этому смещению нет переменной, а расположен адрес возврата. И многое другое.

2008-12-09

Немного об истории и литературе.

Считается, что в древности литературы не было. Дорого по камню лирические отступления высекать. Потому суровые летописцы тщательно высунув язык выводили, что "пятого года произошёл великий мор, а шестого года царь отобедав преставился и на престол взошёл его старший сын, который в тот же месяц повелел собрать войско и отправился воевать соседей" и т.д. и т.п. Ну какая же это литература? А такая! Такая она, первая литература! Рассказ в жанре fiction, устный и от первого лица, появился задолго до письменности. Подозреваю, что ещё первобытный человек рассказывал, в грудь себя бия, как он один на один мамонта побеждал. И познав письменность, вряд ли стал он вдруг правдивым и ничего не приврал, и ни приукрасил, не приписал себе или своему властителю чужие подвиги, и не переписал на местный лад услышанные от проезжих купцов сюжеты. Слово письменное написано для читателя. А слово для читателя есть литература. Книжка с историями о веках прошедших для развлечения и наставления. А потом гадают откуда берутся повторы, почему столько совпадений в хрониках и кто был чьим оригиналом. Да сам летописец небось не знал кто был чьим оригиналом, это просто сюжеты кочуют из одной страны в другую. Хотите пример? Вот армянская народная сказка. Вот марийская сказка. Вот сказка Вятской губернии. Вот книжка японских сказок. А вот чешские и словацкие. Последних двух не читал, но судя по названиям очень подозреваю.

2008-12-08

Рекомендую.

Не могу не порекламировать текст Эльдара. Вся серия очень неплоха, а часть 4 просто замечательна. technet link, то же на eldar.com.

2008-12-07

Об истории, хронологии, литературе и психологии познания. Обо всём, короче.

Процесс понимания всегда многоступенчатый. Впервые услышав некую мысль, нам кажется, что мы её поняли, что там сложного, сто раз слышали подобное. На самом деле мы её не поняли, а просто классифицировали по первичным признакам. Типа, например "А, это конспираси", или "А, опять зелёные человечки", или "А, это у автора старческий маразм". Так любые сомнения в правдивости версии взрыва башен будут классифицированы, как паранойя и конспираси, сомнения в правильности истории как "Опять Фоменко", а сомнения в текущей идеологии как промытость чужой пропагандой. У многих система классификации так сильна, что дальше с этой мыслью ничего уже не сделать. Мысль сразу классифицируется в двоичной системе понятий как бредовая, и потому бесполезная, и все дальнейшие рассуждения на эту тему будут отражаться на дальних подступах. Однако у некоторых особей инстинкт любопытства берёт верх над инстинктами секса и карьеры и мысль застревает в сознании. Всё ещё классифицируемая как бредовая, она тем не менее вызывает некие фоновые сравнения, каждый раз хоть и подтверждающие её бредовость, но с некоей погрешностью, которая накапливаясь со временем, вдруг однажды переворачивает представления вверх ногами, а точнее, с головы на ноги. Всё становится ясным и понятным, хотя и по прежнему невероятным, но как бы уже почти на равных с традиционной точкой зрения, вызывая постоянные сомнения. Для окружающих это может выглядеть как отъезд крыши, но, впрочем, они с самого начала знали, что с этим товарищем что-то не так, его всегда интересовали вещи дурацкие, типа устройства мира, и не имеющие отношения к главному в жизни - карьере и благополучию. Так вот, чтобы понять нечто по настоящему требуется несколько таких шагов, его надо прочувствовать. Это особое состояние, когда вдруг становятся понятны логические связи, когда это проникает куда-то в глубь сознания, вызывая дрожь понимания и ощущение правильности. Сколько раз, например, я слышал, что внутри каждого человека сидит зверь, и всегда считал это игрой слов, но только недавно (позор!) прочувствовал, насколько это правильно и точно. У некоторых зверь почти весь снаружи, человеческое сознание используется им только для коммуникаций, но у других - наоборот, сознание доминирует и зверь сидит внутри него как в клетке и страдает. Не надо загонять его глубже, подружитесь с ним, выгуливайте, играйте, ласкайте, угощайте и он не будет вас мучить и создавать вам проблемы. Э... хотел об истории... Нельзя давать несколько мыслей в одном сообщении. Оставлю её до завтра.

2008-12-03

Прошлогодний San Francisco

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

2008-11-24

На коленке.

"Сделано на соплях", "сделано на коленке" -- эти две фразы я слышал неоднократно от разных людей, причём они имели при этом противоположные значения.

В устах одних это означало, что сделано на "низкоуровневом языке типа С", потому плохо, ненадёжно, опасно, непрофессионально, "home grown" или "home brewn". Часто такое слышал про Open Source Code. Обычно в контексте, что написано студентами-двоечниками, которые не могут найти нормальную работу. Правильное, профессиональное решение должно быть написано на защищённом высокоуровневом языке (C#, Java) и хранить данные в серьёзном месте, типа SQL сервера. Причём все данные, компромиссы не допустимы. Компромиссы вообще не допустимы, надо взять самые последние и мощные инструменты, и писать с их использованием. Остальное - на коленке.

В устах других - точно наоборот. Любой интерпретируемый или JIT-код в системе - признак непрофессионализма, люди используют от неграмотности, не могут освоить C/C++. Тоже про Windows: не могут освоить Unix. Приложение надо оптимизировать по максимуму, а любой лишний уровень не позволяет этого сделать. SQL вообще сложно оптимизировать, у него от версии к версии всё меняется. Поэтому надо написать всё самим на С/C++, все классы, протоколы и базу данных. Это круто и профессионально.

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

2008-11-20

Picasa 3

Хотя они и не сделали некоторых желаемых изменений, и сделали кучу нежелаемых, но общее впечатление неплохое, не испортили, и на том спасибо. Добавился приятный viewer и screensaver. Наконец-то у фоток появились теги. Видео можно резать и на ютюб выкладывать. Ну и разное всякое прочее. Гугл сегодня что-то расщедрился на обновления. Gmail стал красивый, с темами. Даже окно результатов поиска обновилось, появились некие кнопочки оценки результатов. Вообще, мне интересно смотреть на то, что делает Гугл, и мне пока нравится, что он делает.

2008-11-11

Another Canvas Test

Your browser does not support canvas.
Этот график считается и строится непосредственно в браузере. Оказывается, вполне возможно добавить скрипт в блог.

2008-11-10

Холст

Canvas - интересный элемент HTML5, который позволяет рисовать с помощью двумерных графических примитивов в прямоугольной области экрана. Впервые появился в Safary, сейчас прекрасно работает в FireFox и Chrome. Пока нет поддержки в IE, хотя, кажется, есть сторонние Active-X для этого.
По ссылке находится скрипт рисующий очень простую векторную картинку, которую я нарисовал много лет назад в графическом редакторе собственного изготовления. К сожалению, я не могу скриптовать блог, поэтому картинка будет отдельно.

2008-11-03

My Desktop

Несколько иллюстраций к предыдущему посту. Вот так выглядит мой домашний десктоп и вот так я работаю.

Это BBLean с открытым меню приложений и запущеным Google Chrome, в котором открыта персонализированная iGoogle. Мне, кстати, последняя понравилась. Вся информация в одном месте, почта, RSS, закладки (последние сконфигурированы открываться в новом табе, поскольку в Chrome закладки ещё не сделали). Кстати слева - столбик с иконками Quick Launch.

Те же и FAR. Это наиболее типичная конфигурация экрана, вероятно 80% времени.

Пара кадров с Visual Studio VS6. Я пользуюсь до сих пор 6-ой версией поскольку мне в ней нравится оболочка. Компайлер С++ в ней не супер, но, мне его хватает. Новые версии более громоздкие и менее удобные.

А каково ваше рабочее место?

2008-11-01

Три PM-а под виндой занимались ерундой

Здесь рассказывается про новые интерфейсные штучки Windows 7. Я посмотрел по диагонали периодически проматывая. Как и ожидал, не увидел ничего, что бы заставило воскликнуть "как здорово, наконец-то". На Мак стало похоже, не буду говорить, что содрали, но стало похоже. Опять все изменения придётся делать в приложениях: и табы в виде картинок представлять, и всякие новые контекстные меню и прочее. Все красивости показаны в микрософтовских приложениях, а как будут выглядеть все остальные, не поддерживающие новые интерфейсы, не очень понятно. Старым приложениям, будет, как я понимаю несколько хуже, но сейчас в Микрософте есть явная тенденция к постепенному искоренению старых приложений. Кстати, убили Quick Lunch, который все использовали как некий рабочий вариант списка приложений. Я только им и пользуюсь. Стандартный список так раздут, там так легко нажать uninstall вместо запуска, а работает он так медленно, что пользоваться им просто невозможно. Но хватит ворчать. Я хотел сказать вот о чём: Есть два типа интерфейсов и, соответственно, два типа пользователей, отличающиеся сложностью комфортной для них картинки. Первые любят UI мелкий, где показано много информации и она стабильна, относительно мало меняется. Пример - системы разработки программ, графические пакеты, файл-менеджеры типа FAR. Напоминает операционный стол или верстак - много инструментов, лежащих под рукой, каждая вещь на своём месте, ничего лишнего. В таком интерфейсе иконки если и есть, то некрупные и неяркие, минимум всяких украшательств, отвлекающих от работы. Режим с использованием только клавиатуры, без мыши - must have. Вторые любят UI крупный и яркий. Красивое окно с выбором из нескольких пунктов, с красивым фоном, эффектом при наведении мыши. Иконки крупные, яркие. Выбрал, всё изменилось и показало что-то другое, тоже красивое. Работа идёт, в основном, мышью. На клавиатуре набирается только текст. Зона основной информации существенно меньше, часть пространства пожертвована на то, чтобы сделать команды более доступными. Это не просто профессионал-новичок. Это два психотипа, две разных эстетики. Есть картины/романы/интерьеры/ландшафты первого типа (битва при Ватерлоо), а есть второго (белеет парус одинокий). Я, конечно, принадлежу к первой группе. Всегда любил карты разглядывать. Мне совершенно не нравится толстая полупрозрачная рамка окон, крупные иконки и широкий task-bar, как и все эти цвета, выплывания и подсвечивания. Раздражают и отвлекают. Я вообще почти не пользуюсь ни Микрософтовскими программами ни стандартной оболочкой. У меня стоит BBlean, который делает и панель задач и всякие меню тоньше и мельче. Shell я не использую, пользуюсь FAR-ом. Офис запускаю только для просмотра присланного документа, media player или browser - другие, разные. Короче, мне этот их экран не нужен совершенно. Мне надо, чтобы работали программы типа BBlean, чтобы можно было сделать из цветных виндов интерфейс "первого рода". И сделать это всё сложнее и сложнее. С Вистой, кстати, у меня пока ничего не получилось. Blackbox под ней не работает. Был бы помоложе, сказал бы, "хоть сам пиши". Нет, сам всё не напишешь, жизни не хватит.

2008-10-30

Мостик

Сейчас это мостик для пешеходов и велосипедистов. Когда-то он был железнодорожный. Перил и ограждений не было. Поверх высоченных деревянных опор лежали шпалы и рельсы. И всё. Логично, но страшно.

2008-10-27

Written on the piece of junk

Все уже много раз процитировали высказывание Стива Джобса “We don’t know how to build a sub-$500 computer that is not a piece of junk.”. Ну вот! А я подумывал купить их акции! Это же и есть проблема Apple номер 1. Чтобы выжить, им нужно это придумать. У меня почти все компьютеры такие, в районе $500 без монитора. А последняя покупка - MSI Wind, так практически целиком уместилась. 
Мне всегда казалось, что компьютеры несколько overpriced. Штука, в принципе, не жизненно важная, в основном развлекательная и очень недолговечная. Ну, допустим, гипотетически, что купил я за пару штук их супер-тонкий ноут. Аккумулятор сдохнет через год и ничего с ним не сделаешь, впаян. А если куплю другой без яблока на корпусе и на миллиметр толще, то всё равно, устареет морально года через два-три. Новая система уже не поставится без апгрейда, во время которого окажется, что успело поменяться всё, даже расположение дырок на корпусе и число бит в процессоре, так, что вези всё в PC Recycle, и раскошеливайся снова по полной программе, включая лицензию на операционку. А последняя уж точно piece of junk, хоть одна, хоть другая, хоть третья. 
Нет, я куплю лучше piece of junk подешевле, не так жалко будет выкидывать. Работает он точно так же, как и те, распальцованные. Опять же, в нем милостливо соизволен привычный XP, что приятно. И на что же Apple будет жить, что делать? Да операционку, блин! Кошачих своих хищников пора выпускать из клетки! Если уж компьютеры не придумываются. Будет альтернатива Висте. Может, я её и поставил бы на свой Wind.

Subversion

Я уже давно поставил subversion на свой домашний сервер (Synology). Раньше я "догфудил" нашу внутреннюю систему, и она работала очень хорошо даже на netbook-е, но мне всегда хотелось, чтобы она работала на linux-сервере. Subversion оказалась очень удобной, особенно для персонального использования:

  1. Есть варианты для ARM-процессора, что позволяет использовать Slug (Linksys NSLU2), или Synology, или даже Nokia N800.
  2. Её можно сконфигурировать для работы через inetd, когда она не висит постоянно в памяти. При персональном использовании это наиболее удобный режим.
  3. Один сервер может работать с несколькими репозитариями. Что позволяет создать не хранить мух с котлетами. Один для моих проектов, сыну - свой, один - как backup для всяких my documents, один для временных вещей, которые потом будут удалены и т.д.
  4. Можно быстро загрузить репозитарий из файла и сохранить в файл. Я сделал скрипт и загрузил свои проекты вместе с полной историей.
  5. Tortose Svn - как оболочка очень удобна. Даже spell-checker с подсказками имён функций из текста. Супер.
  6. Очень удобно, что сервер не хранит состояние клиента. Это просто гора с плеч. Никаких read-only атрибутов, никаких "открыть файл для редактирования". Просто работаешь спокойно, переписываешь всё вместе куда хочешь, если надо, потом система разберётся сама, что изменилось. И не надо никаких плагинов к Visual Studio.

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

2008-10-20

Вчера на Snoqualmie Middle Fork

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

2008-10-14

Йцукенъ

Гуляя по Нижнему Новгороду зашёл в данный магазин с желанием купить какой нибудь забавный сувенир.  Пообщался с приветливой продавщицей, которая, похоже, была рада любому редкому посетителю. 
Ничего не выбрал, ничего не понравилось. Скучно, плоско и очень примитивно с точки зрения дизайна, прежде всего. На картинках выглядит лучше, но дизайнеры знают, что вещь на картинке и вещь в реальности - разные вещи. А в реальности предметы имеют другие пропорции, не дисплейные цвета, острые края. Чайник ужасен. Даже чашку с ручкой в виде @ совершенно не комфортно держать в руках. За промышленный дизайн ставлю им 2. 
За издание "ководства" ставлю 3 с минусом.  Не знаю, что там с типографикой, мне она не очень интересна, но с точки зрения общего дизайна, я книги с таким крупным шрифтом не покупаю. Это текст, вещь для чтения, а не альбом со шрифтами. С точки зрения содержания, книга по дизайну должна быть переполнена примерами и текстом.  А здесь одна мысль, другая мысль, третья мысль. Сколько глав, столько мыслей. Мысли не перетекают одна в другую, не образуют системы, не заметно, что у автора их больше, чем он может написать. Скучно. Другая книжка про Интернет была забавнее, хотя я всё это уже видел, давно, и решил не захламлять свой книжный шкаф.
Потрогал их клавиатуру за $2500. Пренеприятное ощущение. Дешёвый пластик трётся о другой пластик с хрустом и скрипом. Как песок пожевал. Кнопки заметно медленно меняют картинку при нажатии shift-а. Позиционирования этого изделия вообще не понимаю. Элитная клавиатура должна быть комфортна и качественна как клавиатура, в первую очередь. Надписи на кнопках - вещь вторичная, на них вообще смотрят редко, только когда учатся печатать, а научившись смотреть перестают, или смотрят краем глаза. Во всех компьютерных столах клавиатура убирается под стол, и там, под столом на ней и печатают.  (Кстати, в штатах видел клавиатуру совсем чёрную, без букв. Для слепой печати. Народ пробовал, говорят удобно, быстро отучает смотреть на кнопки.) Продавщица сказала, что есть специальная раскладка для фотошопа. Представляю, дизайнер мышкой рисует, рисует, а потом лезет на клавиатуру вместо меню. Глупо.
Короче, я был разочарован. После многочисленных "линчей" я ожидал большего, ожидал качества. А не фига. Ни качественного дизайна, ни оригинального дизайна, ни забавных надписей на майках, ничего, кроме очередного немерянного пустого выпендрёжа, который уже стал нашим русским фирменным стилем.  
Кстати, неподалёку продавались русские народные берестяные и деревянные поделки. Насколько они сделаны качественнее и приятнее! Вот где настоящий дизайн, блин вам всем в компот!

2008-10-12

Snoqualmie Pass

Snoqualmie Pass внизу. Вдали виден Rainier.

2008-10-09

Конец бумажных книг

Надцать лет назад я не верил, когда читал в журнале, что плёночные фотоаппараты скоро уйдут в прошлое. Казалось, что цифровая технология настолько сырая, качество настолько плохое, что пройдут десятилетия, прежде чем чип заменит плёнку. А с книгами, качество экранов настолько хорошее, преимущества настолько велики, что даже непонятно, как это может не заменить бумагу. Фактически, я уже давно читаю новые книжки соньковским ридером. Но посмотрите на ссылку! Это же не просто книжки, это и журналы, и техническая документация, и энциклопедии. 
Конец шкафам, стопкам и полкам. Что будет с библиотеками и букинистическими магазинами? С уютными книжными магазинами, где можно полистать книжки и журналы за чашкой кофе? С возможностью продать прошлогодний учебник в бук выручив пол-цены, подарить или дать почитать знакомым? Это всё настолько большая часть нашей культуры, она скоро изменится и хотелось бы не потерять незаметно те права, которые есть сейчас.  Кстати, а не пора ли новостийным сайтам делать вариант верстки для оффлайнового чтения на ридерах? http://www.engadget.com/2008/09/11/plastic-logics-e-reader-vs-amazon-kindle-fight/

2008-10-03

Cloud OS

Нет, я ничего не знаю, что будет в том варианте ОС, про корорую говорил Балмер. Я подозреваю, что ничего особенного, какая нибудь очередная репликация. Вряд ли то, что нужно, то что было сделано давным давно в некоторых старых ОСах ещё до изобретения слова Cloud и то, без чего все ОСы немножко не ОСы, а просто набор драйверов. А именно возможности приостановить приложение, сохранить его состояние в файле, перенести файл на другую машину и там продолжить. Или, ещё круче, то же самое, но без приостановки, реплицируя состояние вживую, ожидая завершения тредов на одной машине, но запуская новые на другой :-) Но это уж я размечтался. 
VMWare делает всё через виртуальные машины, что значительно медленнее и более громоздко. Но хоть как-то. Казалось бы, вот процесс отсвоплен, уже образ, уже в файле, бери и копируй. А не тут то было. Надо выделить из него машинонезависимое состояние процесса, а у авторов современных операционок всё от всего зависимое. И в Линуксе ничего такого нет. Народ хачит скриптовые языки пытаясь хотя бы из виртуальной языковой машины выкусить независимое состояние, что относительно просто, в связи с доступностью исходного кода.
А ещё можно, например, связать две физические машины в "одну" логическую, но с суммарным количеством ядер... Я, честно, сам придумал, ничего я не знаю... Ой, а вдруг угадал?

2008-09-26

Google Chrome - 20 дней спустя.

Неожиданно браузер стал основным. Не думал, что смогу прожить без привычных расширений firefox, но вот уже двадцать дней только им и пользуюсь. Привлекает мгновенный запуск и, наконец-то, шустрый javascript, который делает сайты действительно живыми. Наконец-то можно использовать всякие javascript frameworks, типа jQuery, например, что мне давно хочется попробовать. Из расширений не хватает реально двух - AdBlock и GMarks. Без второго можно обойтись открыв в одном из табов Google Bookmarks. Что касается первого, то можно поставить Privoxy. Google обещает сделать расширения, так, что это временно. Вообще, я восхищён программой и тем, как она сделана. Компактно, быстро, ничего лишнего. Идеальный браузер. Фактически сейчас она является самой используемой программой на моём компьютере. Я бы её даже объявил самой удачной программой последних нескольких лет. Предыдущий приятный сюрприз назывался Picasa.

2008-09-22

Нижний Новгород - город контрастов.

Я несколько раз пытался начать писать про Нижний, но длинно и литературно не получается и как-то даже и не хочется. Фотки здесь. Было очень приятно со всеми увидеться! Жаль, что не со всеми удалось встретиться! Мне понравилась чистота в центре города, люди на улице, их одежда, книжные и компьютерные магазины, маленькие кафе и еда в них, продуктовые и хозяйственные магазины, непривычная вежливость сервиса и отсутствие "How are you doing?" при этом. Не понравилась грязь во дворах, разваленные хрущёвки, бегающие беспризорные животные, обилие машин, практически парализовавшее движение в городе, заброшенное и жутко замусоренное когда-то любимое место отдыха, и банки из под пива лежащие под каждым кустом. Первое место в положительном списке - еда. Желудок стал проситься обратно в Россию. Первое в отрицательном - машины и трафик. Голова напоила желудок пивом и решила, что он обойдётся.

2008-09-19

Для чего нужен Downtown?

В раздумьях об описании своих впечатлений от поездки на родину я вдруг обнаружил некоторую непонятность: зачем в городе нужен downtown? 
Нет, серьёзно! Какие функции он выполняет? Что за выгода строить высоченные здания на дорогущей земле вместо того, чтобы взять пригородный пустырь и построить там целый кампус вместе с хорошей парковкой. В downtown всегда плохой трафик, всегда проблемы с парковкой. Казалось бы, единственное достоинство downtown - это пешеходная досягаемость одного здания от другого, коммерческая ценность коего совершенно непонятна. Зачем нужно ходить из одного банка в другой в эпоху глобальных сетей?
В каждом городе есть подобный район, застроенный офисами банков и всяких "крутых" контор, демонстрирующих, что им некуда девать деньги. Может это просто сублимация, район финансовых фаллосов? 

2008-09-02

Google Chrome

Гугл выпустил бету своего браузера. Очень недурственно. Мгновенный запуск приложения. Удобное начальное окно (то, что мы привыкли называть home page). Неплохой UI. Очень быстрый javascript. Наконец-то все гугловские приложения работают быстро. Можно даже пользоваться их он-лайновым редактором и электронной таблицей. С такой скоростью уже можно писать нормальные приложения на AJAX-е. Короче, смотрите сами. Мне понравилось. Не так, как это обычно бывает с новой версией привычной программы, "ну вот, опять наворотили", а быстро и просто - вот два ключевых слова, определяющие продукт.
Из минусов - нет расширений. Нет блокировки рекламы, и нет синхронизаторов закладок. А ещё нет многоязычной проверки правописания. Язык выбирается в установках, что неудобно. Надеюсь, это всё поправится со временем.
Что касается любимого занятия журналистов, сравнения рейтингов, то я не очень уверен в завоевании рынка. Явно заберёт голоса у тех, кто знает о разных браузерах и умеет их инсталлировать, т.е. у пользователей Firefox и Opera. У Safari свои сторонники, яблочники с альтернативным восприятием рендеринга. А большинство тех, кто пользуется IE, купили "интернет" вместе с компьютером и ничего другого ставить не будут. Вот если Гугл уговорит поставщиков предустанавливать его на компьютеры, тогда другое дело. Но поставщикам Гугл не указ, он на Windows скидок не даёт. Посмотрим.
Кстати, Picasa 3 beta тоже вышла. Наворотили.

2008-09-01

Пеньки на Keechelus Lake.



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

2008-08-31

Последствия снежной лавины

Видно, что под поломанными деревьями и ветками толстый слой снега, под которым течёт потерявшая своё русло горная речка. Меня удивило направление вывала леса на склоне слева. Стволы легли вверх. Такое впечатление, что лавина с разгону заехала на противоположный склон, повалив деревья. Gold Creek, 3.5 miles from trail head.

2008-08-26

Компьютерно-операционно-системное.

Для начала порекламирую неплохой блог с занятной и полезной информацией: блог Guastavo Duarte (англ.) А в нём статьи о начальной загрузке, адресной арифметике и уровнях защиты. Если данные вопросы неинтересны или непонятны, дальше можно и не читать. Собственно, не читать можно в любом случае. Как и наборот. А теперь, после введения, очередная небольшая порция ворчания. Которое состоит в том, что вся эта адресная арифметика и кольца защиты сейчас настолько привычны, что мы даже и не представляем, что может быть по другому. А вот раньше, говорю я постанывая, посвистывая и с хрустом распрямляя позвоночник, мы работали в системах "real mode" безо всякой защиты и такие программы писали, такие, этакие..., да такие же как и сейчас, только поменьше. И которые при любой ошибке вызывали перезагрузку, которая, однако надо отметить, была значительно быстрее теперешней! Довольно занятные системы были в домикрософтовсую и до-ibm-pc-шную эру реального режима. Например, были всякие занятные системы основанные на паскале и модуле. Последная была, как нетрудно догадаться, модульная, причём драйвер устройства - такой же модуль, как и программа пользователя, никакой разницы. Никакой разницы не было, kernel mode or user mode. Одно вызывало другое. Это была экзотика, мини-компьютеры. А большие компьютеры делались на той же, что и сейчас архитектуре, с двумя режимами, режимом ядра и режимом пользователя. Главное в такой архитектуре - защитить ядро от программы пользователя, и программы друг от друга. Традиционно есть процесс, как единица защиты. Процессы защищены друг от друга, ядро защищено от процессов, процесс можно убить, все ресурсы утилизировать без вреда для системы. Внутри же процесса - никаких защит, делай всё, что угодно. Это традиционная архитектура операционных систем. Для неё и делаются все эти адресные арифметики, кольца защиты, виртуальная память с таблицами страниц и прочее. И она, эта архитектура позволяет заражать программы вирусами, исполнять код в стеке, переполнять буфера, позволяет почтовым программам модифицировать системные файлы, ну и конечно, позволяет выполнять и все остальные полезные функции, за что мы её и любим. Естественно была попытка сделать и менее традиционную архитектуру. Где нельзя заражать и выполнять. Где почти ничего нельзя, кроме того, что можно. Где защита сидит в каждом указателе, в каждом массиве, в каждой функции. Аппаратно нельзя выйти за границы. Аппаратно нельзя сделать из числа указатель. И функцию нельзя вызвать если нет на неё указателя. Абсолютная защита. Естественно, всё было задумано в Советском Союзе, как нетрудно догадаться по приведённому описанию, и там же успешно где-то реализовывалось в течении многих лет, до тех пор, пока Горбачёв не произнёс своё знаменитое "разрешено всё, что не запрещено", чем подрубил концепцию на корню. Я очень уважаю разработчиков Эльбруса за эту архитектуру. Увы, в полноте своей она несколько утопична, почти как коммунизм. Обе требуют от человека того, что он дать не может. Коммунизм требует нечеловеческой сознательности, а Эльбрус - нечеловеческой предусмотрительности при программировании на нечеловеческих языках. Хотя второе интересно было бы попробовать. Не знаю, что там будет дальше с Эльбрусом. Идеолог, академик Бабаян теперь работает в Интеле, хотя фирма существует. Но бог с ней, с фирмой. Дело в том, что в подобной системе тоже нет уровней ядра и пользователя. Если функции защищены друг от друга, то драйвер - это просто функция, такая же, как и любая другая. И файловая система - обычный модуль, как и любой другой. И никакой трансляции адресов не надо, и уровней защиты не надо и много всего прочего. Фактически, сложность аппаратуры не выше, чем традиционной. Кстати, упомянутая фирма недавно сделала таки свой микропроцессор, и двоичный компилятор для него. Респект, если работает. Это вам не винду перекрашивать. Хотя я опять отвлёкся, не про него хотел рассказать. Одно время казалось, что это всё где-то далеко в фантастических северных странах, в далёком прошлом или далёком будущем, но услышанная фраза "software isolation" заставила поменять точку зрения. Фраза очевидна - заменить аппаратные границы программными. В эпоху виртуальных машин даже нетривиальная архитектура возможна. Но виртуальная машина - только один из нескольких подходов к "software isolation" и далеко не самый эффективный. Второй подход исповедуют разработчики проекта Midori в Microsoft (бывшая Singularity). Они предлагают оставить процессы как границы защиты и проверить программно двоичный код процесса на то, что он не выйдет за границы и ничего не сделает запрещённого. Тогда этот процесс можно запускать без аппаратной защиты. Я скептически отношусь к данному подходу. И доказать очень сложно и выгода невелика - только производительность, что в наше время грядущих 64-процессорных ядер не самая большая проблема. Третий подход основан на идее генерации кода. Допустим программа существует на некоем байт-коде, а система строит реальный двоичный код сама при запуске. Как в .NET или Java. В таком случае если исходный байт-код не позволяет чего-то сделать то и двоичный код этого не сделает. И его можно запускать без аппаратной защиты. Подобные системы могли бы работать почти как Эльбрус без его аппаратных заморочек. Причём большая часть ядра может сама быть написана на подобном языке. Неудобство данного подхода в невозможности запускать программы в двоичном коде, написанные на non-managed языках. Мне кажется, наиболее перспективный подход, особенно для встроенных систем. Сейчас есть несколько проектов, Java OS, например. Привет вам от Модулы. Здесь выгод может быть множество: более простая аппаратная часть, более простая структура операционной системы, защищённость на уровне процедур или классов. К сожалению, языки типы Java или С# не могут достичь идеальной защиты и избавить нас от вирусов и троянов. Их байт код недостаточно ограничен для этого. Но вообще, я думаю, что software isolation - интересное направление. Но вряд ли пройдёт в mainstream. Слишком далеко мы все ушли в другую сторону. Куда мы без привычной винды.

2008-08-24

Жирный пингвин робко прячет тело жирное в утёсах...

Почитал на досуге про udev vs. devfs. Для незнакомых с Линуксом поясню, что это управление именами устройств в файловой системе, т.е. некая жизнь на границе ядра и приложений. Короче, пингвиньи блохи. Раньше жил только один вид, devfs, а потом постепенно развился новый - udev и полностью вытеснил старый. Просто совсем вытеснил, вплоть до полного удаления. Интересно то, что непонятно чем новый вид, собственно, лучше. У меня сложилось впечатление, что он не только не лучше, а хуже. Если объяснять на компьютерном языке, то devfs представлял собой небольшой модуль в ядре, который по сигналам драйверов создавал устройства со стандартными именами. Зато udev - это архитектурная астронавтика. Это демон, который общается с ядром, создаёт имена по некоторым описанным в конфиге правилам, общается с приложениями, которые хотят получать события о создании устройств, и т.д. Дизайн-патерн мне показался очень знакомым. Ситуация такова - есть первая система, очень простая и понятная. С некоторыми небольшими проблемами. Есть некий архитектурный астронавт, который очень пропагандирует некоторую супер-архитектуру, способную покрыть старую систему как бык овцу, и в дополнение решить кучу других проблем, хотя никто никогда с этими другими проблемами и не сталкивался. Как правило маленький компонент или функция будет заменён на некий сервис, вероятно сетевой, возможно веб-сервис. Производительность будет ужасна, но не фатальна, она, вероятно и никогда не была узким местом. Новые проблемы, которые возникли после перехода на новую систему, будут объяснены тем, что система ещё не доделана до полной своей функциональности, и тогда она покроет не только старую функцию, но и всю систему вообще. Здесь главное - напористость астронавта. Особенно, если старая архитектура не особенно персонифицирована и не имеет столь же горячего защитника. Как только новая архитектура будет принята, её доделают до некоей приемлемой формы, другого выхода нет, но лишний килограм веса на животе это добавит. Ещё один, к досаде тех, кто ценит стройность архитектуры. Я раньше считал, что подобное - удел коммерческих компаний и закрытого софта больших компаний. Там это просто непрерывно. Но почитав линуксовые форумы, понял, что нет, это универсально. В открытом софте - то же самое. Фактически, исправить ситуацию может только давление, отбраковывающее подобные патерны, а его по ряду причин нет. Грустно. Не хочется пускать в свой компьютер жирного пингвина. И udev не хочется. Хочется простоты и удобства. Каталоги, как в GOBO, простые модули вместо сервисов, ненавижу сервисы. Наверное, надо фряху посмотреть или в гентушники податься, последнее прибежище отчаявшихся в разумности коллективного сознания.

2008-08-05

Мысль дня

"There is nothing intellectual in a property." (Нет ничего интеллектуального в собственности.)
Навеяно обсуждением параграфа из годового финансового отчёта Майкрософт.

2008-08-04

О хлебе насущном.

На местном рынке купил хлеб местной выпечки. Домой принесли, съели весь за один присест без ничего, даже ничем не намазав. Один запах чего стоит! Хлебом пахнет. Оказывается семейный бизнес. У них печь во дворе каменная. И мельница своя. Они сами мелют зерно, из свежей муки хлеб пекут. Ничего не замораживая, по старым рецептам из натуральных компонентов. Дорого. Но вкусно так, что денег не жалко. Жаль рынок работает только раз в неделю. Вот я всё жду, когда потребитель пожелает вкуса в софте. Я бы тоже попробовал семейный бизнес открыть. Софт на ассемблере и Алголе-68, ручная работа, по старинным рецептам. Может попробовать, бросить свой макдональдз, выпечь что-нибудь, вдруг кому понравится!

2008-08-02

Корпоративные игры.

Этот текст является комментарием к тексту Эльдара про фермеров и рабочих в программировании.

Фабрики производят массовый товар, выполняя функцию клонирования. Программисты должны, в принципе, писать уникальный код, ибо стоимость прямого клонирования нулевая. Но модель продажи построена на старых традициях материального производства, поэтому нулевая по себестоимости функция клонирования оплачивается реальными деньгами, и эта особенность приводит к тому, что компания однажды завоевавшая рынок, может больше вообще ничего не производить, продавая копии уже сделанного. Рынок информационного продукта в силу ряда причин любит сиквелы и версии того же самого, что работает на ту же тенденцию. Обычно мелкие изменения и исправления багов достаточны для продолжения продаж. Покупатели не требуют прорыва и изменений. "Мы только-только разобрались в предыдущей версии, не надо нам нового API, сделайте просто чтобы старый работал, и всё."

А люди сидят, им надо расти, делать карьеру. Чем же они заняты? Корпоративными играми. Они играют в производство, в карьеру, в перспективные исследования и разработки, в новые методы производства и системы управления персоналом. Сотрудники делают супер-пупер продукт следующего тысячелетия, проводя бессонные ночи над переписыванием всего кода на новый язык или новую платформу, и ничего при этом не выпуская. А когда кто-то вдруг потребует выпустить что-нибудь, чтобы оправдать расходы, можно быстро повырезать весь новый сомнительный креатив и выпустить почти то же самое, что было, слегка перекрасив. Начальник сделает умное лицо и скажет, что мы потратили миллиарды на разработки и исследования и выпустили продукт много лучше, чем все остальные наши продукты. Блогеры и журналисты скажут WOW! Хакеры расскажут о способе вернуть старую раскраску и привычные функции. Все будут довольны.

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

И тут-то и будет поджидать засада. Забыли! Разучились! Забыли как выпускать. Разучились писать исходя из здравого смысла, из проблем потребителя, быстро и эффективно. Начальство продолжает играть в игры, в карьеры, строить супер-пупер стратегии. Внедрять технологии и бизнес-процессы. Управлять персоналом. И потому не получается захватить новый рынок. Остаётся подождать, пока конкурент тоже начнёт деградировать от своих внутренних игр. И там, в будущем, мы ещё посмотрим, кто победит в финальной схватке гигантов. Если сумеем вспомнить их имена.

2008-07-29

Synology

Купил серверочек. Очень понравилось. И качество железяки и софт к ней. Очень всё дружественно и просто. Никаких "конфигов". Всё включается и выключается через Web-menu. Но особенно понравилось то, что нормально поддерживаются русские названия файлов; что в базовую систему входит SSH сервер, потому можно зайти терминалом и что-нибудь там сделать; что хак по установке package-manager-а не потребовал перепрошивки (система хранится на диске), и что в списке пакетов есть те, которые нужны. Ещё понравилось, что на сайте компании есть инструкция по интеграции внешнего софта в web-menu, что радикально отличается от обычной практики "запретить, ибо нефига". Короче, будем обустраиваться.

В Нижний

Еду в гости в сентябре.

2008-07-25

Maui

Всё никак не разберу фотографии. Три фотоаппарата в семье - это кошмар. Гигабайты на диске и тысячи фоток одного и того же. Руки опускаются их разбирать. С другой стороны, фотки нужны не для кого-нибудь, а для собственных воспоминаний. Пусть лежат неразобранными.

2008-07-23

Переключение раскладки в Windows с помощью Caps Lock.

Мне всегда казался странным способ переключения раскладки в Windows. Alt+Shift или Ctrl+Shift, или обратная кавычка в Висте. Постоянные проблемы с разными программами. И не всегда срабатывает с первого раза, и конфликтует со всякими Ctrl+Shift+F1. В Линуксе обычно используют Caps Lock, что очень удобно. Идеальное, IMHO, решение. И кнопка одна, и под рукой, и пользы никакой другой от неё нет (даже есть какие-то Anti-Caps-Lock сайты с требованиями кнопку выкинуть, или заменить на backspace), и лампочка есть, показывающая состояние, которое удобно видеть краем глаза.

В Windows поменять кнопку, конечно же, нельзя. А написать свою программу можно, но лень. Кроме того, API для этого довольно странный. Например, раскладка в Windows есть не свойство Desktop, как бы логично было предположить, а персонально свойство каждого thread в системе. Потому переключатель должен внедрить DLL в каждый поток каждого процесса, имеющего окна.

Оказалось, однако, что всё уже, в принципе, сделано, и можно найти, если поискать. Есть такая программа "The Microsoft Keyboard Layout Creator". В ней можно создать свою раскладку клавиатуры и Caps Lock в ней - одна из клавиш состояния, наряду с Shift и Alt-Gr. Вот эта раскладка!

Инструкция по установке такая:
1. Поставить creator и скачать раскладку (может потребоваться проверка подлинности Windows, как обычно для сайта MS).
2. Загрузить второе в первое.
3. Пойти в меню Project и выполнить "Create DLL and setup package."
4. Проигнорировать предупреждения.
5. Когда откроется каталог со сгенерированными файлами, запустить из него setup.
6. Пойти в Control Panel туда, где ставятся кнопки переключения раскладок, и выбрать новую раскладку раскладкой по умолчанию для английского языка (!!!). Новая раскладка универсальна, и содержит и кириллицу и латынь.
7. Можно выключить старые кнопки переключения на русский, во избежании путаницы.
8. Всё, можно наслаждаться.

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

Update: Сгенерированные драйверы можно загрузить здесь. Это zip-архив с инсталлятором. Его надо распаковать во временный каталог и перейти сразу к пункту 5.

N.B.: Переключение раскладки глобально в системе и не запоминается для каждого окна. Это свойство данного метода и мне лично оно очень нравится.

N.B.: Caps Lock не переключает ни раскладку, ни текущий язык. Он лишь является модификатором внутри раскладки, так же, как, например, и Shift, и заставляет клавиатуру генерировать другие коды. Оказалось, что Microsoft Word использует информацию о текущем языке, чтобы установить правильную проверку правописания. Так что с приложениями Офиса возможны некоторые проблемы.

Update: Я сделал аналогичную раскладку для OSX.

2008-07-17

Про NAS

Всё выбираю домашний сервер. Читаю www.smallnetbuilder.com. Что-то не очень радует. Кажется, что выбор большой, но взяв случайную модель и задав поиск в гугле находишь столько интересного, и в частности, обычно то, что заявленные фичи совершенно не работают. В конце концов остановился на Synology. Сначала даже выбрал дешёвую модель DS108j. Но потом, обнаружив, что в ней 32M памяти, понял, что это совсем никуда не годится, и выбрал DS207+. Уже почти собрался купить и тут нашёл вот это. Даже и не знаю. Не обновляются они ни хрена. Продали, и забыли. А кто будет дыры латать? Что требуется: 1. Тихий, компактный, малопотребляющий серверочек. 2. RAID 0,1 3. Samba c правами доступа 4. Torrent downloader 5. PNP media server 6. LAMP server (Apache+Php+MySQL) - хотелось бы 7. Цена < $500 8. Расширяемость пакетами - очень бы хотелось 9. Web-администрирование. 10. Вменяемая фирма, выпускающая апдейты. 11. Чтобы всё это работало 24 часа в сутки без зависонов. 12. Не Windows - это моя профессиональная фобия. Обычный компьютер c Free Nas не подходит по пункту 1. Собственно, ни хрена не подходит по пунктам 10/11. Даже странно, стандарные умеренные требования. Короче, похоже, пока всё останется как было.

2008-07-16

Vita Nostra

Так получилось, что я не читал ничего у Дьяченко. Собираясь в отпуск и вычитав у Лукьяненки в ЖЖ (это было ещё до того) хвалебный отзыв, и особенно про особо неожиданную концовку, я решил, записать книжку в ебуку. Нагуглилась, как водится, через пять минут. Ещё полчаса ушли на переформатирование RTF в юникод и подбор размера шрифта. Треть книжки прочёл в самолёте, остальное - не спеша, понемногу, сидя в кресле на просторной ланаи (это я хвастаюсь). В принципе, мне понравилось. Захватывает. Хотя некая избыточная чернушность утомляет и не даёт читать залпом. Потому, прочитав главу, откладываю. То, что надо для отпуска. Концовка неплоха, хотя немного разочаровала. Это очень хорошая оценка. Обычно концовка разочаровывает очень. Особенно у того же Лукьяненки. И для тех, кто читал, выскажу мнение - виден филфак автора. Но физфак тоже немного просвечивает. Не у соавтора ли? Не зная биографических фактов могу ошибится, но уверен, что догадка верна - филфак. Модель физического мира построенную на языке, на словах, на существительных и глаголах, можно придумать только на филфаке. Потому мне она и показалась несколько разочаровывающей, хотя эффектно, не отнимешь, библейски эффектно. Но, вот, что с этим делать дальше - непонятно. Увлекательно, талантливо, эффектно, сцены засели в мозгах, но подозреваю, что извлечь из этого ничего не получится. Хотя то же самое я могу сказать про большую часть прочитанного. Короче, рекомендую. P.S. Сейчас читаю "Пещеру".

2008-07-10

AJAX, History and Backward Key

Я всегда считал, что AJAX и Browser History - вещи несовместимые. Т.е. пользоваться Backward/Forward в AJAX нельзя. Однако недавно с удивлением увидел, что в Gmail это как-то работает. Я нашёл несколько ссылок, самая лучшая - здесь. Короче, идея в том, что можно использовать document.location.hash - эта часть ссылки, которая после знака "#" не вызывает перезагрузки страницы, и, в принципе, может добавляться в browser history. Полный сценарий работает в FireFox, хотя привязка к Backward требует небольшого извращения. Но в остальных браузерах сценарий требует какого то совсем отвязного хакерства. А простая штука, в принципе. Я попробовал вставить простой код себе в галерею, но пока не в основную ссылку. В FF всё стало лучше и быстрее. Переходы между режимами быстрые, почти мгновенные. Backward and Forward работают по полной программе. В IE всё стало хуже, поскольку вся галерея стала одной позицией в истории. В Опере не проверял за неимением оной. У меня везде стоит FF, чего и вам желаю.

2008-07-06

Зелёная черепаха


Она выглядит зелёной, когда её встречаешь в море. А в океанариуме их хорошо отмыли. Оказывается, она совсем не зелёная.

2008-07-01

Я вернулся

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

2008-06-13

True Crypt

Subj смотрится очень даже неплохо. Хочу попробовать. Кто пользовался, какие подводные камни, как вообще впечатление?

2008-06-05

Цены на бензин

Хоть меня и закидают пустыми канистрами, но я скажу - мне подорожание бензина кажется явлением положительным. Я ещё восемь лет назад сказал, что он должен стоить как минимум баксов пять за галлон. А сейчас я думаю, что и десять вполне нормально. Очень бы хотелось, и я готов за это заплатить своими деньгами, уменьшить автомобилизацию окрестностей. Я не знаю как ещё заставить народ прекратить ездить на танках на работу, кроме как сделав это невыгодным. Везде постоянно расширяют дороги и тратят на это бюджет. Я бы предпочёл, чтобы вместо расширения дорог, на те же деньги, увеличили количество общественного транспорта и построили велосипедные дорожки, которые несравнимо дешевле. Но этого не произойдёт, пока нет массовой потребности. Или, например, сервис моего скутера встал дороже сервиса машины. Причина опять же в не массовости скутеров. Будет их больше - будет дешевле. Вообще, все вещи имеющие экологические последствия должны быть дороже. Надо уменьшать потребление энергии и переходить на альтернативные источники. Верхом ездить на работу было бы классно. Конюшню открыть при нашем Алкософте. Заодно и навоз могли бы производить настоящий, помимо виртуального. А в Москве жгут машины. А журналисты гадают: кто жгёт, кому выгодно? Неужели не понятно? Жгёт кто-то, кого достали все эти машины. Бессмысленно и беспощадно, как всегда. В Москве вообще уже не пройти и ни проехать, машины стоят просто везде.

Business value of Windows Vista.

Микрософт родил очередное послание корпоративным клиентам. На первой странице оного, в традициях современного корпоративного дизайна, некие люди изображают работу. Обычно люди на обложках улыбаются, но в данном случае, они, похоже, пытаются работать с Вистой, а потому серьёзны и мрачны. Видно, что у них не получается. Что успокаивает. Не только у меня не получается. Обычно проковырявшись с очередным сетапом хочется запустить чем нибудь в эти радостные лица, которые явно смеются над тобой. В тексте послания объясняется, что нет смысла ждать Windows 7, поскольку лучше не будет. Микрософт не будет никого слушать и не будет ничего менять, наша система лучшая в мире, и никакого выбора у потребителя не будет. Я было подумал, ну и хрен с ними, можно поставить XP в виртуальную машину, отрубить ей сеть и работать спокойно безо всяких обновлений. Но ведь они могут и активацию закрыть. Этого я пока не понял, закроют или нет. Если закроют, я откачусь на W2K. Честно говоря, на месте корпоративных клиентов я бы вообще выкинул Windows и поставил Линукс. Это индивидуальному клиенту сложно разбираться, и в игры хочется играть, а у корпоративных есть IT Department. И технику можно протестировать на совместимость перед массовыми закупками, и свой образ для быстрой сетевой установки сделать вместе с приложениями, и техподдержку оказывать и народ обучать. Игры не работают - и не надо. Зато никакого ковыряния с лицензиями и активациями. Нужна ещё одна машина - берём и ставим.

2008-05-28

Невыполнимая миссия

Чтобы чего-то добиться фирма должна иметь и осознавать некую миссию, которая отлична от простого зарабатывания денег. Деньги должны быть лишь следствием выполнения миссии. Например, поставить персональный компьютер каждому голодному, или проиндексировать всё, что шевелится, или создать лучшую программу в своей нише, или дать каждой семье отдельную квартиру к 2000 году. Это не слоган, типа "измени жизнь к лучшему". Слоган - это бессмысленная рекламная херня, работающая через подсознание. Миссия же - вполне сознательно сформулированая цель. Если миссии нет, её начинают заменять слоганы и процесс становится самоцелью. Начинаются всякие "software is about collaboration". Collaboration - средство, инструмент, но вовсе не цель. Начинаются всякие шатания, типа зачем что-то делать, давайте лучше работать с пользователями, или давайте вложим деньги куда нибудь, может нам купить кого-нибудь. Начинаются игры в деятельность: cмотрите, у них какая штука, мы тоже такую сделаем, будет лучше настоящей. Все компании добившиеся чего-то имель неденежную цель, деньги приходили потом, когда эта цель создавала новый рынок. Компании без цели - зомби, которые существуют только за счёт инерции рынка. Они уже ничего нового не создают, но выискивают свежие ростки и немедленно пожирают их, постепенно превращая индустрию в пустыню. P.S. Навеяно посещением "standup meeting".

2008-05-25

Kangaroo Farm

Оказывается здесь неподалёку есть ферма, где разводят кенгуру. Можно приехать и покормить их из рук. Кроме очень дружелюбных кенгуру, у них есть не менее дружелюбные ламы, а так же страусы, павлины и некоторые другие экзотические звери.

2008-05-20

Microsoft about Vista

> Windows Vista is doing a lot more than Windows XP, and it requires resources to conduct these tasks. В этом то и проблема, что она делает больше. Мне не надо ничего из этого "делания", я бы предпочёл, чтобы она "делала" меньше, ничего не делала. Всё, что хочется от операционной системы - это возможности выполнять нужные мне программы и работать с железом. Идеально - это когда OS не видно, когда совершенно не ощущается, что она что-то "делает", когда просто "всё работает". Я обычно трачу усилия на то, чтобы выкинуть что-то из OS, остановить ненужные сервисы, деинсталировать ненужные программы, а поставить другие, те которые я выбрал, которые обладают нужной мне функциональностью. Последний пал Explorer (причём "пал" буквально), в результате я заменил стандартный shell на bblean, чем и доволен. Фактически это привело к тому, что больше нет на экране видимых окон, принадлежащих Windows. Нет вообще.

Фраза из разговора

"А фотографии у него все художественные, а потому скучные и неинтересные".

2008-05-19

В Spokane всё спокойно

Водопад в Spokane. Это город на восточной границе штата. Через весь город протекает река с одноимённым названием, которая по случаю наступившей жаркой погоды наполнена до краёв, бурлит и клокочет. Над этим буйством стихии протянуты навестные мостики и канатная дорога. Брызги долетают до мостика и приятно освежают.
Posted by Picasa

2008-05-07

Выбор домашнего сервера

За несколько лет у меня накопилась куча железок, управляющих домашней сетью. Это два четверть-гиговых Netdisk-а, один NAS с полугигабайтным MyBook, роутер и ещё один дополнительный свитч. Из устройств есть web-камера и DVD плейер, умеющий показывать фильмы с сетевого диска. Есть ещё несколько внешних дисков с бакапами разной свежести, лежащие по шкафам. Зрелище перепутанных проводов и блоков питания приводит меня в ужас. Хочется немного уменьшить этот бардак, собрав диски в один корпус и тем самым уменьшить количество проводов. Сейчас есть пара интересных железяк от HP. Во первых это MediaSmart сервер, работающий под WHS и во вторых MediaVault, который и по размеру и по цене тянет на половинку первого, и который работает под Линуксом. Первый основан на гигагерцовом процессоре AMD, второй на дохленьком полугигагерцовом ARM-е. Почитал я спецификации и всё бы хорошо в первом, если бы не цена и не WHS. Как-то не хочется сервер под windows, мне надо, чтобы работало и с Mac-ом и с Linux-ом. Да и функциональный набор WHS кажется довольно неприменимым. Нет, совсем не вдохновляет. С другой стороны, железяка явно пошустрее и места для дисков в ней больше. Если бы первую машинку да с софтом от второй, да подешевле на пару сотен (как раз стоимость WHS, наверное). Пробовал их кто-нибудь? Интересны отзывы.

2008-05-05

Google calculator

Subj, в принципе, очень удобная вещь. В поисковой строке можно набрать формулу с величинами, имеющими размерности и всё будет корректно посчитано и переведено.

pi*(3mm^2) in inch^2: pi * (3 (mm^2)) = 0.0146084351 inch^2

Мой сын на нём считает задачки по физике. Калькулятор знает многие физические константы, может перевести результат в нужные единицы, а то, что единицы совпали, является дополнительной проверкой.

Я когда увидел, попробовал и мне очень понравилось. Я когда-то тоже делал похожую штуку. А потому знаю где лежат одни грабли. И заглянув в заветное место увидел грабли в целости и сохранности. Вот они. Но Гугл зделал их ещё занятнее.

(0 Celsius - 0 Celsius) in Celsius: (0 degree Celsius) - (0 degree Celsius) = -273.15 degrees Celsius
0 Celsius + 0 Celsius: (0 degree Celsius) + (0 degree Celsius) = 273.15 degrees Celsius
0 Celsius *3: (0 degrees Celsius) * 3 = 546.3 degrees Celsius

Собственно, объяснение простое, но сначала ещё один пример:

0 Celsius - 0 Celsius: (0 degrees Celsius) - (0 degrees Celsius) = 0 kelvin

Гугл не умеет работать с размерностями со смещённым нулём. Для абсолютных единиц типа температуры бывают шкалы, гне нуль смещён. Например, температура Кельвина - абсолютная, а Цельсия и Фаренгейта - относительные. Вычитая относительные величины, скажем градусы Цельсия, мы получаем новую размерность - интервал температуры в градусах Кельвина или Цельсия. Очевидно, что переводя интервал в градусы Цельсия не надо прибавлять смещение в 273 градуса. Этим интервал отличается от значения температуры.

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

В принципе, не очень часто приходится иметь дело со смещёнными размерностями. Температуры да шкалы времени, и, кажется, всё. Так что калькулятор вовсе не плох. Однако с температурами они прокололись. Слишком много сил ушло на попугаев.

Никто не знает, как Гуглу баг зафайлить?

2008-05-02

Куда их совать-то?

Та же проблема, что и в анекдоте про свечки, существует в программировании и особенно в ООП языках. Допустим есть у нас набор объектов, скажем драйверы разных графических адаптеров. И другой набор объектов, скажем графические примитивы: линии, окружности, многоугольники. И решили мы нарисовать одно на другом. И написали для этого код. Всё уже почти работает, но перед нами встала архитектурная проблема: куда засунуть метод? В C#, например, функция должна быть в классе. Можно определить, конечно, класс с одним (или несколькими) статическим методами, но заклюют за недостаток архитектурности. Можно засунуть в графический примитив. Сделать у каждого метод Draw. А можно наоборот, в драйвере сделать виртуальные DrawLine и DrawCircle. Оба решения имеют недостатки. Например, примитивы могут быть вообще не классами, а структурами и методы рисования на конкретного вида устройствах там создают ненужные зависимости. А драйверы потому и драйверы, что не содержат всякой высокоуровневой логики. Надо сделать визитора, скажут прочитавшие Design Patterns или wrappers для примитивов, или ещё один уровень поверх драйверов, и понеслось. Что интересно, раздумья эти с точки зрения выполнения кода не очень интересны, код всё равно будет один и тот же. Это скорее предмет для бурного обсуждения на API review meeting. Что наводит на мысль, что это вообще ненужное размышление. Это плата за ООП и его упрощённую модель, когда метод принадлежит только одному классу. Логически у нас есть операция нарисовать одно на другом и некоторая матрица кодов, которые выбираются исходя из некоторых условий. Старый С-программист сделал бы функцию a la printf с форматной строкой и большим switch внутри и не был бы сильно неправ. Компьютер бы полюбил такой код за компактность, но архитект бы поморщился от такой примитивности и неархитектурности. Независимый С++-программист просто написал бы набор функций. Я не буду сейчас пока описывать как я представляю хорошее решение данного примера на разных языках. Моя мысль дня была в том, что ненужные с точки зрения кода рассуждения вероятно не нужны вообще и их наличие - недостаток архитектуры. А навеян пост продолжением чтения книжки про Руби и обнаружением в классе numeric метода, повторяющего блок N раз. Блин, оператор цикла - метод в классе целого числа. Зачем он вообще метод? "А потому!" - скажет автор, и будет по-своему, по-авторски, прав. Хочу тоже быть автором.

О высоком

В очередной раз удивившись потребности некоторых коллег испытывать к работодателю трепетное чувство верности, я подумал, что моё предыдущее объяснение этого явления не годится. Конечно, это спокойнее, но сила ненависти, которая обрушивается на усомнившегося в идеалах больше, чем объясняло бы сохранение душевного спокойствия или нежелания анализировать. Причём чем моложе собеседник, тем сильнее иррациональность чувства, что явно наводит на мысль об общности механизмов с другими человеческими инстинктами. А ведь скорее всего опять проявляется инстинктивное поведение. Человек - стайное животное, В стае интересы стаи важнее личности, отсюда и верность и самопожертвование. Отсюда же потребность принадлежности стае и депрессия от отсутствия таковой. Поэтому инстинктивные психологические механизмы, защищающие продление рода, переносятся на вожака. В бою вожаку надо верить, чтобы спасти стаю, даже ценой собственной гибели. Гены твоих выживших детей это запомнят. Может отсюда же и религия? Часто говорят, что человеку свойственно верить. И поэтому либо та религия либо другая. Я всегда считал это пропагандой, но сегодня задумался: может действительно свойственно?

2008-05-01

Жгун

Замечательно мужик рисует. Лица получаются отлично. И детали. И написал в одном из постов, что ищет работу, только не web-дизайн и не фирменные стили. Да уж, конечно! С таким талантом надо чем нибудь дельным заняться. Весь этот web-дизайн, в принципе, как и все эти "фирменные стили" есть просто распальцовка и ничего больше. Вот смотрю на продукцию самой известной российской дизайнерской фирмы и ничего кроме распальцовки не вижу. Неудобная клавиатура за несколько тысяч, какие-то странно уродливые и неудобные дизайны, херня какая-то. А вот у меня под рукой мышь no-name. Самая приятная изо всех, которые видел. Купил за 12 баксов в несуществующем больше магазинчике. Искал, кто делал, так и не нашёл. Да и как найти, когда всей информации на бирке "Optical mouse, made in china". И всё! Нет, не надо идти в web-дизайн. Лучше книжки оформлять. Хотя бы и онлайновые.

2008-04-30

Утиная типизация

Пост навеян чтением книжки про Руби. Язык неплохой, но, на мой вкус, немного пересолён объектной идеологией вкупе с ритуальным юниксизмом. Дочитал до утиной типизации. Есть языки со статическими типами, когда типы вычисляются во время компиляции (С, С#, Java etc.), есть с динамическими, когда переменная может содержать любой тип и во время компиляции он не известен и даже может быть изменён присваиванием значения другого типа (JavaScript, Python). Очевидно, что динамические типы почти невозможно скомпилировать эффективно. Более того, кучу ошибок невозможно предвидеть заранее и можно выявить только на этапе выполнения или нельзя выявить вообще. Зато интерпретаторы при этом получаются проще, сам писал, знаю непонаслышке. Честно говоря, я не вижу абсолютно никаких преимуществ динамических типов. Обычно к преимуществам относят то, что писать надо меньше, что я бы полагал даже несколько неприличным, поскольку оправдывается собственная лень. Собственно процесс печатания кода - это очень незначительная часть программистской работы. Есть очень удобный вариант статических типов - автоматические типы, когда тип определен, но явно не написан, а совпадает с типом выражения, которое присваивается. Он был предложен в новой версии стандарта C++, но, похоже, не вошёл. Зато элементы автоматической типизации есть в C# начиная с версии 3.0. var x = выражение; // Переменная x будет того типа, какой имеет правая часть. Это удобно для всяких итераторов и элементов коллекций, т.е. когда тип сложен и вторичен, например внутри цикла foreach. Но, тем не менее, это всё равно строгая статическая типизация со всеми её преимуществами. А "утиная типизация", которая декларируется в Руби, это из поговорки, что если некто крякает как утка, ходит как утка и плавает как утка, то это, наверное, и есть утка. Но это "наверное" и есть слабое место. А вдруг это утконос? Нельзя дать никаких гарантий, а потому надо постоянно и непрерывно проверять тип.

2008-04-29

Рогоз

А таки действительно рогоз, а не камыш! Надо же, какое всеобщее заблуждение.
Posted by Picasa

2008-04-28

Corteo

Очень красиво. Всё-таки этот цирк - лучший. Поразительно как им это удаётся, раз за разом, набрать исполнителей, сделать музыку, оформление, костюмы, всё собрать вместе как головоломку, которая встаёт точно, делаль к детали, движение к звуку, и при этом держать стиль и сохранять вкус. Описывать не буду, но очень рекомендую посмотреть. Только один эпизод. Первый выход крошечной клоунессы и главного комического персонажа. Вдруг я слышу диалог "Как дела? У меня всё хорошо. А у тебя? И у меня всё замечательно." На русском! С южноукраинским Одесским акцентом. Русский, вероятно, изображал некий кукольный язык, на котором говорят эти странные маленькие человечки. Мне кажется, клоунесса вообще не говорила на английском, только по русски.

2008-04-17

Софт подчиняется закону Паркинсона.

К предыдущему посту. Причина в том, что софт подчиняется закону Паркинсона. Точнее, не весь софт, а разрабатываемый в "больших компаниях", т.е. компаниях, функционирование которых подчиняется вышеупомянутому закону. Иногда считают, что закон Паркинсона - шутка, типа закона Мерфи или закона бутерброда. Вот, Wikipedia так и говорит. Или путают его с одноименной болезнью. Когда-то это имя было вполне известно, но в последнее время я упоминаю его в разговорах и народ не слышал. Не хотят люди анализировать общество, скользкая тема. Так вот, это не шутка и не юмористическое наблюдение. Это именно закон, который работает точно так же, как и другие законы, скажем идеального газа, единственное отличие, что в качестве молекул выступают люди, наделённые свободой воли, а потому они делают газ не столь идеальным. Но в среднем, всё равно, один человек редко может изменить поведение сложной системы, а потому закон работает. Фактически, в обществе тоже есть силы и, мы, материальные точки им подчиняемся и двигаемся соответственно. Большая компания - это именно компания, где индивидуальные траектории уже формируют статистическое поведение и, как правило, если нет сильных внешних сил противодействия, закон Паркинсона вполне работает. Так вот, именно поэтому софт и заполняет весь доступный объём, и все прочие ресурсы. Он просто растёт до тех пор, пока не начинает встречать внешнее давление, направленное на его уменьшение. И давление это начитается где-то на уровне "стало работать хуже чем раньше". А растёт софт изначально потому, что писать новый код проще, чем рефакторить старый. И не только проще, но и спокойнее, меньше вероятность сломать. Вот он и растет пока давления изнутри и снаружи не сравняются, что почти в точности компенсирует закон Мура.

2008-04-15

TGMLC = The Great Moore's Law Compensator

Взято отсюда. Картинка говорит сама за себя. Раньше софт работал быстрее - это не иллюзия, это так и есть на самом деле.

2008-04-10

Прошлогодний кампинг на Sunrise Point.

Продолжаю разгребать прошлогодние фотки. Это июльские, когда мы "кампились" на Sunrise Point, Mount Rainier. Всего фотографий было сделано очень много. Запомнилось: мармоты, был даже один детёныш, они почти не боялись и вовсю позировали перед камерами; шикарные белые грибы, которых было очень много, мы их даже пытались сушить на костре; изумительные пейзажи и необычные, огромные масштабы; гора просто гигантская, это не описать, это надо видеть; дождь в последнюю ночь, когда я проснулся и обнаружил, что в палатке кругом вода, я на коврике, а вокруг меня плавают разные вещи. Было хорошо. Все хотим снова туда. Надо будет купить солнечную батарею, фотоаппарат заряжать. Думаю, за ночь зарядится.

Пишут же люди операционные системы...

Contiki is an open source, highly portable, multi-tasking operating system for networked memory-constrained networked embedded systems. A typical Contiki configuration is 2 kilobytes of RAM and 40 kilobytes of ROM. Contiki contains two communication stacks: uIP and Rime. uIP is a small RFC-compliant TCP/IP stack that makes it possible for Contiki to communicate over the Internet. Rime is a lightweight communication stack designed for low-power radios that provides a wide range of communication primitives and protocols, such as multi-hop data collection, multi-hop unicast mesh routing, and reliable multi-hop network flooding. Contiki consists of an event-driven kernel on top of which application programs are dynamically loaded and unloaded at runtime. Contiki processes use light-weight protothreads that provide a linear, thread-like programming style on top of the event-driven kernel. Contiki also supports per-process optional preemptive multi-threading, interprocess communication using message passing through events, as well as an optional GUI subsystem with either direct graphic support for locally connected terminals or networked virtual display with VNC or over Telnet. Contiki runs on a variety of platform ranging from embedded microcontrollers such as the MSP430 and the AVR to old homecomputers. Code footprint is on the order of kilobytes and memory usage can be configured to be as low as tens of bytes.

2008-04-08

Весна на Snoqualmie

Вот прошлогодние майские фотографии, сделанные на реке Snoqualmie. Я люблю это место. А заодно я начал немного править свой сайт уже порядком заброшенный. Вот, сделал slide-show. Нажать Show в правом верхнем углу. Проверял в FF2x и IE6. IE7 дома нет, завтра на работе проверю.

2008-04-05

Дикие черепахи

Вот такой зверь живет в местных озёрах. Сфотографировано в городе, недалеко от места, где мы живём. Черепаху можно увидеть на том же бревне в любой солнечный день.
Posted by Picasa

2008-04-04

Перевернул зеркало.

Это сообщение написано в блоггере. Я извиняюсь за тестовые сообщения. Кажется, сейчас всё работает.

2008-04-02

Блог в зеркале

Доделал скрипт синхронизации. Блог будет жить параллельно по всем трём адресам: vtolkov.livejournal.com, vtolkov.blogspot.com, и как часть tolkov.com. Коменты, очевидно не копируются. Сейчас основной блог остаётся в LJ, а уже оттуда расползается по остальным местам. Со временем я это переделаю и основной блог будет не в LJ, но читателей это волновать не должно.

Что мне не очень нравится в LJ, это то, что это не совсем блог, это социальная сеть. Потому там всё заточено на общение, а не на тексты. Опять же, чтобы оставить комент, нужно регистрироваться, логиниться и т.д. Да и дизайн весь какой-то социальный. И всякие рейтинги, "друзья", обсуждения, и пр. Я никогда не принадлежал к никакой тусовке и не переношу никаких рейтингов. Желание уйти из злачного места появляется сразу после просмотра блогов рейтинговых "лидеров" на первой странице. Я туда раньше не заглядывал и правильно делал.

2008-03-31

Опять хакнули баш.

Какие-то национал-лингвисты загнали в цитаты список правил русского языка. Update: это была их первоапрельская шутка. Дурак, ты боцман...

2008-03-28

vtolkov @ 2008-03-28T22:46:00

Пока буду жить и здесь и там.

Переползание в blogger.

Собираюсь переползти в blogger. Вопрос - будут ли те, кто читает меня здесь, читать в блоггере?

Unicode

http://www.codinghorror.com/blog/archives/001084.html Я тоже! :-) В своём домашнем С++ проекте я поменял Unicode (а точнее widechar) на UTF-8. Не нарадуюсь. Весь код стал проще. И никаких TCHAR или wchar_t, обычные char. Никаких макросов _T. Разбор текстового файла, который тоже в UTF-8, ускорился на порядок. Разбор файла в Windows-1251 ускорился существенно, раза в 3, поскольку большая часть разделителей - ASCII. Уменьшилось количество отъедаемой памяти. Уменьшился размер кода, поскольку 16-битовые операции в 32-битовом коде требуют специального префикса, а 8-битовые - не требуют. Единственное неудобство, что все вызовы функций Windows делаются через специальные wrapper-ы. Но это даже хорошо. При необходимости будет легче адаптировать код под Linux. Я все обращения к функциям ОС вынес в отдельный namespace. Более того, я include заключил в namespace, чего его авторы, видимо, не ожидали. А вот так! Добро пожаловать за окошко с решёткой! И я не стал объявлять его using. Только явно, Win::CreateFileW.

2008-03-26

BIOS Hypervisor

Хотел написать про свою идею поместить Hypervisor в BIOS, так, чтобы можно было загружать одновременно пару ОС, а пока они грузятся, лазить в интернете используя маленькую встроенную машинку с браузером, но без доступа к диску. Но набрал в гугле subj и понял, что опоздал. http://www.google.com/search?hl=en&q=bios+hypervisor http://tkjunkmail.blogspot.com/2007/11/phoenix-technologies-to-release.html http://searchsecurity.techtarget.com/news/article/0,289142,sid14_gci1281741,00.html

2008-03-25

Смена лампочки в Микрософте

Оригинал в http://www.codinghorror.com/blog/
Слегка сокращённо. Я не знаю, как перевести некоторые термины, оставив их на английском.

Этот классический пост Эрика Липперта описывает, со всей мучительной детальностью, какая в точности нужна работа, чтобы добавить одну функцию ChangeLightBulbWindowHandleEx в Микрософтовский код:

# Один девелопер потратил пять минут на написание ChangeLightBulbWindowHandleEx.
# Один программ-менеджер написал спецификацию.
# Один эксперт по локализации проверил спецификацию на возможные проблемы локализации.
# Один эксперт по usability проверил спецификацию на возможные проблемы с usability и accessibility.
# Как минимум один девелопер, один тестер и один ПМ провели "мозговой штурм" по поводу возможных проблем с безопасностью.
# Один ПМ добавил модель безопасности к спецификации.
# Один тестер написал план тестирования.
# Один тест-лид включил его в график-тестирования.
# Один тестер написал тесты и добавил их в ночной автоматический тестовый прогон.
# Три или четыре тестера поучаствовали в "ad hoc bug bash" (поковырялись на предмет багов).
# Один технический писатель написал документацию.
# Один технический корректор вычитал документацию.
# Один технический редактор проверил документацию.
# Один менеджер документации добавил новую документацию в существующую систему, обновив таблицу содержания и поисковые индексы.
# Двадцать пять переводчиков перевели документацию на все поддерживаемые языки. Менеджеры переводчиков живут в Ирландии (для европейских языков) и в Японии (для азиатских языков), сдвинутые по времени относительно Редмонда, потому это не простая логистическая проблема.
# Команда старших менеджеров координирует все эти усилия, оплачивает работу и обосновывает расходы перед вице-президентом.

...

Кто же всё это делает для Open Source? Ответ, согласно комментарию Raymond Chen, это "никто", что говорит о вопиющей непрофессиональности и некачественности ОС софта.

Моё (codinghorror) откровенное мнение: "А вам всё это нужно, чтобы быть успешным?".

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

Зачем всё это нужно мне? Ради одного последнего пункта, "оплачивает работу и обосновывает расходы". Это то главное, чего мне очень не хватает в Open Source.

2008-03-23

Стерео

Давненько я не снимал стерео. Снято мыльницей вчера на велодорожке около Carnation. Как всегда, первая пара вдаль, вторая и третья - с перекрещиванием.

2008-03-21

Из блога в блог перелетая

Копирует блоги. Из одной системы в другую. Если собрались перебираться из LJ в blogspot или wordpress, то запросто. Комменты не копируются, естественно. http://linuxlore.blogspot.com/search/label/blog2blog

2008-03-19

Кто-нибудь хочет в Microsoft?

В конце мая ожидается поездка рекрутеров в Москву. Читайте дальше в блоге у Эльдара. Я тоже когда-то совершил сей героический поступок. Почти по Жванецкому. "Теперь он программистом в Редмонде. Жалеет страшно."

Вперед, в XXI век

Недавно посетил некую выставку неких "передовых разработок". Удивило, обилие заголовков с термином "XXI век". Типа, "Методы генерации булшита XXI века" или "Разработка булшита в корпоративной среде XXI века" и т.д. Главное, чтобы были всякие слова типа "collaboration" или "corporate environment", но не просто, а XXI века. Я уж и забыл, что недавно век начался. Практически всегда, когда используют такое словосочетание, вам хотят что-то продать. Вам в новом веке нужна новая машина, новый дом, новый компьютер с новой системой, не отставайте от времени! С временем надо шагать в ногу! Корпорациям в новом веке тоже нужно всё новое, особенно новые способы ведения бизнеса! Нельзя же по старинке писать legacy code! Китайские товарищи с вышеупомянутой выставки поняли, как надо продавать разработки. Нам так однажды, в 2000 году, продали нового президента, которого перед этим те же люди лихо всучили Борис Николаевичу. С теми же самыми словами, несмотря на то, что век начинался в 2001. Короче, все эти веяния времени - булшит, и так его и надо понимать. Ног у времени нет, отстать от него нельзя. Можно отстать от моды, ну и хрен с ней. Мода придумана в точности для того же самого - продать человеку то, что ему не нужно. Навеяно дискуссией про C#. Если есть практическая проблема, где C# её решает не внося других проблем, нормально, можно использовать. Если есть мысль, что C# сейчас можно продать - вперед. Но переписывать С++ код на С# только потому, что это "веление времени" - увольте. Это булшит.