From Novosibirsk, Russia? Our tiny company is looking for current or future rock-star developers.

July 31, 2007

Choosing LCD monitor, Apple mice and base stations

Когда-нибудь удивлялись, почему в прайсах монитор 23" можно найти и за 20, и за 30 тысяч? LCD-матрицы, используемые в мониторах, бывают нескольких видов.

При взгляде (даже немного) снизу на экран с матрицей TN изображение становится заметно темнее. Углы обзора не очень хорошие, вдобавок часто неравные по вертикали и горизонтали (например, 150 по горизонтали и 135 по вертикали). Если смотреть сбоку по горизонтали, «плывут» (то есть немного изменяются) цвета.

В PVA- и MVA-матрицах проблемы с вертикалью, аналогичной матрицам TN, нет. Зато благодаря особенностям технологии при взгляде на матрицу прямо (по горизонтали) яркость получается меньше, чем при взгляде сбоку. (MVA — более продвинутый вариант, поэтому на них проблемы наблюдаются в меньших масштабах.)

В результате на PVA / MVA после установки яркости монитора на комфортный уровень (в отличие от максимальной, на которой они как правило демонстрируются в магазинах) при взгляде прямо на изображении радикально отсутствуют темные детали. Настройкой цветового профиля и/или параметров монитора можно добиться хорошего изображения при прямом взгляде, но при этом сбоку всё, естественно, станет хуже. Если монитор большой, то «прямо» и «сбоку» можно наблюдать одновременно на разных частях экрана.

Наконец, самый дорогой вид матриц — S-IPS. У них большие углы обзора (что-то вроде 178˚) и отсутствуют заметные проблемы с цветом. В технических характеристиках эти матрицы можно узнать по невысоким показателям яркости и контрастности (впрочем, их достаточно — это у PVA/MVA показатели выше нужной величины).

Необходимость изучить всю вышеприведенную информацию возникла в процессе выбора нового монитора. Больших мониторов (больше 20") на S-IPS практически нет. Что удивительно, в этом сегменте Apple Cinema Display даже в России не дороже конкурентов. В результате я и стал счастливым обладателем Apple Cinema Display 23".

Если и вы задумаетесь о таком, нужно понимать, что его сделала Apple. Он имеет только DVI-вход, а органы управление представлены тремя сенсорными кнопками: увеличение яркости, уменьшение яркости и включение/выключение.

Заодно я не удержался и купил Apple Wireless Mighty Mouse. Специфический продукт, однако я решил, что к нему можно привыкнуть.

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

Во-вторых, шарик прокрутки подобно трек-болу можно вращать во все стороны, что очень удобно. Однако для прокрутки шарик нужно легонько надавливать вниз, что тоже непривычно. (В Mac OS X без горизонтальной прокрутки вообще жить сложно, хоть ее и можно эмулировать на обычной мышке, крутя колесико с кнопкой Shift.)

Наконец, у мышки есть еще две кнопки. Если на мышь нажать, касаясь шарика, то сработает третья кнопка (которую я назначил на активацию Exposé), а если со всей силы сжать выделенные области по бокам, то сработает четверая (которая, ввиду исключительной некомфортности операции, была назначена на Exposé Deskop).

В очереди покупок: новый стул (у текущего высоты недостаточно для правильной посадки за новым монитором), хорошие колонки и, возможно, Apple AirPort Express Base Station.

Насчет последней: AirPort Express — базовая станция Wi-Fi, к которой можно подключить колонки и воспроизводить на них звук с любого iTunes. Заодно к ней можно подключить и принтер, чтобы расшарить его по сети. И я бы совсем не сомневался в этой покупке, если бы к ней можно было подключить еще и жесткий диск, столь необходимый для backup’ов с надвигающимся выходом OS X 10.5 Leopard — однако, увы, диск позволяет подключить только AirPort Extreme, к которой нельзя подключать колонки. Тра-та-та (AirPort Express позиционируется как недорогое устройство, которое можно закупить в нескольких экземплярах, по одному на каждую аудиосистему в доме).

July 26, 2007

HTML completion

Задача: вычислить HTML-теги, которые могут быть вложены в данный.

Решение.

1. Описываем все теги в виде набора Java-классов, по одному классу на тег.

2. Учим эти Java-классы генерировать куски DTD, описыающие соответствующие теги.

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

3. Для всех возможных HTML-тегов повторять шаги 4-6:

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

5. Скормить полученный набор кусков (в виде массива строк) кастомному DTD-валидатору, специально предназначенному для данной задачи.

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

Да здравствует Eclipse Web Tools Project! Индусы — вот implementation detail компании IBM.

July 04, 2007

Developer's Fun

Есть среди программистов понятие, которое называется «фан». Людям, не живущим в этой среде с детства, может быть сложно понять соответствующее культурное явление.

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

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

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

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

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

Есть и другие факторы, мешающие творчеству, например, множество посторонних обязательств или разрозненных дел, которые скоро нужно сделать или приходится держать в голове. Поэтому среди программистов популярны подходы вроде «Getting Things Done».

Вывод: программист — не слесарь, с ним нужно работать по-другому.

А еще моя супруга готовит офигенную пиццу. Не похудеть мне сегодня. :)