2008-12-31
Поздравляю всех читателей с новым годом!
2008-12-29
Сам писи!
2008-12-24
SFO
2008-12-12
Google chrome & native client
2008-12-09
Немного об истории и литературе.
2008-12-08
Рекомендую.
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
2008-11-11
Another Canvas Test
Этот график считается и строится непосредственно в браузере. Оказывается, вполне возможно добавить скрипт в блог.
2008-11-10
Холст
2008-11-03
My Desktop
Несколько иллюстраций к предыдущему посту. Вот так выглядит мой домашний десктоп и вот так я работаю.
Это BBLean с открытым меню приложений и запущеным Google Chrome, в котором открыта персонализированная iGoogle. Мне, кстати, последняя понравилась. Вся информация в одном месте, почта, RSS, закладки (последние сконфигурированы открываться в новом табе, поскольку в Chrome закладки ещё не сделали). Кстати слева - столбик с иконками Quick Launch.
Те же и FAR. Это наиболее типичная конфигурация экрана, вероятно 80% времени.
Пара кадров с Visual Studio VS6. Я пользуюсь до сих пор 6-ой версией поскольку мне в ней нравится оболочка. Компайлер С++ в ней не супер, но, мне его хватает. Новые версии более громоздкие и менее удобные.
2008-11-01
Три PM-а под виндой занимались ерундой
2008-10-30
Мостик
2008-10-27
Written on the piece of junk
Subversion
Я уже давно поставил subversion на свой домашний сервер (Synology). Раньше я "догфудил" нашу внутреннюю систему, и она работала очень хорошо даже на netbook-е, но мне всегда хотелось, чтобы она работала на linux-сервере. Subversion оказалась очень удобной, особенно для персонального использования:
- Есть варианты для ARM-процессора, что позволяет использовать Slug (Linksys NSLU2), или Synology, или даже Nokia N800.
- Её можно сконфигурировать для работы через inetd, когда она не висит постоянно в памяти. При персональном использовании это наиболее удобный режим.
- Один сервер может работать с несколькими репозитариями. Что позволяет создать не хранить мух с котлетами. Один для моих проектов, сыну - свой, один - как backup для всяких my documents, один для временных вещей, которые потом будут удалены и т.д.
- Можно быстро загрузить репозитарий из файла и сохранить в файл. Я сделал скрипт и загрузил свои проекты вместе с полной историей.
- Tortose Svn - как оболочка очень удобна. Даже spell-checker с подсказками имён функций из текста. Супер.
- Очень удобно, что сервер не хранит состояние клиента. Это просто гора с плеч. Никаких read-only атрибутов, никаких "открыть файл для редактирования". Просто работаешь спокойно, переписываешь всё вместе куда хочешь, если надо, потом система разберётся сама, что изменилось. И не надо никаких плагинов к Visual Studio.
Короче, я этой штукой очень доволен. И вот что я подумал: нет никаких технических причин, по которым крупной компании нужна более мощная система. Фактически единственная причина - та же, по которой крупной компании нужен совет директоров и отдел кадров. Реально проекты должны разбиваться на мелкие функциональные части, которые вполне могут располагаться в малых серверах, где количество клиентов - это, по порядку величины, количество людей в команде. Команды периодически отправляют стабильные версии в вышестоящий сервер, где количество клиентов - порядка количества команд, и т.д. Сейчас это делается в крупных компаниях через ветки (branches), но нет особых причин, по которым все ветки должны располагаться на одном сервере. Я за децентрализацию.
2008-10-23
2008-10-20
Вчера на Snoqualmie Middle Fork
2008-10-14
Йцукенъ
2008-10-12
2008-10-09
Конец бумажных книг
2008-10-08
2008-10-03
Cloud OS
2008-09-26
Google Chrome - 20 дней спустя.
2008-09-22
Нижний Новгород - город контрастов.
2008-09-19
Для чего нужен Downtown?
2008-09-02
Google Chrome
2008-09-01
Пеньки на Keechelus Lake.
Почти все горные озёра - натуральные. Горные речки заливают впадину и получается озеро. Но уровень многих дополнительно поднят дамбой. Вода используется для орошения засушливой восточной части штата. Весной озеро наполняется талой водой, а за лето вода расходуется и озеро опускается до своего естественного уровня.
2008-08-31
Последствия снежной лавины
2008-08-26
Компьютерно-операционно-системное.
2008-08-24
Жирный пингвин робко прячет тело жирное в утёсах...
2008-08-23
2008-08-05
Мысль дня
2008-08-04
О хлебе насущном.
2008-08-02
Корпоративные игры.
Фабрики производят массовый товар, выполняя функцию клонирования. Программисты должны, в принципе, писать уникальный код, ибо стоимость прямого клонирования нулевая. Но модель продажи построена на старых традициях материального производства, поэтому нулевая по себестоимости функция клонирования оплачивается реальными деньгами, и эта особенность приводит к тому, что компания однажды завоевавшая рынок, может больше вообще ничего не производить, продавая копии уже сделанного. Рынок информационного продукта в силу ряда причин любит сиквелы и версии того же самого, что работает на ту же тенденцию. Обычно мелкие изменения и исправления багов достаточны для продолжения продаж. Покупатели не требуют прорыва и изменений. "Мы только-только разобрались в предыдущей версии, не надо нам нового API, сделайте просто чтобы старый работал, и всё."
А люди сидят, им надо расти, делать карьеру. Чем же они заняты? Корпоративными играми. Они играют в производство, в карьеру, в перспективные исследования и разработки, в новые методы производства и системы управления персоналом. Сотрудники делают супер-пупер продукт следующего тысячелетия, проводя бессонные ночи над переписыванием всего кода на новый язык или новую платформу, и ничего при этом не выпуская. А когда кто-то вдруг потребует выпустить что-нибудь, чтобы оправдать расходы, можно быстро повырезать весь новый сомнительный креатив и выпустить почти то же самое, что было, слегка перекрасив. Начальник сделает умное лицо и скажет, что мы потратили миллиарды на разработки и исследования и выпустили продукт много лучше, чем все остальные наши продукты. Блогеры и журналисты скажут WOW! Хакеры расскажут о способе вернуть старую раскраску и привычные функции. Все будут довольны.
Но только до тех пор, пока неумолимое движение прогресса не сделает этот супер-успешный продукт никому не нужным или выскочка-конкурент не напишут вдруг что-нибудь на порядок лучше и удобнее. Но даже и тогда, агония будет долгой, движение прогресса неспешно, инерция потребителей велика, супер доход от копирования позволит уничтожить конкурента или, в конце концов, попытаться завоевать новый рынок.
И тут-то и будет поджидать засада. Забыли! Разучились! Забыли как выпускать. Разучились писать исходя из здравого смысла, из проблем потребителя, быстро и эффективно. Начальство продолжает играть в игры, в карьеры, строить супер-пупер стратегии. Внедрять технологии и бизнес-процессы. Управлять персоналом. И потому не получается захватить новый рынок. Остаётся подождать, пока конкурент тоже начнёт деградировать от своих внутренних игр. И там, в будущем, мы ещё посмотрим, кто победит в финальной схватке гигантов. Если сумеем вспомнить их имена.
2008-07-29
Synology
2008-07-25
2008-07-23
Переключение раскладки в Windows с помощью Caps Lock.
В 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
2008-07-16
Vita Nostra
2008-07-10
AJAX, History and Backward Key
2008-07-06
Зелёная черепаха
2008-07-01
Я вернулся
2008-06-13
True Crypt
2008-06-11
2008-06-10
2008-06-05
Цены на бензин
Business value of Windows Vista.
2008-05-28
Невыполнимая миссия
2008-05-25
Kangaroo Farm
2008-05-24
2008-05-20
Microsoft about Vista
2008-05-19
В Spokane всё спокойно
2008-05-07
Выбор домашнего сервера
2008-05-05
Google calculator
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
Куда их совать-то?
О высоком
2008-05-01
Жгун
2008-04-30
Утиная типизация
2008-04-29
2008-04-28
Corteo
2008-04-17
Софт подчиняется закону Паркинсона.
2008-04-15
TGMLC = The Great Moore's Law Compensator
2008-04-10
Прошлогодний кампинг на Sunrise Point.
Пишут же люди операционные системы...
2008-04-08
Весна на Snoqualmie
2008-04-05
Дикие черепахи
2008-04-04
Перевернул зеркало.
2008-04-02
Блог в зеркале
Что мне не очень нравится в LJ, это то, что это не совсем блог, это социальная сеть. Потому там всё заточено на общение, а не на тексты. Опять же, чтобы оставить комент, нужно регистрироваться, логиниться и т.д. Да и дизайн весь какой-то социальный. И всякие рейтинги, "друзья", обсуждения, и пр. Я никогда не принадлежал к никакой тусовке и не переношу никаких рейтингов. Желание уйти из злачного места появляется сразу после просмотра блогов рейтинговых "лидеров" на первой странице. Я туда раньше не заглядывал и правильно делал.
2008-03-31
Опять хакнули баш.
2008-03-30
2008-03-29
2008-03-28
Переползание в blogger.
Unicode
2008-03-26
BIOS Hypervisor
2008-03-25
Смена лампочки в Микрософте
Слегка сокращённо. Я не знаю, как перевести некоторые термины, оставив их на английском.
Этот классический пост Эрика Липперта описывает, со всей мучительной детальностью, какая в точности нужна работа, чтобы добавить одну функцию ChangeLightBulbWindowHandleEx в Микрософтовский код:
# Один девелопер потратил пять минут на написание ChangeLightBulbWindowHandleEx.
# Один программ-менеджер написал спецификацию.
# Один эксперт по локализации проверил спецификацию на возможные проблемы локализации.
# Один эксперт по usability проверил спецификацию на возможные проблемы с usability и accessibility.
# Как минимум один девелопер, один тестер и один ПМ провели "мозговой штурм" по поводу возможных проблем с безопасностью.
# Один ПМ добавил модель безопасности к спецификации.
# Один тестер написал план тестирования.
# Один тест-лид включил его в график-тестирования.
# Один тестер написал тесты и добавил их в ночной автоматический тестовый прогон.
# Три или четыре тестера поучаствовали в "ad hoc bug bash" (поковырялись на предмет багов).
# Один технический писатель написал документацию.
# Один технический корректор вычитал документацию.
# Один технический редактор проверил документацию.
# Один менеджер документации добавил новую документацию в существующую систему, обновив таблицу содержания и поисковые индексы.
# Двадцать пять переводчиков перевели документацию на все поддерживаемые языки. Менеджеры переводчиков живут в Ирландии (для европейских языков) и в Японии (для азиатских языков), сдвинутые по времени относительно Редмонда, потому это не простая логистическая проблема.
# Команда старших менеджеров координирует все эти усилия, оплачивает работу и обосновывает расходы перед вице-президентом.
...
Кто же всё это делает для Open Source? Ответ, согласно комментарию Raymond Chen, это "никто", что говорит о вопиющей непрофессиональности и некачественности ОС софта.
Моё (codinghorror) откровенное мнение: "А вам всё это нужно, чтобы быть успешным?".
А моё мнение, как девелопера, что процесс сильно идеализирован и сокращён. Всё сложнее и дольше даже на первых стадиях. Потому до написания документации дело может дойти только по решению европейского суда.
Зачем всё это нужно мне? Ради одного последнего пункта, "оплачивает работу и обосновывает расходы". Это то главное, чего мне очень не хватает в Open Source.