bash.im ithappens.me zadolba.li

Индийский код

265

Изобретатель велосипедов - 2

В процессе работы над проектом на С# нарвался на следующее:
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");

249

Ну а вдруг?

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

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

Так сказать, перестраховался человек... А вдруг когда-нибудь да станет i равно 12?

207

Это было неописуемо!

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

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

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

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

Так и сдал, заказчику.
Если кто будет поддерживать сайт и встретит это творение, знай брат, я не специально...

205

Альтернатива

В процессе портирования некой программы с Visual Basic, нашел гениальную альтернативу оператору !

Select Case bln_Сменить_направление_вращения
Case True
bln_Сменить_направление_вращения = False
Case False
bln_Сменить_направление_вращения = True
End Select

179

Ненависть к переменной

Разбираю код, встречаю строчку:

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

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

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

Это называется "Да умри же ты!!!"?

156

Порождение изначального хаоса

Занимался я пару лет назад поддержкой одной CMS, написанной на PHP в течении лет 4-5 несколькими сменявшими один другого программистами.

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

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

// TODO: фигня какая-то написана
$respondent = $respondent;
global $preLoadExternals;
$preLoadExternals = .....;

Комментарий имеет логический смысл. Первая строка - чтоб точно запомнил, да. Вторая - оно и так исполнялось только в global scope. Третья - строка длиной в пару килобайт с несколькими закрывающимися скобками в конце, после чего $preLoadExternals далее в скрипте нигде не используется.

И такой фигни на три тысячи строк

Да, действительно. Стоит ли бояться, что исходники попадут в чужие руки, если сами разобраться не можем.

58

Javшутинг

/** 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;

Насяльника обещала всех уволитьма за это...

54

Программа, не забудь!

Индийский код, индийский код.
Иногда бывает так заработаешься, что любому индусу фору дашь. Безо всякого злого умысла.

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

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

Видимо это было напоминание программе, чтобы точно не забыла...

9

Особенности национального многопоточного программирования

...Ты знаешь про время жизни объекта? Так вот.

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

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

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

А ты говоришь - "Архитектура"... "Планирование"...
Индусам до нас далеко.
Чисто по-русски. Успеть хапнуть, пока не пришел писец...