Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги хакеры / журнал хакер / специальные выпуски / Специальный выпуск 4_compressed

.pdf
Скачиваний:
16
Добавлен:
20.04.2024
Размер:
7.13 Mб
Скачать

 

 

ТЕОРИЯ

 

 

 

 

 

 

 

 

 

>СПЕЦВЫПУСК #4

0009

9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ных в теле цикла команд. Цикл представляет

For i:=1 to 10 do

тать? Вот тут совсем другое дело. Так и с ком-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

собой оператор объявления цикла и тело цик-

Begin {Начало тела цикла}

пом - ему все эти буковки сугубо фиолетовы,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ла. А ТИПОВ ЦИКЛА не один, а целых три.

A=(Задать значение А);

он, как ты помнишь, ничего не знает, кроме 0

 

 

 

 

 

 

 

 

Причем каждый для своих целей. “Дык это ж

B=(Задать значение В);

и 1. Вот КОМПИЛЯТОР-то твои писания в эти

 

 

 

 

 

 

 

 

окосеть можно!” - скажешь ты. И будешь не

C=(Задать значение С);

самые единички и нолики и переводит. Так

 

 

 

 

 

 

 

 

 

 

прав. Ну сам посуди: жизненная ситуевина -

D:=(A+B)*C;

сказать, поближе к природе. :))

 

 

 

 

 

 

 

 

 

 

 

 

ты точно знаешь, что тебе надо что-то сделать

Writeln(‘Получилось аж ‘, D)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в проге 10 раз подряд. Тут тебе поможет

End; {окончание тела цикла}

Программа

твоя исполняется

замечательно,

 

 

 

 

 

 

 

 

ЦИКЛ ДЛЯ (FOR). Ну а если ты не знаешь,

End. {окончание программы}

но, вот беда, в какой-то момент ее пробирают

 

 

 

 

 

 

 

 

 

 

 

 

 

сколько тебе надо считать или что-то делать,

 

 

 

жуткие глюки. Берет и валится! Ну, ты припо-

 

 

 

 

 

 

 

 

однако знаешь, что это надо ПОВТОРЯТЬ ДО

Если ты обратил внимание - появилась новая

минаешь маму Билла Гейтса, всех его род-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ÒÅÕ ÏÎÐ, ÏÎÊÀ (REPEAT ... UNTIL) ÷åãî-òî òàì

переменная I, она называется ПАРАМЕТР ЦИК-

ственников... Не помогает... В таких случаях

 

не станет таким, как нужно тебе. Ну а когда

ЛА. Кстати,

при повышенной внимательности

программу

подвергают

ТРАССИРОВКЕ

 

 

 

 

 

 

 

 

 

 

 

клубишься ты с перцами, то тут цикл третьего

ты увидишь, что объявлена переменная I, а в

(TRACE/DEBUG, об этом у нас целая статья

åñ-

 

 

 

 

 

 

 

 

 

 

типа: пей пиво, ПОКА НЕ (WHILE) упадешь (не

цикле она называется i (малая I). Так вот, за-

ть в этом спеце). Трассировка - это когда

êîì-

 

 

 

 

 

 

 

 

 

 

почувствуешь прилив сил и вдохновения). А в

помни: в большинстве языков программиро-

пьютер исполняет твою программу по шагу, а

 

 

 

 

 

 

 

 

проге эти циклы оформляются так:

вания РЕГИСТР ИМЕН ПЕРЕМЕННЫХ (ну, с ка-

ты за ним присматриваешь: “Тут все хорошо,

 

 

 

 

 

 

 

 

Öèêë ÄËß (FOR)

 

кой буквы начинаются (продолжаются) имена

òóò òîæå, à òóò... Å!!! Êàê òàê!!” - âñå, ãëþê îò-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

переменных) компу глубоко по фигу. Такая си-

ловлен. И так всю программу. А если прога на

 

 

 

 

 

 

 

 

туация не

везде, но в большинстве

случаев

200 кубов текста? Тогда, если знаешь,

ãäå

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FOR переменная: =начальное_значение to ко-

это так. Вот мы и решили задачу с повторе-

глюк вероятнее всего расположен, то тут мож-

 

 

 

 

 

 

 

 

нечное_значение do

 

нием чего-то там нужное число раз. Просто?

но поставить ловушку БРЕКПОИНТ (BREAK-

 

 

 

 

 

 

 

 

 

 

Еще как! Все просто, главное - просечь фиш-

POINT) и трассировать программу уже с этого

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Begin

 

êó...

 

 

места. До брекпоинта программа выполнится

 

 

 

 

 

 

 

 

Тут то, что надо делать много раз. Называется

КАК ГОВОРИТЬ С МАШИНОЙ, ИЛИ

быстро и без твоего участия. Ну и еще ма-

 

 

 

 

 

 

 

ТЕЛО ЦИКЛА.

 

ленькая куча понятий из программерского

 

 

 

 

 

 

 

 

 

 

 

 

 

 

End;

 

ЯЗЫК ПРОГРАММИРОВАНИЯ

 

лексикона.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Цикл ПОВТОРЯТЬ ДО ТЕХ ПОР, ПОКА (REPEAT

 

 

 

ЗАРЕМИТЬ (REM). Åñëè

какая-то

часть

 

 

 

 

 

 

 

 

 

 

... UNTIL)

 

Прикинь, ты в России, комплектуху компа де-

 

 

 

 

 

 

 

 

Repeat

 

 

 

 

 

 

программы стала

òåáå

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ТЕЛО ЦИКЛА

Вот ты и сочинил свою

 

не нужна, то ее можно

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Until (условие)

 

не удалять (вдруг потом

 

 

 

 

 

 

 

 

 

 

 

первую прогу. Все кодеры

 

понадобится), а

ïîìå-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Этот цикл закончится

 

òèòü

как ремарку

(ïîÿñ-

 

 

 

 

 

 

 

 

 

 

начинали именно так, поверь

 

 

 

 

 

 

 

 

 

ТОЛЬКО тогда, когда ус-

мне. С комовским разъемом

 

нение).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ловие в скобках выпол-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нится, то есть ЛОГИЧЕС-

пониже спины никто не

 

ИСХОДНИКОМ

 

 

èëè

 

 

 

 

 

 

 

 

 

КОЕ ВЫРАЖЕНИЕ в скоб-

 

СЫРЦОМ

(SOURCE)

 

 

 

 

 

 

 

 

 

родился.

 

 

 

 

 

 

 

 

 

 

 

 

ках станет ИСТИННЫМ.

 

 

называется текст прог-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Например, 6>5 - это ИС-

 

 

 

 

раммирования.

раммы на языке прог-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ТИНА (TRUE), а вот 4<0 - это ЛОЖНО (FALSE).

лали на Тайване, собирали в Урюпинске, пос-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Этот цикл ВСЕГДА ВЫПОЛНЯЕТСЯ ХОТЯ БЫ

тавили на него Винду, сделанную в Американ-

КУДА ПОЙТИ, КУДА ПОДАТЬСЯ

 

 

 

 

 

 

 

 

 

 

 

ÎÄÈÍ ÐÀÇ!

 

щине. Как общаться прикажете? Вот и приду-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

мали дяди языки программирования, которые

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Öèêë ÏÎÊÀ ÍÅ (WHILE)

 

как все нормальные языки имеют слова - ОПЕ-

Ну что, перчило, ты еще не замаялся читать?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

While (выражение) do

 

РАТОРЫ (OPERATOR). Оператор - это то, что

Если нет, то сейчас мы разберемся еще с од-

 

 

 

 

 

 

 

 

Begin

 

ты говоришь машине, слово того языка, кото-

ной фишкой - УСЛОВИЯМИ. Такая ситуация:

 

 

 

 

 

 

 

ТЕЛО ЦИКЛА.

 

рый вы понимаете оба. FOR, UNTIL, REPEAT,

надо объяснить твоей куче железа что-то ти-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

End;

 

WHILE, IF, THEN, ELSE - это все операторы.

па: “...ты тут считай, а вот если у тебя полу-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

А вот этот цикл может и не выполниться ни ра-

 

 

 

чится 0, то ты считай там, а если юзер нажмет

 

 

 

 

 

 

СИНТАКСИС ЯЗЫКА ПРОГРАММИРОВА-

пимпу “А” - то вообще закругляйся”. Тут нам

 

 

 

 

 

зу, если выражение в скобках исходно ЛОЖ-

ÍÈß (SYNTAX) - это как их правильно распо-

на помощь придет ОПЕРАТОР ЕСЛИ..... ТО.....

 

 

 

 

 

 

НО. Вот как теперь можно решить нашу зада-

ложить друг за другом, чем разделить и,

ИНАЧЕ (IF..... THEN..... ELSE.....). Возвра-

 

 

 

 

 

 

 

 

 

 

 

 

чу с использованием цикла FOR:

вообще, как их использовать. Теперь что такое

щаясь к нашим условиям: опишем на понят-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Program MyCoolProgram;

 

КОМПИЛЯТОР (COMPILER). Тут все просто.

ном машине языке человеческое предложение

 

 

 

 

 

 

 

Прикинь, ты с китайской девчонкой познако-

“...ты тут считай, а вот если у тебя получится

 

 

 

 

 

 

Var A,B,C,D,I: Integer;

 

мился в чате? А вот по-китайски ты не ру-

0, то ты считай там, а если юзер нажмет пим-

 

 

 

 

 

 

Begin {начало программы}

 

бишь... Фигово, да? А если переводчика дос-

пу “А”, то вообще закругляйся, иначе запускай

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

000A

ТЕОРИЯ

 

 

>СПЕЦВЫПУСК #4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Кваку”. Вот чего у тебя получится:

.........

IF получилось 0 THEN считай там;

IF юзер нажал пимпу “А” THEN закругляйся

ELSE запускай Кваку;

.........

Дабы комп просек, куда ему, собственно, об-

 

 

 

 

 

 

 

ратиться за данными в каждом случае, была

 

 

 

 

 

 

 

придумана МЕТКА (LABEL). То есть комп чи-

 

 

 

 

 

 

 

тает программу сверху вниз, как и все нор-

 

 

 

 

 

 

 

мальные перцы. И доходит до места, где на-

 

 

 

 

 

 

 

до проверить, например, не нажал ли юзер

 

 

 

 

 

 

 

кнопец, - и дальше работать в зависимости

 

 

 

 

 

 

 

от этого обстоятельства. Но код-то для раз-

 

 

 

 

 

 

 

ных вариантов поведения проги находится в

 

 

 

 

 

 

 

разных местах, так? Так вот, в каждом кон-

 

 

 

 

 

 

 

кретном месте ставится метка со своим име-

 

 

 

 

 

 

 

нем. И в проге описывается: если так-то, то

íóþ

задачу.

Пример:

процедура

 

иди к метке 1, а если не так, то - к метке 2.

очистки окна в досявых прогах

 

Только не увлекайся. Есть правило: крутость

(`CLS’ в васике).

 

 

 

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

 

 

 

 

 

 

 

лу меток в программе.

ФУНКЦИЯ. Часть программы (под-

 

ВОТ ЕЩЕ НЕСКОЛЬКО ПОНЯТИЙ

программа), которая после оконча-

 

íèÿ

выполнения

своего

алгоритма

 

КОДИНГА

выдает

определенный

результат

 

 

(значение функции). Грубо говоря,

 

ÑÒÅÊ. Упорядоченный набор элементов

процедура,

которая

 

 

(составляющих частей стека), в котором до-

äàåò

результат. Фун-

 

 

бавление новых элементов или выбрасыва-

кции могут иметь ар-

 

 

ние старых может происходить только с од-

гументы. Короче,

âñå

 

 

ного конца. Этот конец, вдобавок ко всему, в

как в школьной мате-

 

 

умных книжках вершиной стека обзывают.

матике 8-9 классов:

 

 

Представь, что ты занимаешься изготовле-

функции

îò

аргумен-

 

 

нием пиратских CD на дому. :) Сидишь, ле-

тов (или ты математи-

 

 

пишь себе с болванок заветные алюминие-

êó íå ó÷èë?).

 

 

 

 

вые, потом свет отрубается, дверь выламы-

 

 

 

 

 

 

 

вается... доблестная милиция пожаловала!

БИБЛИОТЕКИ

DLL

 

 

Ну, ты первым делом куда диски денешь?

(Dynamic

Linked

 

 

Нет, смывать в биде их не надо! :) Ломишься

Library)

- библиотеки

 

 

на кухню и в вентиляцию все: там узко, не

динамической компоновки (так говорят в лю-

кции, используемые несколькими твоими про-

упадут. Вот тебе и стек настоящий в вентиля-

бимых умных книгах :)). Работают они как

ãàìè.

ции получился: нижний диск не вытащишь -

юниты в Паскале/Дельфях. Только, грубо го-

ЗАКРУГЛЕНИЕ

придется сверху по одному тянуть :). В этом

воря, код юнитов паскалевых во время компи-

случае элементы стека - это твои кровные са-

ляции цепляется к проге, да так, что потом не

 

мые что ни на есть компактные диски. Стеки

отлепишь (т.е. линкуются статически), а dll-ки

Ну вот, перец, теперь ты реально продвинулся в

в умных книжках еще называют структурами

существуют свободно от проги, их использую-

кодинге. Мы разобрали основные понятия по

LIFO (Last In First Out) - последним пришел,

щей. Юзать dll удобно тем, что она грузится

полкам. До остальных вещей ты дойдешь сам,

первым ушел.

только тогда, когда это нужно твоей (или спи-

это не так сложно. Помни, никто не родился ко-

 

ратченной :) ) софтине. При этом процедуры,

дером, все начинали так же как и ты, с самых

ПРОЦЕДУРА. Часть программы, реализую-

функции и прочая шняга из dll могут исполь-

азов. Любая даже самая крутая и навороченная

щая свой алгоритм. Она же подпрограмма

зоваться и другими прогами или dll`ами. Са-

прога все-таки была кем-то написана. Так поче-

(все зависит от языка разные названия). Про-

мое веселое, что библиотеки dll могут быть

му бы тебе не написать еще круче? Дерзай! И

цедуры обычно - это ни что иное, как отдель-

написаны хз на каком языке: пишешь ты про-

помни, что золотым правилом всех программе-

ная небольшая “программка” (т.е. подпрог-

гу на Вижуал Васике и юзаешь dll-ку, забацан-

ров всех времен и народов было, есть и остает-

рамма), все ее команды выполняют неболь-

ную на Си. :) Короче, dll - это рулезная фича

ñÿ - RTFM!

шую (по сравнению с основной), но конкрет-

:), в которую удобно напихать, например, фун-

Удачи.

ГДЕ КУПИТЬ?

Напиток ХАКЕР всегда можно купить:

На всех заправках BP в Москве и области

Âклубах: Вирус, Эстакада, Слава, Вокзал, Сова, Паутина, Титаник, Территория, Протон, Радио Ãà-Ãà, Bells

Âкомпьютерных клубах: Орки, Лавина, Остров “Формоза”, Гейм Сити

Âфитнесс-клубе “Марк Аврелий”

Коммерческий отдел (крупный и мелкий опт) тел.: (095) 402-2712, 402-0930

w w w . t i g e r d r i n k . c o m

12

000C

ТЕОРИЯ

 

 

>СПЕЦВЫПУСК #4

 

КАК СОЗДАЕТС

The Hound of Winter (thow@ireland.com)

 

 

ТЕОРИЯ

 

 

 

>СПЕЦВЫПУСК #4

000D

13

 

Я ПРОГРАММА

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ривет! Тебе уже надоело изучать

заявляет: “Э! А почему бы мне не написать вот

дильником или проекта драйверов для микро-

 

 

 

 

 

 

 

 

 

 

 

 

языки программирования только

такую классную прогу!”. Тут-то все и закручи-

волновой печи под Windows 2000. Да-да, откры-

 

 

 

 

 

 

 

 

 

 

 

 

в теории? Хочется

попробовать

вается. Сначала придумываются всевозможные

тый проект - это не обязательно только

 

 

 

 

 

 

 

 

 

 

 

 

свои силы на настоящем проекте

фичи, которые должна поддерживать эта прог-

Linux/Unix. Например, совсем недавно ко мне в

 

 

 

 

 

 

 

 

Ïс бета-версиями и релизами?

рамма, придумывается ей название и устанав-

руки попал Dos Navigator Open Source Project,

 

 

 

 

 

 

 

 

Тогда поговорим о том, как создается Програм-

ливается первоначальный порядок авторства

написанный под DOS и DOS/DPMI на Borland

 

 

 

 

 

 

 

 

ма - настоящая Программа, а не дружеские

(чтобы в больших коллективах потом не возни-

Pascal 7.0. Так что платформа, язык программи-

 

 

 

 

 

 

 

 

фишки типа HackInternetPasswords (о них ты и

кало проблем вроде: “А почему Пупкина опять

рования и погода на улице особой роли не иг-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сам все знаешь). ;-) Обычно в процесс создания

первым написали? Он вообще ничего не де-

рают. Важна именно идея. Dos Navigator, напри-

 

 

 

 

 

 

 

 

коммерческой программы вовлекается очень

лал!!!”). Идея обязательно должна быть краси-

мер, был изначально коммерческим продуктом.

 

 

 

 

 

 

 

 

много людей, начиная с художников-дизайне-

вой и привлекательной - иначе на нее никто не

За него платили деньги, но позже фирма-произ-

 

 

 

 

 

 

 

 

ров, которые рисуют логотипы и окна диалогов,

клюнет, и все придется делать тому, кто ее при-

водитель отказалась от дальнейшего исправле-

 

 

 

 

 

 

 

 

и заканчивая продюсерами, которые под конец

думал. Писать в одиночку обычно надоедает,

ния немереного количества багов в своем про-

 

 

 

 

 

 

 

 

работ собирают деньги и сбегают. ;-) Но сущес-

особенно если проект большой, а идея не так уж

дукте и “выбросила” в Интернет исходники со

 

 

 

 

 

 

 

 

твуют также и проекты “Open Source Projects” -

и интересна. ;-)

словами и пожеланиями всем, кому не лень, на-

 

 

проекты с открытыми исходны-

Сначала придумываются

делать там новых багов. Так до

 

 

ми текстами, которые

обычно

сих пор и делают. И удачно,

 

 

ведут одни программисты. Вер-

всевозможные фичи,

 

надо сказать, поскольку глю-

 

 

íåå,

они по совместительству

которые должна

 

чит по-страшному. ;-)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

являются

еще и художниками, и

 

Часть 3. Первый месяц

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

продюсерами, и распространи-

поддерживать эта

 

 

 

 

 

 

 

 

 

телями, и координаторами... и

программа, придумывается

работы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

т.д. Обычно они создают абсо-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

лютно бесплатные программы,

ей название и

 

Здесь происходит самое инте-

 

 

 

 

 

 

 

 

которые энтузиасты потом допи-

устанавливается

 

ресное. Продолжают

генери-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сывают и поддерживают по нес-

первоначальный порядок

роваться идеи и оформляется

 

 

 

 

 

 

 

 

кольким причинам. Во-первых,

каркас

будущего

шедевра

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

это обыкновенный понт - жела-

авторства (чтобы

 

программистского искусства.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

íèå

 

выпендриться и показать

в больших коллективах

Именно в этот момент глав-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

собственную крутость: “А я вот

потом не возникало

 

ным человеком проекта стано-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

так умею да так, что именно как

 

вится Координатор. Он должен

 

 

 

 

 

 

 

 

 

я никто не смог!”. ;-) Это же са-

проблем вроде: А почему

распределять задачи между

 

 

 

 

ìîå

чувство сподвигло

многих

Пупкина опять первым

программистами и затем про-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

стать

демомейкерами,

вирусо-

написали? Он вообще

 

верять, кто что сделал. Когда

 

 

 

 

 

 

 

 

писателями и прочими кодера-

 

кто-то дописывает свой “кусо-

 

 

 

 

 

 

 

 

ми. Во-вторых, обычно это жела-

ничего не делал!!!”).

 

чек” программы, координатор

 

 

 

 

 

 

 

 

ние иметь хорошую и неглючную

 

 

 

должен

собрать весь проект

 

 

 

 

 

 

 

 

утилиту, которая умеет больше,

 

 

 

вместе с этим кусочком (если

 

 

 

 

 

 

 

 

чем всякие поделки от M$. В-третьих, это прос-

Часть 2. Набор участников

проект уже можно собрать, то есть соединить

 

 

 

 

 

 

 

 

то интересно, и, однажды втянувшись, человек

 

присланные/переданные части и скомпилиро-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

уже не может не писать программы. А когда это

После того как идея сформирована, обрела дос-

вать). После того, как проект собран, результат

 

 

 

 

 

 

 

 

делаешь не один, а в группе таких же кодеров,

таточную прочность и представляет собой за-

(бинарник и исходники) помещаются в обще-

 

 

 

 

 

 

 

 

 

 

 

которые один лучше другого, то со временем

конченную мысль, инициатор проекта может на-

доступное место - на сайт проекта, например.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

приобретается бесценный опыт кодинга и прог-

чать агитировать своих знакомых, друзей и

Или же рассылаются всем участникам так, что-

 

 

 

 

 

 

 

 

раммерства. Дело это довольно долгое и на са-

близких просто начать рекламную кампанию по

бы у каждого была своевременно обновленная

 

 

 

 

 

 

 

 

мом деле состоящее из множества этапов.

продвижению этой идеи. Попросту говоря, на-

копия проекта. Это делается для того, чтобы

 

 

 

 

 

 

 

 

Пройдемся по каждому из них и посмотрим, ка-

бираются те, кто потом будет на халяву трудить-

каждый мог похвалить или загномить то, что на-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

кие подводные камушки могут подстерегать наш

ся над проектом. А то, что это должен быть

кодил “сосед”. ;-)))

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Титаник. ;-)

 

 

проект, - понятно само собой. Немного офи-

Часть 4. Промежуточный этап - пре-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

циальности, немного растопыренных по-хоро-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Часть 1. Идея

 

 

шему пальцев, и (вуаля! - как говорят французы)

бета- и бета-версии

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

находятся добровольцы, которые также заго-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Итак, все начинается с идеи. Кому-то (поначалу

раются идеей проекта бесплатного наворочен-

После пары месяцев работы (или как только ста-

 

 

 

 

 

 

 

весь проект ведет один человек) падает на голо-

ного мейлера-почтовика со встроенными воз-

нут видны результаты работы) проект собирает-

 

 

 

 

 

 

 

ву кирпич или еще что, но этот кто-то однажды

можностями дистанционного управления холо-

ся и отдается профессиональным тестерам, ко-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14

000E

ТЕОРИЯ

 

 

>СПЕЦВЫПУСК #4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

понять, отчего ему так нравится этот новый су-

почку на вот эту фичу.” Потом не всегда удается

 

 

 

 

 

 

 

 

 

 

 

 

 

перкалькулятор на 26 мегабайт... А дело-то в

найти именно ту идею, которую можно взять за

 

 

 

 

 

 

 

 

 

 

 

 

 

удобстве. ;-))) Кроме всего этого, создаются па-

основу - программа должна быть нужной, и та-

 

 

 

 

 

 

 

 

 

 

 

 

 

кеты многоязыковой поддержки и пишутся раз-

ких программ должно быть мало или, что еще

 

 

 

 

 

 

 

 

 

 

 

 

 

личные хелпы. Причем, хелпы могут быть напи-

лучше, не быть совсем.

И прога обязательно

 

 

 

 

 

 

 

 

 

 

 

 

 

 

саны как в процессе работы над проектом сами-

должна отличаться от

остальных какими-то

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ми программистами, так и непосредственно

своими особыми качествами, иначе нет смысла

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

заинтересованными пользователями уже после

писать новую прогу.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

выпуска программного продукта.

Часть 8. Апгрейды и обновления. А

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Часть 6. Завершающий

ýòàï

также всяческие

сервис-паки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Здесь окончательно (это шутка

такая ;-))) отлав-

После того, как продукт

запущен в свободный

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ливаются все баги и фичи.

Совершенствуется

полет в открытый космос

 

Сети, сбегающиеся

íà

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

форма и начинают приниматься

первые похвалы

крик “Халява” юзеры обязательно порвут сервер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и ругательства от бета-тестеров.

À óæå áåòà-òåñ-

на части, скачивая заветную халяву. Правда,

î

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

теры, надо сказать, народ

придирчивый. Обыч-

íåé

сначала должны

узнать. Именно поэтому

íà

 

 

 

 

 

 

 

 

 

 

 

 

 

 

но создается ньюс-конференция

èëè ìýéë-ðàñ-

äâóõ

предыдущих стадиях координатор проекта

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сылка, которая охватывает

всех участников

должен был потрудиться над созданием и про-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

проекта. На завершающем

этапе абсолютно

талкиванием рекламы на пару рекламных серве-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

всем желающим раздается копия программы, и

ров. В принципе, большинству проектов хватает

 

 

 

 

 

 

 

 

 

 

 

 

 

 

начинается последняя стадия подготовки. Пи-

и специальных софтовых рассылок, наподобие

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

шутся последние файлы документации, в список

CityCat. В таких рассылках собираются не толь-

 

торые будут тыкать во все кнопочки, включать

авторов дописывается Вася Пупкин. Обычно на

ко любители, но зачастую и такие же програм-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

âñå

опции и делать

это строго в хаотичном по-

этом же этапе подготавливается сайт проекта и

мисты, которые не прочь поучаствовать в каких-

 

рядке.

После того,

как кто-нибудь находит

начинается рекламная компания (если продукт

нибудь интересных проектах.

 

ошибку в бинарнике,

он должен заполнить спе-

все-таки коммерческий).

 

 

 

 

 

 

 

 

 

 

 

 

 

циальную карту (или

Кстати, на сайте

 

 

 

 

 

 

 

Но это все - результат

 

 

 

темплейт) и отослать

 

 

 

 

 

 

 

деятельности нес-

по е-мылу координа-

 

www.softpanorama.org можно

кольких человек. А как

 

 

òîðó.

 

Â

некоторых

 

найти статьи о возможностях,

быть, когда ты один?

 

 

проектах

стали до-

 

Ну, в крайнем случае,

 

 

 

бавлять

â

готовый

 

прелестях и недостатках

 

 

 

 

 

 

наедине с собствен-

 

 

бинарный файл спе-

 

программирования в проектах

ным энтузиазмом (а

 

 

 

 

 

 

циальный

êîä, êîòî-

с открытыми и свободно

 

 

 

 

 

 

не тем, что некоторые

 

 

рый после

òîãî, êàê

 

 

 

 

 

 

думают). ;-) Не боись!

 

произойдет

ошибка,

 

распространяемыми исходниками.

È îäèí â ïîëå - âîèí!

 

 

 

создает специальный

 

Вообще, сайт посвящен не только

Еще среди первых ха-

 

 

отчет

ñ

указанием

 

этой теме, но таких материалов

керов бродили посту-

 

 

места и типа ошибки.

 

латы Хейфелля: “Кто

 

Бетатестеру остается

 

там много. Советую зайти.

будет жить для меня,

 

только написать, что

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

åñëè íå ÿ

он такого мудреного

 

 

 

 

 

 

 

Часть 7. Заветная единичка

 

 

 

 

 

 

такой, если

 

 

 

 

 

сделал, что нежный

программный продукт “за-

только для себя?”. Над ними стоит

 

валился”, и отослать

свою заявку с пожелания-

 

 

лить, чтобы не превращать искусство

 

ми координатору.

Координатор собирает все

“Заветная единичка” - так называют первую

мирования в рутину. ;-) Кодинг - это

 

заявки и отдает их тем программистам, которые

(1.0) версию продукта, которую можно начать

средство самовыражения! Настоящий

писали тот код, в котором произошла ошибка.

официально распространять. Надо сказать, что

вместо того, чтобы писать знаменитые

 

Таким образом, обычно каждый сам исправляет

некоторые проекты с исходными текстами не

вы на заборе, напишет несколько

свои ошибки. Иногда коды разных программис-

доживают до заветной единички. Многие уми-

на странице ФБР или Пентагона! ;-)))

 

 

 

 

 

тов конфликтуют, и тогда поиском ошибки зани-

рают еще на стадии 0.0.0.1, что весьма печаль-

творению всякого нужного добра в

 

маются все желающие. ;-)

но. Тут есть несколько причин, которых следует

не должно мешать абсолютно ничего.

 

Часть 5. Придание формы, послед-

избегать, если надумаешь сам писать большие

пы, описанные выше и появляющиеся

 

и кульные проги. Одна из главных - это ситуа-

ших проектов, спокойно могут быть

ние штрихи

 

 

 

 

 

 

 

ция, в которой координатор бросает работу над

такими же и у “частного”

 

 

 

 

 

 

 

 

 

 

 

 

 

проектом. Говорят, что координатор/руководи-

раммера. Только когда он один, он

После того, как набросан основной код, в дело

тель проекта “сгорел”. Обычно это связано с

себе сразу несколько (а то и все) дол

 

вступают всякие дизайнеры и художники. Они

тем, что у координатора пропадает желание что-

и художника, и программера, и

 

 

 

 

 

обычно дорисовывают логотипы, иконки-пик-

либо делать из-за частых препирательств с

злобной старушки-процентщицы. И все

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тограммы, красивые заставки и оформляют

программистами, младшими координаторами

ны. Ведь интересной работы - как

 

диалоги. Диалоги оформляются с точки зрения

(если таковые есть), художниками и прочей со-

ва - много не бывает. ;-)

 

 

 

 

 

 

эргономичности - то есть удобства для частого

чувствующей братией, которая считает, что “вот

 

 

 

 

 

 

 

 

 

 

 

 

использования. Злобный юзер и сам может не

эту фичу надо убрать и переназначить эту кно-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Годовая и Полугодовая подписка на 2001 год

на журналы издательства «Гейм Лэнд»

Подписка в России

Подписка на территории России оформляется во всех отделениях связи

по «Объединенному Каталогу 2001» («Зеленый каталог»).

Для удобства подписчиков все наши издания выделены единым блоком.

Заполни бланк и иди на почту!

Подписка в странах СНГ и Балтии

Подписка в этих странах оформляется по Специальному Каталогу. Подписные индексы на журналы:

«Хакер» - 29919 «Страна Игр» - 88767

«Страна Игр + CD» - 86167 «Official PlayStation» - 87022 «Official PlayStation + CD» - 86894

Зарубежная

подписка

Теперь можно Оформить подписку в США,

Германии, Англии, Франции и других странах Европы.

Подписка производится ON-LINE

на любой срок: Intertet: www.pressa.de E-mail: service@pressa.de Tel: (0341) - 9605279 • Fax: (0341) - 9605636

#

16

0010

КОНСТРУКТОР

 

 

>СПЕЦВЫПУСК #4

 

“HACKED BY” DELPHI, VCC+

Поцелуев Виталий aka virvit (Virvit@udm.ru)

Сначала на Дельфях

Начнем с Delphi 5.0. Как только ты запустишь Дельфи, у тебя автоматом создаются новый проект и форма. Не бойся, форма не военная, а автомат не Калашникова ;).

Теперь сверху переходишь на вкладку Стандартные и ищешь там букву “A”. Это так называемый Label, в переводе с английского “метка”. Вот он нам и покажет заветное “Hello, World!!!”. Давишь на эту буковку мышатиной, а затем кликаешь на форме (окошечке) и ... у тебя появляется черная штуковина с надписью “Label1”. “Label1” тебя не устраивает (и меня тоже), посему дави F11, и слева у тебя появится окошко “Object Inspector” (налоговый - тьфу, Объектный Инспектор).

В нем ты можешь задавать всякие настройки объекта (в данном случае Label’а). Итак: изменить текст - Caption, цвет - Color, прозрачность - Transparent, шрифт и вс¸ с ним связанное - Font...

Ну все, теперь вводишь нашу фразу “Hacked

By”, или, если ты миролюбивый человек - фразу “Hello World” (кстати, это была первая фраза которую произнесла виртуальная ведущая новостей Ananova). Получилось? Если нет, то выпей чаю, и прочитай заметку еще раз. Наше приветствие будет отображаться в маленьком окошке. А что главное в окнах? То, что их можно закрыть. Ведь мы же не заподлянку сами себе пишем, верно? Поэтому сейчас мы сделаем батон, пимпу - в общем, то, на что можно нажать, кликнуть, давануть, чтобы захлопнуть форточку с нашим детищем.

 

 

КОНСТРУКТОР

 

 

 

>СПЕЦВЫПУСК #4

0011

17

 

ÍÀ

++ È VB

 

 

На той же вкладке Standard есть нечто похожее

Ну и на сладкое... Вижуал С++ (не

Из появившегося окошка ты можешь выбрать

 

 

 

 

на кнопку с надписью “OK”. Кликай на не¸, за-

путать с аспирином С)

вс¸, что душе угодно, но делать прогу “мето-

 

 

тем на форму. Как менять свойства объекта, я

 

 

 

дом тыка” не советую. Выбираешь “MFC

 

 

 

 

 

 

 

писал выше. А теперь самое интересное :-). Два

Ты знаешь, на ч¸м хацкеры пишут свое “мягкое

AppWizard(exe)”, справа вверху пишешь имя

 

раза кликни батон на тво¸м грызуне и перед то-

варе” (не варение)? На

Что будем ваять?

 

 

бой открылось окно с непонятными словами. Не

чем созданы все эти

 

 

бойся, они на нафиг не нужны. Заметь, что кур-

пинги, нюки, портскан-

Пожалуй, крекер

 

 

сор стоит между begin и end. Пиши: Close; - эта

неры, флудеры, сниф-

Интернета мы оставим

 

команда закрывает тво¸ окошечко и программу.

феры и прочая хакер-

на потом, а пока

 

 

Поздравляю: твоя первая прога готова - дави F9.

ская софтварезная ла-

 

 

А теперь на Васике

буда, которую ты с гор-

напишем что-нибудь

 

 

дым видом юзаешь?

попроще. Например,

 

 

 

 

Конечно на Visual Ц с

фразу Hacked By!!! Äà,

 

 

Теперь сделаем это же самое на Visual Basic. Де-

двуми плюсами! Посе-

 

 

ëàòü

будем на 4 версии. Если ты смог выполнить

му-поэтому ты сейчас

да, все как в школе:

 

 

 

 

âñå,

что было описано выше на Дельфи, то на

(с помощью Х, конечно)

твоя первая прога бу-

 

 

васике управишься за 5 сек. При запуске Васи-

напишешь наше завет-

 

 

лия у тебя снова открывается окно (куда же без

íîå “Hello, World!!!” íà

дет просто выводить

 

 

 

 

них?) со всякими пока еще непонятными тебе

этом “СПЯ” (Супер-Пу-

текст в окне, а что

 

 

кнопенциями сверху и слева.

пер Языке). А там уже и

поделаешь? Думаешь,

 

 

 

 

до снифферов с бомбе-

 

 

 

 

рами недалеко :). Пи-

легко быть хакером?

 

 

 

 

сать будем на VCPP++

 

проекта (Project name) и давишь “OK”. Далее

 

 

 

 

 

 

 

 

 

5.0 , так как это наиболее распростран¸нная

 

 

 

 

версия. После запуска и открытия File -New ты

внимательно разглядываешь следующее

 

 

 

 

увидишь нехилый списочек проектов.

окошко.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Хотя нет. Слева ты найдешь уже знакомую тебе букву “A” и тот же батон, только без “OK”. Ну а

свойства объектов задаются здесь справа, в окне Properties.

Отличие лишь в самом языке, то есть, чтобы закрыть программу надо писать не “Close;” как в Делфи, а “Unload <имя формы>”. Читай по буквам: Unload Form1. Кликаешь два раза на свою кнопку и пишешь “Unload Form1”. Вот и все. Теперь давишь F5 и бежишь за друганом - гамером, дабы показать какой ты кульный программист. Тут главное не перепутать друга-гамера с другом-программером ;).

18

 

0012

КОНСТРУКТОР

 

 

 

 

 

 

>СПЕЦВЫПУСК #4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Значит, так. Ты хочешь стать кодером. Нет, я знаю, что изначально ты хотел стать хакером, но фишка в том, что настоящий кул-хацкер обязательно должен уметь кодить, ну хотя бы чуть-чуть.

То есть, если ты можешь узнать ip чела и потом нюкнуть

его - это круто и стильно, и свою подружку ты конечно этим впечатлишь, но... Но не

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

слова-то когда-нибудь слышал? Нет?! Ну и не забивай ими голову...”NEXT”

Следующий диалог озадачит тебя вот такими вопросами.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дальше вс¸ интуитивно понятно: разверни па-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

почку слева, в ней разверни Dialog и дважды

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нажми на второй элемент списка. В середине

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тво¸ окно, справа элементы. Кликай правым

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

батоном крысы на текст “ TODO: Place dialog

 

 

 

 

 

 

 

 

 

 

 

 

 

 

controls here.” И заходи в Properties. Справа,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где написано “ TODO: Place dialog controls

 

 

 

 

 

 

 

 

 

Берешь словарик

англо-русский, и, водя ука-

 

 

 

here.” Пиши “HAСKED BY!!!”. Теперь вс¸ это

 

 

 

 

 

 

 

зательным пальцем правой руки по экрану, а

 

 

дружно сохрани и запусти, нажав на красный

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

средним пальцем правой руки по словарю

 

 

 

знак восклицания сверху.

 

 

 

 

 

 

 

(интересно как это у тебя такое получится),

“Желаете ли вы сгенерировать

комментарии

 

Добро пожаловать в нашу банду!

 

 

 

 

 

 

 

переводишь все содержание окошка. Пример-

для исходного кода?” - Да, please. - No, паси-

 

 

 

 

 

 

 

 

ный смысл предоставляемого выбора таков:

ба. “Как вы желаете использовать MFC биб-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Одностраничный документ, Многостраничный

 

лиотеку” - Как DLL. - Как статически подклю-

 

Ну вот, сегодня ты написал ЦЕЛУЮ програм-

 

 

 

 

 

 

 

документ, Базовый диалог. Чуть пониже Ц++

ченную библиотеку. Оставь все по дефолту и

 

му!!! Свою! Теперь тебе осталось только выб-

 

 

 

 

 

 

 

спрашивает язык на котором будет выражать-

...правильно: “NEXT”. И вот долгожданный фи-

 

рать, какой язык тебе больше понравился,

 

 

 

 

 

 

 

ся твоя прога. Ставь английский - хакеру он

íèø!!! Äàâè “FINISH”.

 

купить пару толстых книг о нем и прочитать

 

 

 

 

 

 

 

 

 

 

 

роднее :), а на русском в школе ты крестики -

 

 

 

 

их. Ну, или, по крайней мере, дочитать этот

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нолики играл. Короче, выбираешь Dialog

Теперь она что-то там напишет и спросит:

спец до конца. Все просто, правда? Так что,

 

 

 

 

 

 

 

 

 

based и NEXT. Теперь он тебя спросит про

“OK” или “CANCEL”. Смотри не промахнись,

пиши крутые проги, и удача с успехом придет

 

 

 

 

 

 

 

 

 

всякие приятности вроде Windows Socket,

когда будешь нажимать на кнопки... Иди пос-

к тебе сама. И помни: пиво и труд вс¸ перет-

 

 

 

 

 

 

 

 

 

ActiveX control, 3D control и пр. и др. Ты такие

тавь чайку пока она будет генерить код...

ðóò :-).