1716   Нравится :) 0 Не нравится :(    Добавлено: 28.03.09 03:40
Разрабатываем одну большую корпоративную систему - огромная база данных, большие нагрузки на сервера ну и веб-интерфейс, куда ж без него. Интерфейс этот пишется с использованием одной библиотечки, которая в свою очередь вовсю использует AJAX. Библиотека open-source, но как-то раз преподнесла совершенно неожиданный сюрприз.

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

/**
* @return
* @see #getPage()
* @deprecated
*/
public int getPageIndex() {
return getPageIndex();
}

Вот оказывается как надо объявлять метод устаревшим, чтобы его впредь больше никогда не использовали!
1468   Нравится :) 0 Не нравится :(    Добавлено: 26.03.09 15:40
Лет с десяток назад или даже больше, в общаге, куда я частенько хаживал в гости, студенты как-то заспорили, кому сегодня выносить мусор. Один утверждал, мол, ну и что, что моя очередь, я в прошлый раз выносил вот за этого редиску, так что пусть сегодня он за меня выносит. На что тот другой отвечал, что сегодня ему совсем лениво, он лучше потом, и вообще, относительно сроков возвращения долга не договаривались. В общем (оба - будущие программисты) решили написать программку-генератор.

Первый писал её на Паскале, второй проверял. Запустили. Программка (под DOS ещё в те времена) писала быстро-быстро фамилии обоих попеременно, пока не будет нажата any key. Мусор идёт выносить тот, чья фамилия окажется последней. Any key жал я, как незаинтересованное лицо.
Ясное дело, что мусор пошёл выносить тот, что проверял, а не тот, кто писал.
941   Нравится :) 0 Не нравится :(    Добавлено: 23.03.09 13:40
Был у нас в универе один вредный препод. Не любили его, так как предмет свой он преподавал просто отвратно. И вот однажды надо было сдать ему на зачет какую-то программу. Мой друг написал ее. Сдал. Со второго раза получил допуск к экзамену. Мне стало интересно. Запускаю - работает. Обрадованный беру код, смотрю. Спустя пару секунд падаю под стол от такой строчки:

for (int i=0; i<N; i++) M[i]=M[i]+0;

- Что это? - спрашиваю.
- Инициализация - отвечает мне друг.
Да, конечно, инициализация. Прогрев памяти перед работой...
Загадка - как препод пропустил все это? Наверное, код не открывал даже. Работает, и ладно.
935   Нравится :) 0 Не нравится :(    Добавлено: 23.03.09 12:40
Индийский код, индийский код.
Иногда бывает так заработаешься, что любому индусу фору дашь. Безо всякого злого умысла.

Модуль. Переписанный уже, наверное, раз двадцать, причем разными людьми.
Заказчик выставляет новые требования. Лезу внутрь, переписывать куски в двадцать первый раз.
После чего долго медитирую на фрагмент:

...
a=a;
b=b;
...

Видимо это было напоминание программе, чтобы точно не забыла...
655   Нравится :) 0 Не нравится :(    Добавлено: 22.03.09 09:45
В нашей конторе как-то думали над методами запутывания кода, при сохранении его в открытом виде.

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

То есть $attempt_no = $___, $email = $____, $login = $_____, $pass = $______, crypt() = ____() и так далее.

Представляешь себе код?

if ($____) $_____ = ____($_____);
$_______++; $____ = '';
return $_____;

Сиди и читай, если так хочется.
506   Нравится :) 0 Не нравится :(    Добавлено: 22.03.09 05:55
Приятель недавно жаловался, что его чуть с работы не поперли.

Он - высококлассный программист в Штатах и его компания пишет ПО для банков.
Рассказывает:

- Сижу я на совещании, слушаю представителя заказчика. Представитель говорит много, громко и в основном чушь.
Я ему спокойно объясняю, что так делать нельзя, что вот это работать не будет, и так далее. А он мне: "Да вы представляете, с кем говорите?! Мы - Федеральный Резерв! Мы можем делать все, что захотим!"
И я не нашел ничего лучше, чем сказать, что я это уже заметил...
288   Нравится :) 0 Не нравится :(    Добавлено: 22.03.09 04:40
Как то раз, в последний день месяца, нашего директора посетила мысль. И так она ему понравилась, что он решил немедленно воплотить ее в жизнь, а именно - дал мне задание написать скрипт, рассылающий по email всем нашим клиентам статистику работы за прошедший месяц. Так как дело было в конце рабочего дня, то я слепил скрипт за несколько минут, особо не заморачиваясь на "придание товарного вида".

Скрипт получился очень простой, поскольку статистика по каждому клиенту динамически формировалась в отдельную директорию в файлы с именами , соответствующие учетным записям электронной почты пользователей.

Получилось что-то вроде следующего (на shell):

for i in `ls /billing`
do
echo "Статистика работы в интернет за май 1998г." > shapka.tmp
cat /billing/$i >> shapka.tmp
cat shapka.tmp | m
170   Нравится :) 0 Не нравится :(    Добавлено: 22.03.09 01:57
Разрабатываем биллинг.

Тестировал создание клиентов из внешней оболочки приложения, чем очень шокировал наших операторов. Среди Ивановых, Петровых и Сидоровых клиент "Создание Извне" смотрелся действительно слегка необычно.