Читаем Bash.org.ru IT Happens Истории ## 5401 – 5500 полностью

Чувак прерывает классическим анекдотом:

— Да-да, знаю. Страдивари скрипки для лохов делал, а для реальных пацанов — барабаны!

<p>#5458: Быстро, дёшево увеличьте на три дюйма</p>

14:00 15.02.2011, IT happens

Работаю железячником в IT-отделе большого завода. Две недели назад вернулся из отпуска. Решил посмотреть, что из «долгих» ремонтов за моё отсутствие скопилось. Среди всего прочего обнаружился 19" монитор малоизвестной фирмы со стикером: «Неисправен видеопроцессор» (правильнее говорить, конечно, скейлер). Всё бывает впервые, но для этой модели монитора типовыми являются проблемы с блоком питания. Моделей таких у нас аж сорок штук. Решаю поинтересоваться у коллеги, который ковырял монитор, что там к чему — может, у нас новый массовый вылет мониторов намечается.

Описание неисправности меня несколько озадачило. Началось всё, как обычно, с блока питания, но потом обнаружилось, что монитор не работает под виндой. Система переходит на разрешение рабочего стола, монитор рисует табличку «Out of range» и уходит в спячку. За анализ разрешения может отвечать не только скейлер, но и Micom (специализированный процессор, отвечающий за функции управления монитором), но проблема вообще может быть во входном кабеле или в разъёме; про снятую в настройках экрана галочку ограничения видеорежимов я вообще молчу. Чтобы проверить догадки, подрубаю монитор к своей машине на второй разъём видеокарты. Винда радостно рапортует о новом устройстве, правда, утверждает, что это монитор совершенно другого производителя, да ещё и 22-дюймовая модель.

Коллега признался, что заменил в мониторе микросхему 24с16, потому что она ему показалась плохо припаянной: на плате было место под микросхему для поверхностного монтажа, а вместо неё на проволочках была припаяна микросхема в корпусе DIP. Коллега, не мудрствуя, нашёл микросхему с таким же названием в другом мониторе.

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

Вернули на место микросхему с нужной прошивкой, и монитор начал нормально определяться и работать в положенных ему режимах. Кстати, микруху в корпусе DIP впаял туда я года два или три назад. Родная подпортилась из-за того, что пользователи на горячую переткнули DVI-кабель.

<p>#5459: Динамично донельзя</p>

14:00 15.02.2011, IT happens

Когда же придут те времена, когда для замены одного-единственного номера телефона на сайте не надо будет писать нечто типа:

$ find ./ -type f -exec sed -i 's/, (925)5xx-xx-x3//g' {} \;

Почему разработчик не может просто описать один шаблон и подключить его везде, где нужно? Сайт работает на MODx, однако его странички — обычные PHP-файлы, разбросанные по подкаталогам. Зачем нужна CMS вообще в таком случае? Неясно. При этом в базе данных 40 таблиц.

Прекраснее же всего раздел «Портфолио». В скрипте raboti.php около сотни строк следующего вида:

образец №30

образец №31

образец №32

<p>#5460: Не знаю пароль, но вижу ориентир</p>

14:00 15.02.2011, IT happens

Попросили помочь с программой по одному околокомпьютерному предмету. Как всегда, программа уже кем-то сдавалась, «там уже всё работает, ты только подправь чуток, чтобы выглядело по-другому».

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

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

Рассчитанные значения выводились в таблицу на форме, при этом ячейки прямо на ходу раскрашивались в зависимости от того, в какую из двух частей матрицы они попали. Думаете, красоты ради раскрашивались? Вот и я так думал, пока в конце не увидел это:

a := Canvas.Pixels[n-10,k-10];

if TColor(a) = clRed then begin otvet := … end else otvet := …

Перейти на страницу:

Все книги серии Bash.org.ru IT Happens

Похожие книги