Я – хакер! Хроника потерянного поколения - Дмитрий Артимович
Они закрыли дверь. Брат ударом руки сломал звонок, сделанный из мышки. Хоть что-то.
Через 30 минут в дверь постучали — выходите. В холле собралось человек 30. Брат Игорь взял пустую стеклянную бутылку и вышел. Я последовал за ним.
Бах — Игорь разбил бутылку о стену. В рухак у него красовалась розочка:
— Что, твари, охуели? Где гиря?
Адреналин зашкаливал, меня трясло. Я лихорадочно пытался прикинуть, сколько человек я сумею вырубить перед тем как вырубят меня, и чем это все закончится.
После некоторого препирательства толпа стала расходиться. Конфликт иссяк. Гирю нам так и не отдали. Я раньше никогда не замечал, что существует некий тип людей, которые, даже когда они совершенно не правы, постараются сделать виноватым тебя. Гнилой тип людей.
Зато урок разборок я получил хороший — тот урок, которого мне так не хватало в детстве. Мексиканец
Во втором семестре первого курса к нам подселили мексиканца — Виктора Уго. Уго мечтал получить образование у нас в России и работать преподавателем на родине в Мехико, но с успеваемостью у него было плохо. Зато он рассказывал интересные истории: сколько травы он курил на родине, как учил русский мат и тому подобное.
Вроде бы все хорошо. Но был один маленький минус: Уго считал, что он тут как бы не живет, поэтому не будет убираться в блоке. А если мы хотим, то можем это делать сами. Его слова привели меня в ярость. Я со злостью кинул ему веник и сказал, что теперь он убирается здесь каждую неделю. Так он и делал следующие полгода. Видимо, я действительно производил тогда впечатление «не подходи, а то прибью».
Как-то днем я был один в комнате. В дверь постучали. Я открыл:
— Виктор дома? — с акцентом спросила загорелая девушка приятной латинской внешности.
— Нет, — ответил я и закрыл дверь.
Вечером мексиканец рассказал мне, что та девушка спрашивала про некоего накаченного парня. Я ей понравился. Какой же тормоз я был тогда! Сеть
Завершив первый курс хорошо, я собрался домой. По дороге нужно было снять в Сбербанке стипендию за весь учебный год. Проторчал я в кассе около часа, подписывая кучу ненужных бумаг. В итоге мне выдали около 3000–4000 рублей.
Я решил, что мне все-таки нужен компьютер в общежитии. На новый денег не хватало, пришлось покупать б/у. Конфиг был практически такой же, как и домашний — процессор Celeron, 20 Гб винчестер, монитор чуть побольше 17 дюймов. Монитор был с кинескопом, имел плоский экран, но и дефект — во включенном состоянии на экране постоянно светились две горизонтальные тонкие линии. Стоил этот компьютер 6000–7000 рублей. Недостающие деньги мне дали родители.
Подключение к сети в общаге стоило денег — нужно было оплатить стоимость сетевого кабеля и работу по его прокладке. Этот вариант мне не подходил — денег не было совсем. Я жил на то, что давали родители, а на выходных мотался домой за продуктами. Поэтому вопрос с подключением я решил через Валю, моего соседа из другого блока. Он был подключен к общей сети, и в его компе было два сетевых адаптера. Через окно мы кинули сетевой провод, он воткнул его в свой системник и настроил мост. Я же прикупил себе дешевую сетевую карту PCI и вставил в свой блок.
Интернет у нас был дорогой штукой с оплатой за мегабайты, поэтому фильмы, музыку и программы мы искали в общей сети. Для размещения файлов использовали протокол Samba (виндовская шара). Каждый пользователь задавал имя своего компьютера и рабочую группу. Группы именовались по номерам общежитий: 14, 15, 16 и т. д. Заходя в группу № 15, можно было видеть компьютеры из 15-го общежития, а на компьютерах в открытых папках лежали фильмы, музыка, программы и т. п.
Для общения пользователей в сети использовался Windows Messenger Service, работавший по протоколу NetBEUI over TCP/IP. Под него писали различные мессенджеры сами студенты. Отправлять сообщения можно было как на конкретную машину, так и на всю группу.
А для поиска файлов по расшаренным каталогам в сети были свои поисковые машины. Такая поисковая машина представляла собой сервис, который последовательно перебирал все компьютеры из каждой группы и заносил в свою базу данных названия всех файлов. А также это был веб-интерфейс, позволяющий искать файл по маске названия и выдавать конечные пути на файлы.
Один из таких поисковиков ради интереса написал и я, на C++. Название я выбрал броское — НихуЯндекс, с соответствующим слоганом «Нихуя не найдется».
Мой сканирующий сервис не использовал сторонние базы данных, такие как MySQL, а просто писал все данные в файл на диске. Серверное приложение было написано на том же C++ под Apache. Конечно, топорное решение, но изучать PHP или подобный язык для небольшого сервиса тогда сильно не хотелось.
От других поисковиков мой отличался еще одной функцией: он читал сообщения, приходящие из сети, и, сверяясь со словарем, выделял в них мат и составлял рейтинг самых матерящихся машин в сети. Штука малополезная, зато смешная. Графика
Начиная с последних классов школы, я увлекся компьютерной графикой. Меня очень интересовало, как отрисовываются объекты в таких играх как Doom, Quake, Half-Life. Ведь экран компьютера — это просто область памяти, в которой последовательно хранятся цвета пикселей. Компьютер не знает, что этот шар находится ближе к наблюдателю, чем тот куб. Более того, на игровой сцене могут быть тысячи статических и двигающихся объектов. Если рисовать их все, даже те, что не видны из данного ракурса, отрисовка одного кадра с ними может занять продолжительное время. А для нормального восприятия виртуального мира нужно обеспечить хотя бы 25–30 кадров в секунду.
Кроме того, отрисовка виртуального мира — это не единственная задача, которую решает компьютер. Еще нужно подумать за противников, передвинуть предметы, а если игра с реалистичной физикой, так еще и пересчитать весь физический мир. Как все это возможно?
Изучать разработку игр я начал с библиотеки OpenGL. Она позволяет достаточно просто рисовать трехмерные объекты на двухмерном экране. Настраиваете камеру (изометрическую или перспективу), загружаете текстуры, передаете в библиотеку трехмерные координаты граней, и она отрисовывает их на экране. Все преобразования в таких библиотеках (то же самое Direct 3D) в конечном итоге сводятся к перемножению матриц. Поэтому