Дело было в конторе, занимающейся разработкой программного обеспечения.
В здание, в котором контора обреталась, въехали недавно, технику поставили хорошую, топовые десктопы да ноутбуки, а серверную сделать не успели, да и сервера сами закуплены еще не были.
И вот по закону подлости в Ночь Перед Сдачей проекта контору обворовывают. Подчистую.
Проект сдали.
Как? В силу отсутствия серверов, народ пошарил у себя по ящикам и худо-бедно собрал пару кривых да косых машинок, на которые залили пингвинов и объявили серверами. На одном из таких "серверов" и был тот самый проект. Выглядела эта машина, как металлолом. Внутри, в общем-то, тоже не ахти. Надежности от сервера все равно не требовалось никакой, а нагрузки в тестовом режиме еще не планировались.
Так вот. Самый Главный Программист, в день перед этим печальным событием засидевшийся допоздна, доделывая проект, дописал последние строки, залил на "сервер", проверил работу, и вырубил свой десктоп. После чего понял, что у него жутко трещит голова и ударил по кнопке питания так называемого сервера, "ибо нечего ему тут шуметь, без него тошно".
Валяющимся под столом мятым пожелтевшим системником воры побрезговали.
Текст: Мне в команду надо люди Веб-программисти 1 человек Версталщики 1 человек Флешер 1 Человек Я сам веб дизайнер Хочу сделать команду Купиль хостинг...
Вот вы говорите, циклы забыли закрыть, и монстры убитые поползли за вами. А с нами такой случай был. Работали над русской компьютерной игрой, навроде Аллодов. Занимались компьютерным интеллектом на тот момент.
Меню игры представляла собой гигантская каменная плита с высеченными на ней словами, на фоне острова. По сути эта плита стояла на земле. Так вот, в какой то момент, эта плита вдруг несколько раз покачнулась, и неуклюжими движениями рванула к костру. Потом обошла вокруг него, и пошла в глубь острова.
Оказалось, из за какой то ошибки, каменной плите, которая на самом деле была обычным трёхмерным объектом в мире игры, был назначен интеллект одного из бандитов, который должен был патрулировать остров. Вот она и пошла. Патрулировать.
Начинала работать web-программистом в компании, где был свой собственный движок сайта. Понадобилось мне на сайте файл подправить. Исправила, захотела скопировать и в это время пропал интернет. Будучи уверенной, что через 20 мин все заработает, я решила со спокойной душой отправиться домой. Утром прихожу, влетает начальник. Большой и злой.
Накануне вечером ему начали названивать клиенты: "У нас нет интернета!". Он сначала пытался пинговать сервер наш, так как мы обеспечивали интернет некоторым клиентам. Потом приехал, проверил всю сеть, позвонил людям насчет удаленного сервера. А все это время ему продолжали звонить....
И только позже (до сих пор не знаю как) выяснилось, что "пропал интернет" - это означает, что у клиента не открывалась страничка их сайта. Поскольку я при копировании затерла файл движка.
Только что закончил правку javascript-файла. Делал это "по-быстренькому", то есть прямо на сервере. Правил редактором mcedit (он умеет работать с файлами по ftp). Часа через 3 добился нужного результата. Пора возвращать файл на историческую родину, то есть на локальную машину.
Жму F5 в mc (в одной панели - локальный каталог, в другой - ftp). Вылезает вопрос "Заменить файл ${FILENAME} размером 3096 на файл размером 3096?". Это что же такое? Правил, правил и где результат? Даты, правда, отличаются, и все-таки стало как-то неуютно. Стал проверять, выяснилось, что действительно, после нескольких часов правки, многочисленных убавлений и добавлений размер файла стал таким же, как до ее начала с точностью до байта.
А все началось с простой задачи: принять на входе строку, введенную пользователем, и найти информацию в БД по ключевым словам. Будь это какой-нибудь английский - задача решается в два счета.
Но ведь у нас как всегда все иначе, у нас есть падежи, склонения, спряжения, окончания, рода, а поэтому простое слово "трансклюкатор" может иметь множество форм, включая "трансклюкаторное оборудование".
Вспомнив уроки русского языка в школе - набросал табличку с падежами, табличку с окончаниями, и сел заполнять табличку с корнями, подставляя к словам подходящие варианты. Получилось долго и трудно.
Надоело. Написал скрипт, который анализирует слово, сам подбирает подходящие варианты на выбор - остается только выбрать из нескольких. Стало легче, но все равно работы много.
Подумалось: а откуда Я знаю, как правильно? Видел-читал-запомнил, так? Написал скрипт, который вводит слова, подбирает варианты, если вариантов несколько - записывает слово в отдельную табличку. Когда там накопятся несколько форм - выбор вариантов сужается, и так до тех пор. пока непонятых слов не останется.
Осталось только слов побольше туда набить. Посадил ЭТО на сервер, читать книги из библиотеки Мошкова. Пусть набирается ума-разума.
Чувствую, следующим шагом научу его пользоваться Гуглом...
Занимался я пару лет назад поддержкой одной CMS, написанной на PHP в течении лет 4-5 несколькими сменявшими один другого программистами.
CMS платная, исходники сначала никому не давали. А потом в один прекрасный момент гендиректор почему-то стал относиться к раздаче исходников совершенно спокойно. "С энкодером проблемы? Высылай как есть, ничего страшного". На мой вопрос о том, что случилось, ответом было имя одного файла и предложение заглянуть.
Посмотрел. Файл по сути является ядром CMS - принимает данные от пользователя из админской части, хитро распихивает их по куче XML-файлов и просто текстовых файлов, что-то кладет в реляционную базу, предварительно проверив права доступа и так далее. Взгляд останавливается на 4х строках:
// TODO: фигня какая-то написана $respondent = $respondent; global $preLoadExternals; $preLoadExternals = .....;
Комментарий имеет логический смысл. Первая строка - чтоб точно запомнил, да. Вторая - оно и так исполнялось только в global scope. Третья - строка длиной в пару килобайт с несколькими закрывающимися скобками в конце, после чего $preLoadExternals далее в скрипте нигде не используется.
И такой фигни на три тысячи строк
Да, действительно. Стоит ли бояться, что исходники попадут в чужие руки, если сами разобраться не можем.
Одна контора, торговавшая элитной мебелью и декорациями всякими, заказала мне как-то диск презентационный - каталог продукции с описаниями. Каждый товар сопровождался 3D-моделью: в отдельном окошечке должен был весело крутиться и освещаться указанный предмет. Его можно было потягать мышкой, со всех сторон рассмотреть и даже сохранить в популярных форматах. Ну, это уже для дизайнеров интерьеров.
Написал, и не удержался, чтобы не встроить туда "пасхальное яйцо". К сожалению, вызывалось оно не очень сложным образом - [Ctrl]+[клик-куда-то].
По этой нехитрой комбинации в окошечке начинал крутиться куб, на грани которого была нанесена моя брутальная морда - я тогда любил стричься налысо и вид имел устрашающий. Еще в черно-белом. С цианистым таким оттенком.
Так в тираж и запустили.
Не прошло и месяца - звонят из конторы. Ржут, как кони. Приезжай, говорят, лицом поторгуешь - один клиент обнаружил твой кубик. Возбудился страшно - хочу, говорит, такой декор в гостиную. Очень, говорит, шикарно. Постминимализм, говорит.
Сказали клиенту, что уже продали. Мол, один экземпляр был. Расстроился, бедняга.