Истории с тегом: программизмы

Всего историй: 900

179

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

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

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

Читаю код дальше.

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

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

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

177

Не признали

Дело было в конторе, занимающейся разработкой программного обеспечения.

В здание, в котором контора обреталась, въехали недавно, технику поставили хорошую, топовые десктопы да ноутбуки, а серверную сделать не успели, да и сервера сами закуплены еще не были.

И вот по закону подлости в Ночь Перед Сдачей проекта контору обворовывают. Подчистую.

Проект сдали.

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

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

Валяющимся под столом мятым пожелтевшим системником воры побрезговали.

175

Хостинг купиль, надо программисти!

Объявление на фрилансерском сайте:

Заголовок: Надо вы мне

Текст: Мне в команду надо люди Веб-программисти 1 человек Версталщики 1 человек Флешер 1 Человек Я сам веб дизайнер Хочу сделать команду Купиль хостинг...

И здесь гастарбайтеры.

173

Меню, постой, не уходи!

Вот вы говорите, циклы забыли закрыть, и монстры убитые поползли за вами. А с нами такой случай был. Работали над русской компьютерной игрой, навроде Аллодов. Занимались компьютерным интеллектом на тот момент.

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

Так вот, в какой то момент, эта плита вдруг несколько раз покачнулась, и неуклюжими движениями рванула к костру. Потом обошла вокруг него, и пошла в глубь острова.

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

Вот она и пошла. Патрулировать.

172

Исправление

Начинала работать web-программистом в компании, где был свой собственный движок сайта. Понадобилось мне на сайте файл подправить. Исправила, захотела скопировать и в это время пропал интернет. Будучи уверенной, что через 20 мин все заработает, я решила со спокойной душой отправиться домой.

Утром прихожу, влетает начальник. Большой и злой.

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

И только позже (до сих пор не знаю как) выяснилось, что "пропал интернет" - это означает, что у клиента не открывалась страничка их сайта. Поскольку я при копировании затерла файл движка.

Пришлось изображать кота из второй части Шрека.

170

Победа или смерть!

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

{Дальше идет особая магия!}

procedure fbHalfCountClick(Sender: TObject); //Считать методом половинного деления

procedure fbSerialCountClick(Sender: TObject); //Считать методом последовательных приближений

procedure fbNewtonCountClick(Sender: TObject); //Считать меня коммунистом

169

С точностью до миллиметра!

Только что закончил правку javascript-файла. Делал это "по-быстренькому", то есть прямо на сервере. Правил редактором mcedit (он умеет работать с файлами по ftp). Часа через 3 добился нужного результата. Пора возвращать файл на историческую родину, то есть на локальную машину.

Жму F5 в mc (в одной панели - локальный каталог, в другой - ftp). Вылезает вопрос "Заменить файл ${FILENAME} размером 3096 на файл размером 3096?". Это что же такое? Правил, правил и где результат? Даты, правда, отличаются, и все-таки стало как-то неуютно. Стал проверять, выяснилось, что действительно, после нескольких часов правки, многочисленных убавлений и добавлений размер файла стал таким же, как до ее начала с точностью до байта.

157

Распознавание образов

Велик и могуч Русский Язык!

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

Будь это какой-нибудь английский - задача решается в два счета.

Но ведь у нас как всегда все иначе, у нас есть падежи, склонения, спряжения, окончания, рода, а поэтому простое слово "трансклюкатор" может иметь множество форм, включая "трансклюкаторное оборудование".

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

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

Стало легче, но все равно работы много.

Подумалось: а откуда Я знаю, как правильно? Видел-читал-запомнил, так?

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

Осталось только слов побольше туда набить. Посадил ЭТО на сервер, читать книги из библиотеки Мошкова. Пусть набирается ума-разума.

Чувствую, следующим шагом научу его пользоваться Гуглом...

156

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

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

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

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

// TODO: фигня какая-то написана

$respondent = $respondent;

global $preLoadExternals;

$preLoadExternals = .....;

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

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

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

148

Брутальный оскал декора

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

Написал, и не удержался, чтобы не встроить туда "пасхальное яйцо". К сожалению, вызывалось оно не очень сложным образом - [Ctrl]+[клик-куда-то].

По этой нехитрой комбинации в окошечке начинал крутиться куб, на грани которого была нанесена моя брутальная морда - я тогда любил стричься налысо и вид имел устрашающий. Еще в черно-белом. С цианистым таким оттенком.

Так в тираж и запустили.

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

Сказали клиенту, что уже продали. Мол, один экземпляр был. Расстроился, бедняга.