29980   Нравится :) 0 Не нравится :(    Добавлено: 22.09.09 13:40
Повезло: в школе мы не изучали, как сделать текст в «ворде» пожирнее, а занимались настоящим программированием. С 10 класса мы решали простые задачки на Паскале для понимания общих принципов написания кода. Был у нас в классе один парень — не самый глупый, но с программированием у него явно не ладилось. Предложили нам однажды в качестве самостоятельной работы посчитать сумму цифр во вводимом числе. Все только сели организовывать циклы и вспоминать, как выделяется целая часть, как этот самый парень заявляет: «У меня все готово!» Все в шоке, включая учительницу — он никогда не блистал, а все остальные еще и половины работы не сделали. Пошли к нему смотреть код.

Оказалось, он воспользовался истинно программистским подходом — его программа предлагала пользователю ввести первую цифру числа, потом вторую и так далее, сохраняя каждый разряд в отдельную переменную. Неудивительно, что с суммированием проблем у него не было совсем!
14961   Нравится :) 0 Не нравится :(    Добавлено: 21.06.09 14:40
Занимался я пару лет назад поддержкой одной CMS, написанной на PHP в течении лет 4-5 несколькими сменявшими один другого программистами.

CMS платная, исходники сначала никому не давали. А потом в один прекрасный момент гендиректор почему-то стал относиться к раздаче исходников совершенно спокойно. "С энкодером проблемы? Высылай как есть, ничего страшного". На мой вопрос о том, что случилось, ответом было имя одного файла и предложение заглянуть.

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

// TODO: фигня какая-то написана
$respondent = $respondent;
global $preLoad
14544   Нравится :) 0 Не нравится :(    Добавлено: 19.06.09 04:40
Работаю веб-программером — делаем разнообразные сайтики и интернет-магазины. Очередной клиент попросил, чтобы к сайту была прикручена статистика от Google. Я прикрутил, а до кучи поставил сайт в очередь на индексирование.

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

Прошло некоторое время. В аську стучится админ сервера компании-заказчика: «Твой проект грузит на 103% процессор MySQL-сервера!»

Где-то час выясняли, что не так, и только потом сообразили посмотреть в логи. Выяснилось, что умный Google-бот без проблем отыскал поисковую страницу сайта и стал рекур
13338   Нравится :) 0 Не нравится :(    Добавлено: 12.06.09 02:40
Копаясь в глубинах скрипта, написанного неизвестными кодерами
для имитации нажатий с клавиатуры, наткнулся на гениальный код:

integer i
while (i!=1)
Desktop.Typekeys("<Down>")
i--
if i==12
Desktop.TypeKeys("<#Plus>")

Так сказать, перестраховался человек... А вдруг когда-нибудь да станет i равно 12?
11456   Нравится :) 0 Не нравится :(    Добавлено: 26.05.09 21:40
Делали мы как-то в институте модель какого-то мирка, по которому бродят дикие звери и удовлетворяют свои потребности: едят, пьют, спят, размножаются. В общем, кривенькая такая моделька, но зачем-то она нам понравилась.

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

До нас дошло, что надо делать механизм обхода динамического препятствия, поскольку наша модель данных была построена так, что на одной клетке два существа поместиться не могли. Ходы они делали тоже
11276   Нравится :) 0 Не нравится :(    Добавлено: 25.05.09 19:40
Как-то раз писал свой собственный фрэймворк на PHP. Разработал архитектуру. Запрограммировал основные компоненты. Все протестировал - работает замечательно. И тут, значит, приходит заказ - написать CMS для простенького сайта. Решил поднять на этом самом фрэймворке. Все было замечательно, но в одном месте потребовалось обратиться на самый низкий уровень за значением, в результате чего родилась вот такая, поражающая своей информативностью, строчка кода:

$result = $cur_obj->values->value->value->get_value();

Помедитировал. Покурил. Выпил чашечку кофе. Еще раз помедитировал и покурил. Но не нашел ничего умнее, как модифицировать это следующим образом:

$result = $cur_obj->values->value->value->get_value(); // ЫЫЫЫЫ!!! =8]

Так и сдал, заказчику.
Если кто будет поддерживать сайт и встретит это творение, знай брат, я не специально...
10574   Нравится :) 0 Не нравится :(    Добавлено: 21.05.09 13:40
В процессе работы над проектом на С# нарвался на следующее:
DateSelect.Value = (DateTime.Now.Month.ToString().Length > 1 ? DateTime.Now.Month.ToString() : "0" + DateTime.Now.Month) + "/" + (DateTime.Now.Day.ToString().Length > 1 ? DateTime.Now.Day.ToString() : "0" + DateTime.Now.Day) + "/" + DateTime.Now.Year.ToString().Remove(0, 2);

До сих пор не понял, чем этому человеку не понравилось
DateSelect.Value = DateTime.Now.ToString("MM/dd/yy");
8670   Нравится :) 0 Не нравится :(    Добавлено: 09.05.09 23:40
#482 навеяло...

Некоторая конторка подвизалась для одного из округов большого города сваять систему расчета коммунальных услуг населению. Умолчим про то, что она была написана на MS Visual Basic for Applications., а потому требовала на машинах Клиентов в обязательном порядке MS Office. Сама база лежала на MS SQL, клиенты цеплялись к базе напрямую. И как-то в том округе сложилось, что сервер был несколько слабее рабочих станций, и потому были написаны гениальные перлы. Загружаем, например, все на рабочую машину в память (SELECT * FROM) - потом считаем. Распечатать квитанции за месяц - да пожалуйста, тем же SELECT * FROM надергали из массива в шаблон отчета - печатайте!

Все это не смотря ни на что прекрасно работало с парой-другой тысяч клиентов и понравилось какому то чиновнику из области и стал он продвигать это на места в г
7346   Нравится :) 0 Не нравится :(    Добавлено: 01.05.09 22:40
В свое время был начальником отдела разработок в студии %studioname%. Делали браузерные игры. Дано: вероятность попадания в противника из лука (в процентах). Написать: скрипт, который бы выдавал — было ли попадание или нет.

Как в таких случаях действует обычный Coder Sapiens, если нет особых требований? Генерит случайное число от нуля до ста и проверяет, меньше оно вероятности или нет.

Но один эксцентричный паренек пошел другим путем. Одним циклом for он создал массив из десяти тысяч нулевых элементов (так как проценты с сотыми долями), вторым циклом он заменил первые надцать (т. е. процентов без точки) элементов единицами. Потом скормил массив шаффлу и взял первый элемент массива.
6798   Нравится :) 0 Не нравится :(    Добавлено: 28.04.09 14:40
В процессе портирования некой программы с Visual Basic, нашел гениальную альтернативу оператору !

Select Case bln_Сменить_направление_вращения
Case True
bln_Сменить_направление_вращения = False
Case False
bln_Сменить_направление_вращения = True
End Select
4463   Нравится :) 0 Не нравится :(    Добавлено: 13.04.09 18:40
/** The Constant NUMBER_3. */
public static final int NUMBER_3 = 3;
/** The Constant NUMBER_4. */
public static final int NUMBER_4 = 4;
/** The Constant NUMBER_5. */
public static final int NUMBER_5 = 5;
/** The Constant NUMBER_6. */
public static final int NUMBER_6 = 6;
/** The Constant NUMBER_6. */
public static final int NUMBER_7 = 7;

Насяльника обещала всех уволитьма за это...
2911   Нравится :) 0 Не нравится :(    Добавлено: 04.04.09 09:40
Работал над одним проектом, который до меня делали другие. Проект достаточно большой, и одна из его частей считывает некоторые данные с базы. Есть возможность регулировать дату от и до при считывании. Возникла проблема, из-за которой клиент очень ругался. Если промежуток от и до очень большой, к примеру кто-то захочет считать данные за несколько лет, то скрипт работает нереально медленно, а иногда даже выдаёт таймаут.

Бились над проблемой 3 дня, перелопатили кучу кода, даже нашли некоторые другие баги, которые не имели отношения к проблеме. В итоге наткнулся на кусок кода в том месте, где искать никто просто не додумался:

$res = $DB->getData($query); //считывает данные с ДБ и загоняет в пронумерованный массив
$data = new array();
foreach ($res as $key=>$value)
{
if (!$data[$key])
$data[$key] = $value;
};

Все это вместо простого $data = $res;
Что имел ввиду кодер, родивший это чудо, так и осталось загадкой.
2360   Нравится :) 0 Не нравится :(    Добавлено: 01.04.09 01:40
...Ты знаешь про время жизни объекта? Так вот.

Из метода передавался в объект ( который работает в ДРУГОМ потоке ) адрес локальной переменной. Представляешь, что случается, когда метод завершает работу?

Правильно, локальная переменная уничтожается. Адрес становится инвалидным. А так как объект, в который передается этот адрес - работает в другом потоке, то это вполне реальная проблема.
Я на это долго медитирую... И иду спрашивать, как это работает? Ведь ясно же, что это ошибка.

На что мне автор говорит: ставлю у потока более высокий приоритет и благодаря этому объект УСПЕВАЕТ вычитать содержимое переменной.

А ты говоришь - "Архитектура"... "Планирование"...
Индусам до нас далеко.
Чисто по-русски. Успеть хапнуть, пока не пришел писец...
2134   Нравится :) 0 Не нравится :(    Добавлено: 30.03.09 16:40
Разбираю код, встречаю строчку:

if (isset($rssRow)) unset($rssRow);

Читаю код дальше.
Четыре строчки, в которых работа с $rssRow не ведется, опять:

if (isset($rssRow)) unset($rssRow);

Это называется "Да умри же ты!!!"?
941   Нравится :) 0 Не нравится :(    Добавлено: 23.03.09 13:40
Был у нас в универе один вредный препод. Не любили его, так как предмет свой он преподавал просто отвратно. И вот однажды надо было сдать ему на зачет какую-то программу. Мой друг написал ее. Сдал. Со второго раза получил допуск к экзамену. Мне стало интересно. Запускаю - работает. Обрадованный беру код, смотрю. Спустя пару секунд падаю под стол от такой строчки:

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

- Что это? - спрашиваю.
- Инициализация - отвечает мне друг.
Да, конечно, инициализация. Прогрев памяти перед работой...
Загадка - как препод пропустил все это? Наверное, код не открывал даже. Работает, и ладно.