[bash.org.ru] [IT Happens] [zadolba.li]

IT Happens

Клиент и саппорт. Разработчик и заказчик. Программист и программа. Вести с фронтов.
595857• • •987654321

#809: Дежавю

23 апреля 2009, 09:00

рейтинг: 1185

Занимаюсь фрилансом — разрабатываю всевозможные мелкие программы для автоматизации процессов.

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

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

Отсылаемые архивы я не пронумеровывал, и клиент по невнимательности запускал старый скрипт — назывались-то файлы так же.

Даже если программа никогда не уйдет в публичный доступ и пишется исключительно под одного человека, всегда нумеруйте версии!

 

#797: Алло, Самсунг? Немедленно уберите Ксюшу с экрана!

18 апреля 2009, 11:00

рейтинг: 1974

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

— Ваша программа не работает!
— Окей, давайте разбираться. Какая ошибка? Что пишет?
— Ничего не пишет! Мы компьютер включаем, а экран чёрный и процессор пищит все время!

(Десятисекундные раздумья).

— Так у вас железо не работает! При чём тут программа?
— Мы же компьютер включаем, чтобы вашу программу запустить!

 

#728: Гауди-младший

2 апреля 2009, 09:00

рейтинг: 2812

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

Как-то раз субботним утром бредёт мой друг на кухню испить водицы «после вчерашнего» и проходит мимо детской. Открывает дверь — за компом сидит его дочь четырёх с половиной лет от роду и чертит в Автокаде. Разные мысли пронеслись в его голове — доминировала, конечно же, «пить надо меньше»...

Расследование показало: ещё до того, как компьютер стал детским, жена задумала освоить Автокад и скачала самоучитель. Потом желание пропало, а программа осталась.

Дочка же, увидев интересный значок на рабочем столе, щёлкнула по нему. Читать она ещё не умеет, но говорящий самоучитель подсказал: «Чтобы провести линию — нажмите здесь». Мигающая рамочка вокруг нужной кнопки окончательно убедила дочку — к тому моменту, как папа проснулся, был уже готов немаленький «чертёж».

 

#701: Конфиг в фа-диезе

26 марта 2009, 09:00

рейтинг: 1259

У нашей конторы есть небольшие (машин на двадцать) представительства в разных городах, и там, естественно, нужно поддерживать и обслуживать IT-инфраструктуру.

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

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

После непродолжительного анализа я понимаю, что движок не может найти файл с самой базой данных. Естественно, командую ему проверить файл с путями к файлам. Боец рапортует: «Всё тут правильно».

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

В итоге успокоился, перезвонил и поддтвердил его догадки. Эникейщик посмотрел на комментарий в начале конфиг-файла и решил, что так и надо.

 

#699: Чтобы было

26 марта 2009, 09:00

рейтинг: 1981

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

Программа разрабатывалась, по всей видимости, с досовских времен, к виндовому интерфейсу была адаптирована, но распространялась и устанавливалась без инсталляторов и серийных номеров — простым копированием папки с файлами. За соблюдением условий лицензионного соглашения следил специальный локальный сервер: если количество рабочих станций с запущенной программой превышало лимит, прописанный в файле лицензии, «лишних» пользователей из программы выкидывало.

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

Для начала Федя (наш самый компьютерно грамотный инженер) взял hex-редактор, открыл файл лицензии и попытался увеличить лимит на количество запущенных копий. Сервер запустился, проработал минуту, увидел «лишнюю» рабочую станцию и выкинул меня из программы.

Я предложил поставить на свою машину файрвол, разрешить приём пакетов от сервера, а отправку заблокировать, чтобы сервер эту машину не видел. Сделали. Две другие машины работали нормально, моя потеряла сервер и работать отказалась. Естественно, не будет же сервер посылать пакеты тому, кого сам не видит.

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

В отчаянии Федя заново начал просматривать папку программы в поисках хоть какой-нибудь зацепки и нашел... файл-ключ на 16 рабочих мест, спрятанный в одной из подпапок каким-то запасливым админом.

 

#666: Скучаете? Тогда мы идем к вам!

12 марта 2009, 09:00

рейтинг: 1651

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

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

Когда полезли в код ковырять - удивлению не было прeдела! Мало того, что разработчиком на момент запуска была добавлена непонятно зачем "закладка" вида:
for(i = 0; i < 100000000; i++);
так еще и в момент запуска, инициализировалось "пасхальное яйцо", которое наш товарищ наваял во время обеденного перерыва.

Дальше с его слов: "Ну а чего, если файлов много - скучно же сидеть и ждать! Пусть юзер в тетрис порубится!".
Он-то и сжирал основную часть ресурсов, иногда забывая отрисоваться на экране.

 

#647: AI Интеллектович

5 марта 2009, 20:30

рейтинг: 2624

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

Так вот, при сдаче процедурка где-то забарахлила и потрясенному преподавателю комп расстрелял все корабли хода за полтора - ну, повезло железяке, что попадала часто, бывает! - оставив каждому ровно по одной(!) целой клеточке! А затем, на секунду задумавшись, и, клянусь, злорадно ухмыляясь, бездушная вроде бы железяка одной длинной "очередью" садистки добила всех оставшихся на плаву.
Зачет мне поставили, не задумываясь.

 

#641: Шаг влево, шаг вправо…

4 марта 2009, 09:00

рейтинг: 2128

Дело было давно, когда я только учился программировать. Один баг запомнился особенно. Решил написать игру в шашки. Ну, сделал поле, расставил шашки, объяснил компу основные правила – куда ходить, как есть, как ходить нельзя и т.д. Мой ход, ход компа – и на цикл.

Стал тестировать – играть. Сначала, вроде, всё нормально: комп примитивно играет, но правильно. Вдруг замечаю, что шашек компа становится всё меньше (я столько не съедаю). Задумался… А, хрень какая-то, играем дальше. Через несколько ходов мои шашки стали тоже исчезать, причём в тылу, а на их месте стали появляться шашки компа! Ничего не понятно!. Несколько прогонов – то же самое.

Когда разобрался, выяснил: так как компу было прописано «ходить вперёд на соседнее свободное место» (по правилам шашек), то он просто уходил за край доски – там же препятствий нет! У меня прорисовывалось только поле шашек 8х8, а его шашки уходили на 0-й, 9-й, 10-й столбец массива. Потом коварно, из невидимости, у меня в тылу ел мои шашки по всем правилам «если рядом наискосок вражеская шашка, и за ней – пусто, то надо есть».
Исправил сей баг по-русски: чтобы не писать везде в коде ограничения по координатам, просто расширил массив (-2 to 11)х(-2 to 11) и все неотображаемые клетки вокруг игрового поля забил тройным рядом своих шашек. Теперь шашки компа за край не совались – занято!

 

#639: Тотальное невезение

4 марта 2009, 09:00

рейтинг: 2229

На первом курсе иститута нам с другом очень нравились инженерные калькуляторы. Было приятно, что не нужно таскать с собой таблицу Брадиса, считать факториал в уме… А среди прочих функций калькулятора есть возможность генерации случайных чисел в диапазоне от 0 до 1.

Довольно быстро родилась игра под громким названием «Random Toutnament», по аналогии с «Unreal Tournament», естественно. Правила были простыми: у кого сгенерится число большее, чем у соперника, тот и побеждает. Друг шутил тогда, мол, спорим, будет 50/50 побед/поражений? Как он ошибался… Вскоре родилась идея перевести эту игру в программу на Си, я довольно быстро написал ее и отдал другу на тестирование. Любит он ошибки в моем коде находить, поэтому я отдал сразу экзешник. Спустя 5 минут слышен стук в аську:

— Что ты написал? Все время выигрывает первый игрок!

Некоторое время ушло на проверку кода и осознание того, что ошибиться в общем-то было негде. Проверяю — все работает. Переставляю переключатель режима сборки на «Release» и снова отдаю экзешник. 5 минут…

— Все равно постоянно выигрывает первый, — констатирует друг.

Злюсь, проверяю — все отлично! Запаковываю код в архив и шлю. Брожу по комнате в поисках учебника по теории вероятностей.

10 минут… Гора восклицательных знаков в качестве сообщения, затем статус друга меняется на «Не в сети». На следующий день мы встретились в институте. На друга было страшно смотреть. Он все время ассоциировал себя со вторым игроком и все время проигрывал. Потом, отчаявшись, поставил на первого и опять проиграл. 20 проигрышей подряд.

По теории вероятностей такое может произойти с вероятностью… 0,5 в 21 степени. В следующий миллиард миллиардов лет другу будет постоянно везти.

 
595857• • •987654321
 
текст или номер истории
реклама
обратная связь
Хотите разместить рекламу?
Информация для рекламодателей.

Вопросы, предложения, что-то не так на сайте? Пишите в саппорт!
на сайте
Утверждено: 8399
Сегодня: 5
В рассмотрении: 2006
тэги
лучшие последних семи дней
статистика
Рейтинг@Mail.ru