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


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


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


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




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

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 около сотни строк следующего вида:


<A href="raboti.php?pics=fotos/30.jpg" title="Увеличить изображение">

<img src="/fotos/s30.jpg" alt="образец №30">

</A>

<A href="raboti.php?pics=fotos/31.jpg" title="Увеличить изображение">

<img src="/fotos/s31.jpg" alt="образец №31">

</A>

<A href="raboti.php?pics=fotos/32.jpg" title="Увеличить изображение">

<img src="/fotos/s32.jpg" alt="образец №32">

</A>




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

14:00 15.02.2011, IT happens


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


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


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


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


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

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


Окончательное решение программа принимала на основе цвета ячейки таблицы! Ей-богу, я окосел. Объявить массив и занести в него номера ячеек, образующих контур, наверное, слишком скучным показалось — лучше потыкать в пиксели на форме. Особенно весело было нажать на кнопку «Рассчитать», потом на секунду свернуть окно программы и наблюдать девственно чистую белую таблицу, о перерисовке содержимого которой, разумеется, никто не позаботился. Разумеется, сделать вывод после этого программа уже не могла.