bash.im ithappens.me zadolba.li

Программизмы

77

Это было бы слишком просто

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

Я: Ты забыл $num передать.
Товарищ: Может мне через fopen все сделать?
Я: Можно, конечно. Но лучше все-таки $num передать.
Товарищ: Ну, можно и так, да...

76

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

...После чего долго медитирую на фрагмент:

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

Шутки шутками, а в SharePoint некоторым контролам действительно нужно напоминать их значения, иначе они обнуляются. В результате появляются подобные строчки:

dtc1.SelectedDate = dtc1.SelectedDate; // так надо :(
dtc2.SelectedDate = dtc2.SelectedDate; // не трогать, сломаю руку
dtc3.SelectedDate = dtc3.SelectedDate; // по другому работает некорректно
dtc4.SelectedDate = dtc4.SelectedDate; // обожаю SharePoint

65

Главное - выдержка.

В нашем баг-треккере занесено 39.998 багов.
Сейчас все двенадцать человек сидят и ждут, когда кто-нибудь запостит один баг, чтобы потом внести свой, 40.000-й.
Работа стоит.

59

Все течет, все меняется...

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

Спустя какое-то время моему другу понадобилось написать маленькую демку за один день. Утром он попросил меня придумать с десяток спрайтов и вечером ему принести, пока он, чтобы не терять время, скопирует куски кода из нашей второй по счёту игры (скроллинг-аркада, наподопие Zynapse, с момента её выпуска прошло где-то года полтора).

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

Ну что ж. Прошло полтора года, взгляды на программирование немного поменялись.

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;
...

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

44

...И мертвые ползли за ним...

Писал некоторое время назад игру-платформер, делал передвижение и атаку у противников.

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

Останавливаю дебаг, проверяю каждую строчку ИИ врагов, там стоит switch и кейсы по состояниям. Жив, мертв, охотиться и прочее. Все проверил - все верно, запускаю, убиваю - мертвые опять ползут за мной!

Сидел, нервно курил.
Пил кофе почти до утра.
Отоспался, открыл код заново. Долго и вдумчиво ругался - break'и в кейсах забыл поставить...

27

О истинных причинах мирового кризиса

Приятель недавно жаловался, что его чуть с работы не поперли.

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

- Сижу я на совещании, слушаю представителя заказчика. Представитель говорит много, громко и в основном чушь.
Я ему спокойно объясняю, что так делать нельзя, что вот это работать не будет, и так далее. А он мне: "Да вы представляете, с кем говорите?! Мы - Федеральный Резерв! Мы можем делать все, что захотим!"
И я не нашел ничего лучше, чем сказать, что я это уже заметил...

9

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

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

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

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

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

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