Чёрный человек |
|
Рубрики: Бред или рассказы, соответствующие их названию |
Комментарии(0) [+ в друзья] |
Последний программист (Апокалипсис рядом) |
|
Рубрики: Бред или рассказы, соответствующие их названию |
Комментарии(1) [+ в друзья] |
Раб базы |
Программисты очень часто не спят. Бытует мнение, что не спят только плохие программисты, которые не могут правильно распределить свое время или работать с нужными темпами. Я не разделяю это мнение. Ночное творчество позволяет отрешиться от внешнего мира и впасть в состояние особенного транса. Такой транс влечет как наркотик и помимо положительных эмоций имеет еще и побочные свойства…
Я сам только вчера вернулся из реабилитационной клиники и хотел бы рассказать о тех видениях, которые и привели меня на порог медицинского учреждения. Возможно, это позволит понять вам как прекрасна работа ночью и какими ужасными бывают ее последствия.
Все началось три месяца назад, когда меня в качестве независимого разработчика наняли для выполнения крупного проекта. Я знал, что мне предстоит выжать из себя все, чтобы успеть к поставленному сроку, да еще и клиент не совсем понимал, что ему нужно получить в результате. Большой размер проекта и блуждающие мысли заказчиков обычно составляют смесь посильнее «Коктейля Молотова», отведав которую единожды, можно остаться калекой на всю жизнь, ведь такой «коктейль» предназначен не для внутреннего употребления, а для уничтожения вражеских танков. Я же пил эту жидкость крупными глотками, только успевая пополнять кружку. За окном садилось и вставало солнце, росла куча банок из под энергетических напитков и стаканчиков для кофе, красное раздражение не успевало сходить с моих глаз за короткие часы дневного сна.
Сначала я работал днем, но ночная работа манила меня волшебной свирелью и завлекала в свои объятия. Спустя неделю мой жизненный цикл перевернулся вверх ногами – первые лучи солнца клонили ко сну, а наступление сумерек придавало сил и желания поскорее сесть за компьютер и начать манипулировать данными. Я спал днем, а творил в магическом молчании ночи. Через месяц, пути назад уже не было: если я ложился в десять вечера, то уже в полночь вскакивал в полной боеготовности писать код.
Садясь за компьютер в полуночной тиши я ощущал вокруг присутствие дремучего леса из сказок братьев Гримм. Все звуки программ казались мне шуршанием опавших листьев, треском маленьких веточек и уханьем филина. Стук пальцев по клавиатуре напоминал мне дуновение ветра в зелени деревьев, но чем дальше заходило дело, тем больше я понимал, что с каждой ночью все дальше углубляюсь в чащу и скоро наступит момент, когда я пересеку границу «доброго» леса и окажусь на территории зла.
Так все и случилось.
Создавая программные замки и заглядывая внутрь больших объемов данных, я переступил тропинку, разделяющую свежий лес от могильного ужаса. Мне сразу показалось, что не стало ветра в кронах и воздух наполнился затхлостью. Еще немного погодя исчезли и звуки филина и листьев. И тогда появилось оно.
Вид этого чудовища невозможно описать словами. Чисто схематично монстр выглядел как огромный человек, но вместо рук у него были длинные хлысты, которые светились в темноте и при ударе не только рассекали кожу, но и били жертву сильным разрядом электрического тока. Голова зверя была в три раза больше обычной человеческой и походила на сгнившую бычью голову с большой, всегда раскрытой пастью. Одним ударом хлыста чудовище рассекло мой левый бок и часть спины, после чего я повалился на землю в эпилептическом приступе от мощнейшего разряда тока. В себя мне удалось прийти уже в тот момент, когда свора злых гномов приковала мои ноги к креслу и насильно оставила в сидячем положении на краю великой пропасти, озаренной светом факелов.
Спустя какое-то время я понял, что нахожусь внутри пещеры с гигантской расселиной в ее чреве. На скалах, начиная от верхних краев и заканчивая дном ущелья взгромоздились тома толстых книг, похожих на старые бухгалтерские гроссбухи с миллионами километров чернильных записей. Тогда я еще не представлял, какие муки мне придется пережить и сколько зла натерпеться. Я не буду в подробностях расписывать все что было потом, так как врач запретил мне даже вспоминать о былых страданиях, не то чтобы снова оживлять их на бумаге или экранах мониторов. Расскажу лишь следующее.
Быкоголовое чудовище заставляло меня работать на сортировке данных из гроссбухов. Оно извергало из себя кучи запросов – до боли знакомых мне селектов и криэйтов, выборок и инструкций манипуляции данными. После этого я на летающем кресле носился по всему ущелью, отыскивал совпадения и вносил нужные вставки и обновления. Мне приходилось прочитывать триллионы рукописных знаков, чтобы безошибочно выдать требуемую информацию. Как только у меня выходила заминка, монстр стегал мою спину плетью и я терпел жуткую боль от рассечения кожи и удара током. Работа не останавливалась ни днем ни ночью, хотя таких понятий как «день», «ночь» или «сутки» здесь не существовало вовсе. Я потерял счет времени, так как любое вычисление или запоминание было для меня уже нестерпимым, но согласно последующим подсчетам мне довелось провести внутри пещеры несколько лет своего внутреннего времени. Измерять те страдания в обычных часах не имело смысла, так как для окружающих я был в коме чуть более суток.
Таким передо мною предстал ад разработчика. За то, что я взял на себя непомерные труды и поддался соблазну ночи, меня настигла кара и опрокинула сознание в информационную геенну и хаос, где я должен был все упорядочивать и выдавать на гора все запрашиваемые быкоголовым монстром данные. С тех пор врачи запретили мне программировать, но и без их запрета я уже не мог связать воедино нескольких функций, так как начисто утратил способность к удерживанию в своей «оперативной памяти» даже небольших частиц информации.
Сейчас мне уже лучше. Я могу писать текст, значит скоро смогу писать код и проектировать базы данных. Но я боюсь, что испытаю ужас, когда в ответ на сухие SQL-запросы моей программы, начнут поступать живые ответы…
|
Рубрики: Бред или рассказы, соответствующие их названию |
Комментарии(8) [+ в друзья] |
Идеальный код |
В прошлом году, Антону удалось осуществить его давнюю мечту – побывать на тверских озерах вместе с друзьями. Они жили в палатках, ловили рыбу и по вечерам пили чешский абсент, мешая его то с соком, то с коньяком. В одну из таких ночей у костра, Антон и услышал древнее поверие касты Cи-программистов.
Это было не столько поверие, сколько старинное суеверие, которое запрещало нерадивым программистам распечатывать листинги кода и оставлять их под светом луны. Если ровно в полночь, лунный свет попадал на такую бумагу, то все запрятанные в коде ошибки начинали оживать и выползать на свет в виде безобразных жуков. О, это были страшные жуки, они пожирали всех живых людей находящихся в открытом помещении и при крике первых петухов, снова забирались в свои листинги-норы. Они не оставляли никаких останков своих жертв, только жирный помет, поэтому милицию и скорую помощь обычно вызывали соседи, когда из под двери начинало сочиться зловоние. Поговаривают, что еще никому не удалось спастись от жуков-убийц, а пропавших программистов, почему то, причисляли к эмигрировавшим на запад и забывали про них навсегда.
С того момента как Антон побывал с друзьями на озерах, прошло более чем пол года. Он почти забыл про услышанное когда-то поверие, но участие в одном из проектов в качестве PHP-программиста, навело его на странную, но перспективную мысль. Если в полнолуние жуки вылезают из листингов, значит, на бумаге остается идеальный код, в котором нет ни одной, даже малюсенькой ошибки, - думал Антон. Значит, если распечатать фрагменты кода, за которые он несет ответственность, разложить на полу, дождаться прихода жуков, а затем быстро собрать листочки и выбежать за дверь, то можно за одну ночь отладить огромные участки приложения!
Эта идея поразила его, и он мысленно представил себе перспективы: его окружают коллеги, которые поздравляют и хлопают по плечу, а менеджер проекта с улыбкой и словами благодарности вручает толстый конверт за досрочное выполнение всех планов по разработке!
Мысленный вид толстого конверта поселил в Антоне уверенность, что стоит попробовать провести первый эксперимент сегодня же ночью. Однако удачному завершению опыта могли помешать некоторые детали.
Во-первых, это была легенда Си-программистов, а он собирался отладить PHP-код. Что если жуки выходят только из си-кода? Вдруг они не оживают в скриптовых языках? Антона утешал тот факт, что сам PHP написан на си и имеет родственный синтаксис, а это значит, что все астральные свойства языка должны сохраниться и в PHP.
Во-вторых, жуки были опасны, и Антону нужно было продумать план побега из помещения до того, как они его сожрут. Но и здесь у Антона был план – можно залечь в антресоли шкафа (благо он был некрупным человеком) и вооружиться дихлофосом, а в нужный момент, распыляя отраву, со скоростью пули выскочить и собрать все листочки с исходниками.
План был прост. Осталось дождаться ночи.
Перед уходом с работы, Антон распечатал исходники своего модуля к корпоративной CMS на рабочем принтере, сложил их в целлофановый пакет и вышел по направлению к ближайшей станции метро.
Дома он ничего не ел. Как-то кусок не лез в горло. Еще утром ему не было страшно, но с приближением ночи, подавленное и нервное настроение наваливалось на него огромной каменной глыбой. Он впервые за последнюю неделю сгрыз все ногти и, даже дошло до того, что он открыл запылившийся «альманах программиста» от известного софтверного гиганта и начал читать статьи про ASP.NET. Дурные мысли не выходили из головы, правда Антон не понимал их природы – то ли они навеяны предстоящим изгнанием жуков, то ли чтением статей о нелюбимой технологии.
Ровно в двадцать три часа Антон разложил листинги по полу квартиры с расчетом, чтобы на каждый из них гарантированно попал лунный свет. Он клал их обязательно на ковер, чтобы в спешке листочки можно было легко подцепить пальцами. Когда часы показали 23.55, наш экспериментатор схватил заранее приготовленный дихлофос, залез в антресоль шкафа и прикрыл дверцы, оставив тоненькую щель, чтобы наблюдать за происходящим и уличить нужный момент для атаки.
Темная комната была залита лунным светом и, сквозь щель между дверцами, можно было наблюдать все происходящее. Часы, наконец, просигналили полночь, но даже и в две минуты первого с листингами ничего не происходило. Казалось, прошла целая вечность, было потеряно пять литров холодного пота, перед тем как на листочках стала появляться черная роса. Антона кинуло в озноб, когда черные густые капли росли, росли, росли, затем начали приобретать очертания крыльев, рогов и мохнатых брюшек. Наконец, комната стала наполняться гудением, и огромные жуки закопошились по углам. Впрочем, не из всех распечаток выходили одинаково крупные твари. Из одного, самого дальнего листочка, на котором был распечатан код карточки товара, вылупились два мелких нелепых жука, светящихся глупым бледно-желтым цветом. Они с разбегу уперлись в стену, но не полезли вверх, а остались бесцельно стоять, упершись усами в плинтус.
Звук возни стал ненавистен Антону и, дождавшись, когда рождение тварей окончательно прекратится, он выскочил из шкафа и, распыляя дихлофос, с криком, бросился собирать листочки с кодом.
Жуки в ту же секунду учуяли появление теплого мяса и, будто управляемые из единого центра направились к Антону. Некоторые из них ползли по полу, другие зажужжали крыльями и облепили лицо безумствующего человека. Дихлофос играл свою роль, и многие твари попросту отпадали от лица, попадая в облако отравленного газа. Остальных жуков удавалось просто стряхнуть. Вся процедура сбора кода заняла не больше минуты, и оставшийся почти невредимым, Антон успел выскочить за дверь квартиры, добив на себе жуков, которые уже вгрызались в его плоть. На мгновение он обернулся и увидел свою комнату переполненную черной шевелящейся массой. Дверь захлопнулась.
Уф. Все позади. Антон набрал номер своих родителей и под предлогом выдуманных обстоятельств напросился на ночевку к ним. Утром, когда жуки исчезнут, можно вернуться в квартиру и внести все исправления в нужные файлы.
В ночном такси Антон просматривал листинги и изумлялся идеальности написанного кода. Он не только был избавлен от ошибочных мест, но и имел красивое выравнивание и был оформлен в соответствие со стандартами PEAR. Каждая функция и блок кода были детально документированы, да так грамотно, словно тексты писали Толстой и Достоевский на пару, не забыв оформить комментарии в формате phpDocumentor. Даже листочки, и те светились приятным золотистым свечением. И все было хорошо!
Вернувшись домой на утро, Антон понял что не учел один важный момент и в ту же секунду поседел. Он забрал листинги с собой, а значит, жукам некуда было возвращаться и они, даже с первыми лучами солнца не покинули квартиру. В одну секунду они облепили его тело, вгрызлись в седую голову и начали пировать.
Через неделю среди его коллег уже ходил слух, что Антона срочно пригласили на восемьдесят тысяч в год в Штаты, и он уехал так спешно, что не убрал даже квартиру, оставив в прихожей кучи чьего-то жирного блестящего помета и ворох листингов с неотлаженным кодом.
|
Рубрики: Бред или рассказы, соответствующие их названию |
Комментарии(0) [+ в друзья] |
Десять кубиков SQL |
Александр относился к той породе айтишников-исследователей, которые постоянно гонялись за новинками в программном обеспечении и пытались разобраться в как можно большем количестве технологий.
По работе он занимался программированием на PHP и проектированием баз данных (что особенно любил), но и на этом поприще не забывал исследовать новые операционные системы и СУБД. Он устанавливал дома веер операционных систем и ставил любимую СУБД на каждую из них. Александр перечитал много томов книг и статей, пытаясь из интереса максимально оптимизировать работу базы данных на каждой из операционных систем. Сегодня он погрязал в файловой системе Fedora Core, вчера боролся с Aix, а позавчера наслаждался Маком.
В поисках все новых и новых инсталляций он излазил весь интернет, скачал гигабайты программного обеспечения и вступил в десяток тайных сообществ, пока, наконец, ему не попалось то, что он искал всю жизнь.
О существовании этого он узнал на одном из обсуждений закрытого ЖЖ-сообщества системных администраторов из какой-то южно-американской страны. Они не раскрывали все карты, но пустили слух, что среди джунглей в горах Альто-Плано живет одинокий бородатый разработчик. Он питается исключительно змеями и ящерицами, добытыми на склонах боливийских гор в те минуты, когда отдыхает от кода. Каждую ночь он забирается на вершину скалы, высящейся над его затерянным домиком и медитирует до утра, впадая в священный транс, заменяющий ему сон. Говорят, что в одну из таких ночей, перед ним предстал Абутон, имеющий воду вместо глаз и рассказал про это.
На утро, одинокий программист в оцепенении вернулся в свой дом, сразу засел за компьютер и не отходил от него на протяжении семи дней и семи ночей. Надо сказать, что по каким-то внутренним убеждениям, смысл его жизни состоял в разработке Open Source проектов, поэтому и сейчас он патчил несколько открытых технологий, чтобы на их основе сделать то, о чем ему пропел Абутон.
То, что получилось в результате, не поддавалось никаким рациональным объяснениям. Одинокий программист записал исходный код проекта на CD и еще семь дней и семь ночей носил его на вершину скалы, пока Абутон не явился во второй раз и не напел ему священную музыку Уицилопочтли, говорящую о завершении проекта.
Одинокий программист написал ничто иное, как программный комплекс, состоящий из PHP, Apache и MySQL, который можно было инсталлировать прямо в человеческий мозг.
На вершине скалы, Абутон открыл одинокому программисту API-интерфейс человеческого сознания, и он провел семь дней и семь ночей, интегрируя любимые технологии с мозгом.
Когда Александр узнал о разработке одинокого программиста из джунглей латинской америки, он восхитился и задался целью отыскать на просторах сети заветный дистрибутив и обязательно исследовать его.
Через тридцать два дня упорных поисков, Александр, наконец, добрался до этого и скачал дистрибутив на свою машину. В readme файле было немного текста, но из него он понял, что исходный код нужно собрать в последней версии компилятора gcc с опцией - -with-magic-dust. В процессе сборки из жесткого диска должен вырваться клуб зеленого дыма и вот тут, важно не пропустить его и глубоко вдохнуть.
Когда Александр заглянул в исходники PHP-интерфейса для управления комплексом, он обнаружил, что код содержит уязвимое место, через которое, обладая определенными навыками, можно выполнить любую SQL-инъекцию. После того как он исследовал код всего дистрибутива, оказалось, что тот обладает недокументированными возможностями, и уязвимость к SQL-инъекциям оставлена автором с умыслом. После дополнительных исследований, Александр осознал странную правду – дыра была оставлена не просто нарочно, но и вся система была разработана исключительно ради этой уязвимости. Но почему автор сделал это, оставалось загадкой. Всю правду можно было узнать, только инсталлировав систему себе в мозг.
В пятницу вечером он не пошел с друзьями в боулинг, чтобы попить пива и поиграть в кегли. Вместо этого, он купил запасной жесткий диск и поудобнее расположил открытый системный блок на столе, чтобы не пропустить момент появления волшебного дыма.
Программа была разработана идеально: компилятор не выдавал никаких ошибок и на пятой секунде после выполнения команды make install из жесткого диска вырвался плотный клубок зеленого с серебринками дыма. Александр вдохнул его всеми легкими и уже через секунду почувствовал какую-то неведомую пульсацию внутри своей головы.
Он не мог осознать, что же с ним происходит и что это за пульсация. Только через десять минут нахождения в полном ступоре ему в голову пришла ассоциация с мигающим курсором, готовым к приему команды. Непонятным образом Александру удалось обратиться к CLI интерфейсу PHP внутри мозга и выполнить первое, что пришло на ум: php –v. Таким образом, он еще с полчаса осваивал новые возможности, а потом с вдохновением приступил к изучению главной тайны – SQL-инъекциям.
Как только ему удалось выполнить простейшую инъекцию с выводом версии базы данных, он почувствовал легкую эйфорию. На следующей, не более обидной инъекции, эйфория повторилась вновь, но была уже не столь ощутимой, поэтому Александр решил сделать более деструктивную инъекцию с заменой данных во всех текстовых полях на фразу «You are hacked» и тогда эйфория накатила с новой силой и долго не отступала. Через полчаса, когда Александр пришел в нормальное состояние, он уже не мог думать ни о чем другом, как о повторении ушедшего чувства.
Утром, зашедшие в открытую дверь квартиры друзья, обнаружили Александра лежащим на полу. Приехавшие врачи констатировали смерть, но так никто и не смог понять, что означала надпись, сделанная Александром кровью на линолеуме: drop database mysql.
|
Рубрики: Бред или рассказы, соответствующие их названию |
Комментарии(0) [+ в друзья] |