Страница 9 из 19
#1139: Точка с запятой, дефис, закрывающая скобка
20:45 08.08.2009, IT happens
Работаю программистом. В нашей организации установлена большая информационная система, внутри которой запускается куча разных задач. Как-то звонят мне с объекта — мол, не работает на моей задаче фильтр по подразделениям. Пользователю видны все подразделения, что идеологически неправильно, да и просто неудобно. Спрашиваю:
— Коды подразделений введены правильно?
— Правильно, правильно!
— Через точку с запятой?
— Конечно! Как вы нам говорили, так и сделали.
Делать нечего, лезу в удалёнку, открываю параметры задачи. Вместо «;» между кодами стоят «.,».
#1140: Большой шум принтера LPT
00:30 09.08.2009, IT happens
Решил из нескольких списанных Epson LX-800 собрать себе домой на новый год матричник. Сижу, ковыряюсь, перебирая полуубитые головы, барабаны и протяжки. Собрал, агрегат даже заработал. Гоняю «лист Малевича» — страницу, залитую чёрным.
На стрекот заходит удивленый напарник: «А что за музыка у тебя только что была?» Начинаю ржать, он не понимает и продолжает: «Понимаешь, только последний акорд услышал — столько вспоминаний полезло! Кто играет?»
Обьяснил. Слушаем уже четвёртый лист.
#1141: Ломать — не строить
13:00 09.08.2009, IT happens
Мои родители занимаются видеомонтажом в Adobe Premiere и Adobe After Effects. Контора, на которую они работают, подарила им лицензионный пакет этих программ. Все как положено — красивая коробка, серийный номер, защита и так далее. Всё было хорошо до тех пор, пока софт не полез обновляться в интернет и при запуске потребовал повторной активации.
Казалось бы, все просто: телефон для России указан, нужно только продиктовать серийный номер, код активации и получить код авторизации. Но мама у меня, хоть и продвинута в компьютерах, жутко консервативна и всего нового боится. Естественно, кроме лицензионного пакета от Adobe, всё остальное на компе было пиратским, поэтому папочка Crack была гораздо понятнее для нее, чем звонок в саппорт (да еще и в Москву!) Она бы, наверное, всё-таки позвонила, если бы не папа, который решил облегчить задачу — он нашел в интернете кейген и, не вняв моим предупреждениям, крякнул Premiere, после чего тот отказался запускаться вовсе.
Да, поменять ситуацию будет непросто — русский человек ещё слабо понимает, что делать с лицензионными программами...
#1142: Десять строк хорошего кода заменяют сотню ленивых юзеров
15:00 09.08.2009, IT happens
В 2007 году я разрабатывал небольшую самописную ГИС с картами Москвы для мелкого завода. Бесплатных данных не было, и я кое-как за месяц расковырял одну систему с картами, успешно «спиратив» исходники. Немного позже потребовались геоданные для Московской области. В той программе их не было, зато нашлась другая в виде отсканированного атласа, на который были нанесены векторные метки. Сами данные хранились в каком-то невероятном формате; времени на разбор не было, система была нужна «здесь и сейчас».
Идея пришла моментально. Из-под моих плящущих по клавиатуре пальцев вылетали куски кода:
— отправляющего сообщения вида «нажата кнопка „вправо“», «нажата кнопка „влево“», «нажата кнопка „Page Down“» окну;
— распознающего серые окружности, изображающие города;
— получающего название города из текстового поля;
— двигающего мышь в нужную позицию.
Всё было собрано в программу-потрошитель. Она искала окно «жертвы», переводила карту в левый верхний угол, распознавала города на текущем сдвиге, запоминая их координаты, получала названия и сдвигала экран вправо. Процесс повторялся — если был достигнут край карты, экран опускался вниз.
Запуск невероятно порадовал — по экрану как угорелый скакал курсор мыши, кликал в окружности-города, названия которых сменяли друг друга с невероятной скоростью. Всё моргало и двигалось, производя самое фантастическое впечатление. Через десять минут вся карта была сграблена.
С тех пор я верю: как бы ни была сложна программа, рассчитанная на взаимодействие с человеком, можно написать робота, который решит задачу не хуже.
#1143: Живи играючи
15:00 09.08.2009, IT happens
Я биолог и от математики предельно далёк. Довольно часто мне приходится решать сложные задачи — обычно за меня всё делают умные программы, но иногда нужно что-то посчитать вручную. В этом случае я обращаюсь за помощью к своему другу-программисту, который, несмотря на всю свою занятость, частенько меня выручает, ведь мои задачи не только полезны для «народного хозяйства», но и довольно интересны.
Постучался я как-то ему в аську: «Слушай, есть новое дельце!» Друг заинтересовался и согласился подумать. Даю вводную: есть поле 5х5, в ячейках нужно разместить цифры от единицы до четвёрки При этом единичку можно ставить везде, двойку — только рядом с единицей, тройку так, чтобы рядом с ней были одновременно 1 и 2, а четвёрку в окружении 1, 2 и 3. Цифры нужно расставить так, чтобы общая сумма была максимальной.
«Окей, — говорит друг, — сейчас всё будет!» Через пару минут брутфорса он сообщил, что всё отлично, программа выдала уже пятьдесят миллионов комбинаций, и, если никто не будет отключать машину на ночь, нужный результат мы получим не позднее, чем через два года. Почесав репу, он написал более умную прогу, которая сходу выдала с десяток роскошных результатов. Одна беда: иногда программа ставила цифры куда попало без оглядки на расположенные рядом. Пофиксив баг, друг прислал мне несколько впечатляющих (поначалу) схем расстановки цифр, но не прошло и пяти минут, как мы оба вручную решили задачу более подходящим способом.
Теперь друг взялся за дело всерьёз. Он менял строчку за строчкой, постепенно оптимизируя способы вычислений. Я не без его помощи находил ошибки, одновременно проверяя полученные результаты. Всё это было довольно занятно, и часа через два мы, наконец, с удовлетворением созерцали конечный результат — совершенство численных технологий. Минут через пять он спросил меня:
— Слушай, а на фига тебе всё это надо было? Это расчет конформации каких-то белков?
— Понимаешь, — отвечаю я ему, помедлив, — есть у меня на телефоне игрушка такая...
Хорошо, что дело происходило в аське. Друг еще полгода вспоминал мне об этом — час его работы стоит двадцать баксов...