bash.im ithappens.me zadolba.li
5462

Как цветок в проруби

15 февраля 2011, 12:45

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

Пару недель назад товарищ пишет:

«Всё, сделал! Теперь, когда директор входит в офис, автоматически исчезает шара с фильмами, и избранным рассылается письмо».

Сегодня история обрела логичное продолжение.

«Помнишь привязку, удаляющую шару с фильмами при входе директора? Так шеф третий день болтается, как цветок в проруби, и зачем-то вламывается на этаж после пяти, а по первоначальному замыслу шара создаётся по расписанию как раз в пять. Последние два дня ухитрялся отметиться в 17:01! Волевым решением скрипт теперь науськан поднимать шару при выходе директора с этажа».

Не обижайте инженерский состав.

5461

Он живой и светится

15 февраля 2011, 12:45

Ходил к друзьям на днюху их сынишки — два годика парню стукнуло. Малой сидит на диване. Кладу сумку с ноутом рядом с диваном, дарю пингвина плюшевого. Малыш рассматривает пингвина, откладывает в сторону и тянется к моей сумке. Убираю в сторону — плачет.

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

Именинник, рассмотрев ноут со всех сторон, аккуратно его открывает, тыкает в клавиши, так же аккуратно закрывает, кладёт рядом и засыпает, положив одну ручку на крышку ноута. Я был настолько шокирован, что не сообразил эту сцену сфоткать. Может, мне уже пора своих детишек заводить?

5460

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

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

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

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

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

a := Canvas.Pixels[n-10,k-10];
if TColor(a) = clRed then begin otvet := … end else otvet := …

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

Я понимаю, человек был далёк от программирования и писал только чтобы сдать лабу, но такого «изобретательного» подхода, признаться, ранее я не встречал никогда.

5459

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

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

$ 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>

5458

Быстро, дёшево увеличьте на три дюйма

15 февраля 2011, 11:00

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

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

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

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

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

5457

Бубенная дробь

15 февраля 2011, 09:00

Пришлось как-то в первый раз принести в офис личный ноутбук. Пришёл, воткнулся в розетку, включаю. Подходит ко мне весёлый менеджер по продажам. Разговариваем о чём-то, и тут он видит на экране моего ноута, как загружается Убунту.

— О! А что это у тебя за винда?
— Это у вас, юзверей, везде винда, а у нас…

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

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

5456

Быдлокод животворящий

Знаете, до чего быдлокод животворящий доводит? Сейчас расскажу.

Была у меня в босоногом детстве моделька нормального автомобиля в масштабе один к полутора — «Жигули» называется. И так я любил этот советский нановелосипед, что страшно рассказать. Уже пересев на нормальную машину, решил я в память о былом написать флеш-игру: смесь текстового квеста и гоночек. Гоняться надо было на продукции ВАЗ. Игра была сугубо для меня и моих друзей, поэтому авторскими правами и рекламой я не заморачивался, а просто писал в своё удовольствие. Чтобы в игре была хоть какая-то фича, решил я хорошо реализовать физику работы движка и КПП. Естественно, без быдлокода и костылей не обходилось.

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

Вскоре вдохновение кончилось, и я решил обратиться к истокам. Долго ли, коротко ли, откопал я гараж со своими «Жигулями». Без проблем завёл и поехал кататься. На втором круге по гаражному кооперативу заметил, что стрелка термометра лежит в красной зоне. Отложив на сиденье несколько кирпичей, бросился под капот — а мотор холодный. Решил, что неправильно обрабатывается работа датчика температуры. Ничего, ноут у меня всегда рядом. Включил, запустил — так и есть, один из режимов работы двигателя обрабатывается неправильно. Исправил, протестил — всё работает. Ноут пискнул батарейкой и отрубился. Только увидев чёрный экран монитора, я вспомнил, что глючила не игра, а вполне реальный ВАЗ 2107. Полез под капот, но там всё было в порядке. В задумчивости сел, завёл, поехал — двигатель и приборы работали как часы. Ловко я через астральные ActionScript-каналы отремонтировал железного друга!

5455

Problem, officer?

14 февраля 2011, 16:45

Случалось мне тут настраивать девушке вайфай, который должен был течь с компьютера через PCI-карточку на недобук. Провозился я долго и наделал много грязи — я этих ваших виндузов сто лет не видел и не хочу больше. И не надо тут кричать, что я админ однобокий — я фотограф.

Началось всё с того, что стандартными средствами «семёрочки» поднять удалось лишь незащищённую сеть, которая не хотела отдавать интернет. Далее пошли драйвера производителя, танцы с бубном, менюшки, которые должны выпадать, но не желают, и всё прочее. Проблема одна: интернет есть только первые секунд 30, а потом ПК прекращает делиться. Убит был не один вечер.

На третий вечер я заметил средство диагностики Windows. Дай, думаю, загляну. Красивый мастер, быстрый опрос и все дела. Нажимаю на последнее «далее» и получаю: «Все ваши проблемы решены!» Что же, очень мило, но давай проверим, что же изменилось. Что? А где сетевое соединение, которое я безжалостно сношаю последние пару дней? Его нет. И ведь правда: все проблемы решены.

5454

Морзе сближает

14 февраля 2011, 16:45

— Алло, здравствуйте, у меня проблема с компьютером.
— Да, здравствуйте, какая именно?
— Не включается.
— Понятно. Лампочками мигает? Звуки издаёт? На экране что-нибудь есть?
— Мигает, пищит. Но на экране ничего нет.
— А как пищит?
— Так: «пип-пип».
— Простите, а вы, м-м-м, вы не могли бы дать ему трубочку?
— Секунду.

Возня, щелчок. Один короткий, один длинный.

— Ага, спасибо. Диктуйте адрес, выезжаю.