Хвастовство и задача на сообразительность
Jun. 2nd, 2010 01:49 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
На материнских платах современных компьютеров есть 2 места под видеокарты. Обычная технология позволяет поставить только две одинаковые видеокарты. Наша контора делает чип, который обеспечивает поддержку двух любых видеокарт. Ведущие производители материнских плат готовят к выпуску платы с нашим чипом, а одна такая плата уже вышла в продажу. Сейчас в Тайване проходит международная компьютерная выставка COMPUTEX. На ней материнская плата с нашим чипом получила награду Best Choice. Это самая престижная награда, которую может получить такой продукт. Контора радуется.
Во время работы над таким продуктом приходится решать много разных задач. Одним трюком я горжусь совершенно по-детски. Вот упрощенные вводные данные. На компьютере запущена какая-то ресурсоемкая программа. В режиме реального времени мы узнаем ключевые параметры этой программы. Мы хотим выводить эти параметры на экран. То есть, программа работает, а где-нибудь в уголке экрана мы видим постоянно меняющиеся числа. Единственная функция, которая есть в нашем распоряжении, может нарисовать прямоугольник любого цвета, любого размера в любом месте экрана. При этом цвет, размер и место могут быть произвольными, а вот количество вызовов этой функции надо минимизировать.
Сперва нарисуем черный прямоугольник, у которого ширина раза в полтора меньше высоты. Поверх него нарисуем белый прямоугольник меньшего размера - чтобы были видны края черного прямоугольника. Так мы получим цифру 0. А если мы нарисуем белый прямоугольник поверх черного так, чтобы от черного осталась только вертикальная полоска, то получим цифру 1. Чтобы получить цифры от 2 до 9, надо поверх черного прямоугольника нарисовать два белых прямоугольника в соответствующих местах (и один - для семерки). В среднем 2.7 прямоугольника на цифру, что довольно мало.
Получается угловато, уродливо, но крайне просто и эффективно. За пару дней был написан и отлажен интерфейс для этого метода. В нашей конторе все отделы пользовались этим методом почти год.
Во время работы над таким продуктом приходится решать много разных задач. Одним трюком я горжусь совершенно по-детски. Вот упрощенные вводные данные. На компьютере запущена какая-то ресурсоемкая программа. В режиме реального времени мы узнаем ключевые параметры этой программы. Мы хотим выводить эти параметры на экран. То есть, программа работает, а где-нибудь в уголке экрана мы видим постоянно меняющиеся числа. Единственная функция, которая есть в нашем распоряжении, может нарисовать прямоугольник любого цвета, любого размера в любом месте экрана. При этом цвет, размер и место могут быть произвольными, а вот количество вызовов этой функции надо минимизировать.
Сперва нарисуем черный прямоугольник, у которого ширина раза в полтора меньше высоты. Поверх него нарисуем белый прямоугольник меньшего размера - чтобы были видны края черного прямоугольника. Так мы получим цифру 0. А если мы нарисуем белый прямоугольник поверх черного так, чтобы от черного осталась только вертикальная полоска, то получим цифру 1. Чтобы получить цифры от 2 до 9, надо поверх черного прямоугольника нарисовать два белых прямоугольника в соответствующих местах (и один - для семерки). В среднем 2.7 прямоугольника на цифру, что довольно мало.
Получается угловато, уродливо, но крайне просто и эффективно. За пару дней был написан и отлажен интерфейс для этого метода. В нашей конторе все отделы пользовались этим методом почти год.
no subject
Date: 2010-06-02 08:40 am (UTC)