Июнь 2010

Самоучитель по креативному веб-дизайну. Книга 4, стр.71

http://www. NVBizNet. com/default. htm.

Файл расписания, файл перенаправления и ASP-страница со сценарием, ис —

пользующим для выборами показа баннера Ad Rotator, доступны для выгрузки на

сайте http://www. diasoft. kiev. ua.



Отслеживание показов и посещений

в Microsoft Banner Ad Rotator



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

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

Глава 11. Активные серверные страницы (ASP) 60 1





или специальных предложениях, доступных на том же сайте. Например, на сайте

Amazon. com (крупный онлайновый магазин, торгующий, в частности, книгами —

прим, перев.) могут присутствовать баннеры, рекламирующие книги из списка бе — стселлеров или новые произведения популярных авторов. Тем не менее, предназ — начен ли баннер для продажи товаров, описываемых на сайте, или же для при —

влечения посетителей на другие торговые сайты, рекламодателей в принципе интересуют два показателя: показы и посещения.

Показы {impressions) — это количество раз, когда посетители видят конкрет- ный баннер. Чем больше показов, тем более вероятно, что реклама попадется на глаза посетителю, который пожелает приобрести рекламируемый товар. Показы зависят и от того, сколько раз ротатор баннеров показывает на Web-странице баннерные изображения, и от того, как часто посетители заходят на страницу. Например, баннер, расположенный на странице, запрашиваемой 100 раз в час,

Самоучитель по креативному веб-дизайну. Книга 4, стр.72

генерирует меньше показов, чем баннер на странице с 1000 посетителями за то же время. Чем больше посетителей, которые видят рекламу, и чем чаще ротатор показывает баннер, тем выше вероятность, что посетители щелкнут на баннере и купят рекламируемый товар.

Посещения еще более важны, чем показы. Посещение (click-through) возника — ет, когда посетитель щелкает на баннере, чтобы перейти на Web-страницу с рек — ламируемым товаром или услугой. Вспомните коммерческие телепередачи. Одно дело — показать рекламу зрителю, и другое дело (более важное, с точки зрения рекламодателя) — убедить зрителя пойти и купить товар.

Если телевизионным рекламодателям для определения, сколько раз коммер — ческая телепрограмма приводит к покупкам, приходится полагаться на марке — тинговые исследования, то вы можете отследить реакцию посетителя на баннер более точно. С помощью ASP-сценариев можно подсчитывать и хранить в базе данных количество демонстраций баннера ротатором (т. е. количество показов) и

Самоучитель по креативному веб-дизайну. Книга 4, стр.73

как часто посетители щелкают на баннере для получения дополнительной ин —

формации (т. е. количество посещений). Рекламодатели пользуются статистикой показов и посещений для определения эффективности рекламной кампании. А

владельцы Web-сайтов используют эту же статистику для определения рекламно —

го рейтинга: чем больше среднее количество показов и посещений, тем больше рекламодателей захотят разместить рекламный баннер на этой Web-странице.



ПРАКТИКУМ

Для накопления данных о показах и посещениях для последующего анализа сна — чала нужно создать в базе данных SQL-таблицу с помощью приведенных ниже SQL-операторов:

USE hwdtt;

CREATE TABLE bannerAdStats

(targetURL VARCHAR(60) NOT NULL,

imageURL VARCHAR(60) NOT NULL,

impressionCount INTEGER,

clickThroughCount INTEGER) ;

60 2 Глава 11. Активные серверные страницы (ASP)





Первый оператор этого примера указывает СУБД, что надо использовать базу данных hwdtt. Второй оператор создает SQL-таблицу (bannerAdstats), в кото — рой ASP-сценарии будут хранить счетчики показов и посещений.

Приложение Microsoft Banner Ad Rotator (стандартно поставляемое вместе с

Personal Web Server (PWS) и Internet Information Server (IIS) версий 4 и 5) выбира —

ет баннер из списка, находящегося в файле «расписания ротатора», и отображает

его на Web-странице. Для отображения баннера с помощью Ad Rotator в ASP — страницу потребуется вставить приблизительно такой сценарий:



SET adRotatorObj — Server. CreateObject(«MSWC. AdRotator»)

Response. Write

adRotatorObj. GetAdvertisement( _

11/hwdtt/BannerAds/AdRotatorSchedule. asp»)

%>

Первая строка этого сценария создает объект Ad Rotator (adRotatorObj), а вызов

метода Response. Write (начинающийся во второй строке сценария) отображает

баннер, ВОЗВращаемЫЙ В результате ВЫЗОВа Метода adRotatorObj. GetAdvertisement.

Для подсчета количества показов, то есть сколько раз метод GetAdvertisement выбирает конкретный баннер, в начало ASP-страницы, на ко — торой отображается этот баннер, необходимо поместить следующую функцию:



Function DisplayRotatorAd(adRotatorObj, rotatorScheduleFile)

Dim objMySQLCon

Dim strAdRotatorHTML, intlmageStart, strlmageURL

1 Указание ротатору, чтобы он сгенерировал HTML-код для отображения баннера

StrAdRotatorHTML = _

adRotatorObj. GetAdvertisement(rotatorScheduleFile) .

‘ Выделение URL-адреса графического изображения из полученного HTML-кода

intlmageStart = InStr(l, strAdRotatorHTML, «image=») + б

strlmageURL = Mid(strAdRotatorHTML, intlmageStart,

InStr(intlmageStart, strAdRotatorHTML, «»"») — intlmageStart)

1 Соединение с СУБД и обновление счетчика показов

Set objMySQLCon = Server. CreateObject(«ADODB. Connection»)

With objMySQLCon

.ConnectionString =

«DRIVER={MySQL};SERVER=NVBizNet;UID=root;PWD=;DATABASE=hwdttM

.Open

.Execute «UPDATE bannerAdstats » &

«SET impressionCount = impressionCount + 1 » &

«WHERE imageURL = ‘ » & strlmageURL & » ‘ »

.Close

End With

DisplayRotatorAd = strAdRotatorHTML End Function

%>

Операторы в первой половине данного сценария вызывают метод ротатора GetAdvertisement, чтобы сгенерировать HTML-код отображения баннера в виде гиперссылки, расположенной на Web-странице. Сценарий разбирает HTML-код,

Глава 11. Активные серверные страницы (ASP) 60 3





полученный от ротатора, и выбирает из него URL-адрес изображения, использу — емого в баннере. Затем операторы во второй половине сценария устанавливают

соединение с СУБД MySQL и обновляют счетчик показов г в SQL-таблице

bannerAdStats.

Обратите внимание, что функция DispiayRotatorAd() возвращает результат

ВЫЗОВа метода adRotatorObj. GetAdvertisement. ПОЭТОМУ В ПерВОМ Примере СЦе —

нария этого раздела следует заменить вызов метода GetAdvertisement на вызов

функции DispiayRotatorAdo, как показано ниже:





SET adRotatorObj — Server. CreateObject(«MSWC. AdRotator»)

Response. Write _

DisplayRotatorAd(adRotatorObj,

«/hwdtt/BannerAds/AdRotatorSchedule. asp»)

%>

Если вы прочли предыдущий раздел, то должны уже знать, что метод

GetAdvertisement генерирует HTML-код наподобие следующего:





URL=http://www. NVBizNet. com/default. htm&

image=/BannerAds/NVBizNet. GIF»>

alt=»Обращайтесь на сайт NVBizNet. com за советами по Web-дизайну»

width=»400″ height=»60″ border=»l»X/a>

Конкретный HTML-код, сгенерированный в результате вызова метода

GetAdvertisement в вашем сценарии, будет определяться описаниями баннеров

в соответствующем файле расписания ротатора. Но в любом случае атрибут href созданного дескриптора будет указывать на файл перенаправления Ad Rotator. (URL-адрес файла перенаправления указывается после ключевого слова REDIRECT в первой строке файла расписания ротатора.)

Самоучитель по креативному веб-дизайну. Книга 4, стр.74

После того как посетитель щелкнет на баннере, браузер передает сценарий

из строки запроса файла перенаправления, задающий целевую страницу баннера и путь к файлу рекламного изображения. В рассматриваемом примере целевая

Страница баннера — http: //www. NVBizNet. com/hwdtt/BannerAds/AdRedirect. asp,

и файлу перенаправления передается строка запроса:



«URL=http://www. NVBizNet. com/default. htm &image=

/hwdtt/BannerAds/NVBizNet. gif»



Сценарий, содержащийся в файле перенаправления ротатора (в нашем приме —

ре — AdRedirect. asp), отвечает за перенаправление браузера на целевую страни —

цу баннера. Значит, в файле перенаправления также можно обновлять статистику посещений баннера. Для увеличения счетчика посещений для баннера, на кото — ром щелкнул посетитель, используйте в файле перенаправления ротатора при — мерно такой код:



Dim objMySQLCon, strlmageURL, strTargetURL

1 Разбор строки запроса в две переменные

strlmageURL = Request. QueryString

strTargetURL = Request. QueryString(«URL»)



604 Глава 11. Активные серверные страницы (ASP)





1 Открытие соединения с СУБД и увеличение счетчика посещений

Set objMySQLCon = Server. CreateObject(«ADODB. Connection») ^ B With objMySQLCon

.ConnectionString = _

«DRIVER={MySQL};SERVER=NVBizNet;UID=root;PWD=;DATABASE=hwdtt»

.Open

.Execute «UPDATE bannerAdStats » & _

«SET clickThroughCount = clickThroughCount + 1 » &

«WHERE imageURL = ‘ » & strlmageURL & » ‘ » & ._

«AND targetURL = ‘» & strTargetURL & » ‘ »

.Close

End With

Response. Redirect Request. QueryString(«URL»)

%>

Данный сценарий выбирает URL-адреса целевой страницы баннера и графи —

ческого изображения из строки запроса, передаваемой ASP-странице (AdRedirect. asp), которая содержит этот сценарий. После обновления таблицы bannerAdStats сценарий закрывает соединений с базой данных и затем вызыва —

ет метод Response. Redirect для перенаправления браузера на целевую страницу баннера.



ПРИМЕЧАНИЕ Чтобы в сценариях, приведенных в данном разделе, SQL-операторы UPDATE работали корректно, нужно поместить URL-адреса и изображения баннера, и его целевой страницы в SQL-таблицу, в которой хранятся счетчики показов и посещений (в данном случае — bannerAdStats). Поэтому каждый раз при добавлении описания баннера в

файл расписания Ad Rotator выполните в СУБД приведенный ниже оператор INSERT:



INSERT INTO bannerAdStats VALUES (bannerRedirectionURL, bannerImageURL, 0,0) ;





Подставьте вместо bannerAdStats свою таблицу со статистикой по баннерам,

вместо bannerRedirectionURL — URL-адрес целевой страницы баннера и вместо

banner imageURL — URL-адрес графического изображения баннера.

Описание файла расписания и файла перенаправления Ad Rotator можно най —

ти в предыдущем разделе. ASP-страница, отображающая баннер, файл расписа- ния и файл перенаправления, описанные в данном разделе, доступны для выг —

рузки на Сайте http://www. diasoft. kiev. ua.



Обработка ошибок типа «Код 404: файл не найден11

В заголовок каждого HTTP-сообщения, посылаемого браузеру, Web-сервер включает код состояния, показывающий, насколько успешным был запрос брау- зера. Коды состояния в диапазоне 200—299 означают, что запрос был успешным,

Самоучитель по креативному веб-дизайну. Книга 4, стр.75

а коды в диапазоне 400—499 означают неудачный запрос из-за какой-то ошибки

в запросе браузера. Например, сервер посылает в HTTP-заголовке код состояния

200, если запрос GET браузера (т. е. запрос браузера на выборку Web-страницы)

завершился успешно. И сервер отправляет в HTTP-заголовке код состояния 404 для указания, что запрос GET браузера завершился неудачно, так как сервер не смог найти запрошенную браузером Web-страницу.

Глава 11. Активные серверные страницы (ASP) 60 5





Кроме кода состояния 404 сервер обычно посылает совершенно бесполезную Web-страницу общего назначения с заголовком «HTTP 404: файл не найден», если посетитель ошибся при наборе Web-адреса или щелкнул на гиперссылке, указывающей на уже не доступную на Web-сервере страницу. Стандартная стра — ница с сообщением об ошибке 404 бесполезна, поскольку не содержит никакой дополнительной информации. Текст этой страницы сообщает посетителю, что запрошенная Web-страница не существует, но ему не предлагается никакая поис- ковая форма или гиперссылки, которые могли бы помочь найти на этом Web — сайте другие ресурсы. К счастью, разработчики начали создавать специализиро — ванные страницы с сообщением об ошибке 404, более дружественные к посетителю.

Качественная страница с сообщением об ошибке (если таковую страницу вообще можно назвать «качественной») должна обладать следующими характеристиками:

• Страница сообщает, что обнаружена ошибка, в терминах, понятных посе- тителю.

• Б странице содержатся извинения по поводу ошибки — даже если она произошла из-за ошибочного набора Web-адреса.

• Страница содержит ссылки на страницу поиска по сайту и на наиболее популярные ресурсы сайта.

Чтобы увидеть пример таких доступных в Internet страниц специальной обра — ботки ошибок, стоит посетить следующие Web-сайты:

• http://www. microsoft. com/invaiidURL. Карта сайта, выпадающие списки

гиперссылок на области сайта с описанием продукции, поддержки и об — щей информации, и форма поиска.

• http://www. yahoo. com/InvalidURL. ССЫЛКИ на перечень Продукции K0M- пании, кнопки, щелкнув на которых, посетитель может попасть в самые популярные области сайта (аукционы, служба быстрых сообщений, элект — ронная почта и т. д.), а также поисковая форма.

• http://www.4guysfromrolla. com/InvalidURL. Заглавная Страница Сайта, ссылки на ресурсы сайта (разбитые по разделам, обозревателям и типу ин — формации), ссылки на наиболее посещаемые страницы сайта и даже ссыл —

ка на Web-страницу, где рассказано, как создать свою собственную страни —

цу с сообщением об ошибке 404.



ПРАКТИКУМ

Чтобы заменить стандартную страницу об ошибке 404, необходимо выполнить две вещи: создать специальную страницу с сообщением об ошибке и указать серверу, чтобы он отправлял вместо стандартной вашу страницу Например, чтобы отобра —

Самоучитель по креативному веб-дизайну. Книга 4, стр.76



HTML and Web Design Tips & Techniques

CTpaHH4a не HanfleHa



Response. Write «Извините, запрошенный вами документ (» & _

BadURL & «) не найден на сервере NVBizNet. com.»

%>

Возможно, вы ввели неверный адрес, либо запрошенная страница была перемещена в другое место.

При обнаружении этого запроса Web-мастеру



href=»mailto:kki@NVBizNet. com?

subject=»Kofl 404: страница не найдена на NVBizNet. com»>

(Конрад Кинг — kki@NVBizNet. com) автоматически было послано письмо с извещением, что на сайте отсутствует документ. В ближайшее время он исправит ситуацию.

Надеемся, что одна из следующих ссылок поможет вам найти нужный документ или перейти на другую интересную вам ссылку:



    href =»http: //www. NVBizNet. com»>NVBizNet. com

    страница)



    Карта сайта

    страницы —>


    Или… введите одно или несколько ключевых слов для поиска на

    сайте требуемой страницы:




    input type=»submit» value=»Поиск» name=»Search»>

    input type=»text» name=»keywords» size=»30″>


Самоучитель по креативному веб-дизайну. Книга 4, стр.77

После рассмотрения средств защиты мы перейдем к изучению способов повы- шения производительности Web-сайта за счет устранения узких мест, снижаю — щих эффективности выполняемых Web-сайтом операций. Вы рассмотрите цепоч —

ку производительности Web-сервера, которая начинается с соединения сервера с сетью Web, проходит через ОЗУ сервера, диски, кэширование и т. д. Другими словами, эта глава поможет вам довести свой Web-сайт до настоящего професси — онального уровня.



Угроза атак со стороны хакеров

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

• За счет перехвата, просмотра и, возможно, изменения содержимого HTTP — сообщений, которыми сервер обменивается с браузерами.

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

• За счет запуска на сервер тысяч запросов, которые потребляют ресурсы сайта и затрудняют возможность отправки отклика другим посетителям.

• За счет инфицирования вирусами файлов, дисков или входящих на сайт сообщений электронной почты.

• За счет взлома CGI-сценариев и получения доступа к серверу.



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



Каким образом хакеры перехватывают и изменяют сообщения в сети?

Когда программа передает данные по сети Internet на удаленный компьютер, сообщения не просто следуют непосредственно от компьютера-отправителя к

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

Глава 12. Безопасность и производительность 611





Для более полного понимания процесса перехода сообщения от одной систе — мы к другой при его прохождении по сети Internet выполните команду tracert

(имя этой команды представляет собой сокращение от английских слов trace

route — отследить маршрут), выводящую список сайтов, через которые сообще — ние проходит до попадания на удаленный компьютер. Приведенный ниже лис — тинг содержит пример маршрута, пройденного сообщением от компьютера науч — ного редактора этой книги до сайта yahoo. com:



612 Глава 12. Безопасность и производительность





16 673 мс 1277 мс 796 мс so-0-0-0.mpl. SanJosel. level3.ne t

[64.159.1.133 ]

17 741 мс 701 мс 727 мс gige9-l. ipcolo3.SanJosel. Level3.ne t

[64.159.2.73 ]





Трассировка завершена.

unknown. Level3 .net [64 .152 . 69 . 30]

wl. re. vip. scd. yahoo. com [66 . 218 . 71.198]



В приведенном примере для попадания на сайт yahoo. com сообщение про — шло через 18 промежуточных сайтов. При каждом попадании сообщения на но — вый сайт система, на которой находится этот сайт, проверяет, предназначено ли сообщение для нее. В случае положительного результата проверки сетевое про — граммное обеспечение передает сообщение соответствующей программе, напри —

Самоучитель по креативному веб-дизайну. Книга 4, стр.78

мер, почтовой программе или Web-серверу. Если же сообщение предназначено

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

В любом месте маршрута следования сообщения хакер, через систему которо —

го проходит сообщение, может прочитать и изменить содержимое сообщения. Предположим, например, что сообщение содержит данные о кредитной карточ — ке. При прохождении сообщения через систему хакера хакер имеет возможность прочесть и сохранить (то бишь «позаимствовать») данные (см. рис. 12.2).

В главе 3 при рассмотрении HTML-форм мы говорили, что при отправке по — сетителем содержимого формы браузер передает их серверу с помощью протоко —

ла HTTP. К сожалению, HTTP-протокол предусматривает передачу сообщений в

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

пакеты сообщений, выгрузите и установите у себя программу CommView, которая

ДОСТупна на Странице ПО адресу http://webattack. com/get/commview. shtml. С помощью программы CommView вы можете просматривать содержимое различных типов сообщений, поступающих в вашу систему. Так, например, на рис. 12.3 показа — но содержимое HTTP-сообщения, просматриваемого с помощью CommView.





Рис. 12.2. Перехватывая сообщения, хакеры воруют информацию

Глава 12.’Безопасность и производительность 613





Хакер для просмотра содержимого сообщений, проходящих через его компь — ютер, может использовать программу, аналогичную CommView. Поскольку коли —

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

Самоучитель по креативному веб-дизайну. Книга 4, стр.79

Помимо просмотра сообщения, хакер может изменять содержимое перехваты- ваемого им сообщения. Например, предположим, что хакер перехватывает сооб- щение, содержащее заказ на покупку товара. Хакер имеет возможность, как по- казано на рис. 12.4, изменить количество покупаемого товара и адрес его доставки. Таким образом, заказанный вами товар получите не вы, а хакер («при — ятная» новость, не правда ли?).

Для защиты сообщений сайта от перехвата и изменения хакерами можно вос — пользоваться шифрованием и защищенными Web-страницами, которые будут

рассматриваться ниже в этой главе в разделе «Каким образом шифрование защи — щает передаваемые по сети сообщения?».

614 Глава 12. Безопасность и производительность







Каким образом хакеры попадают в систему?

В сети Internet многие системы дают пользователям возможность входить с удаленных систем. Так, например, компания может открывать вход в свою кор — поративную сеть для коммивояжеров, чтобы они имели возможность просмот- реть, создать или обновить данные, или же просто прочитать свою электронную почту. Аналогично, система может быть открыта для входа с удаленных компью — теров для программистов, Web-разработчиков и других пользователей, которые выгружают или загружают файлы. В зависимости от конфигурации системы, пользователи, как показано на рис. 12.5, получают удаленный доступ к системе через модемное соединение или Internet. Если система открыта для удаленного доступа, хакеры получают возможность использовать программы и службы уда — ленного доступа для взлома такой системы.













Действительный пользователь

















Хакер





Рис. 12.5. Удаленный доступ предоставляет пользователям (и хакерам), которые физически не соединены с сетью, способ получения доступа к ресурсам сети

Глава 12. Безопасность и производительность 61 5





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

Самоучитель по креативному веб-дизайну. Книга 4, стр.80

• С помощью программы взлома паролей, которая производит атаку на файл паролей системы.

• За счет выполнения атак на учетные записи по умолчанию, для которых администраторы не изменили пароли.

• Просто спросить имя пользователя и пароль у человека, который имеет

i доступ к системе.



Программное обеспечение для взлома паролей

Взлом паролей — это метод, используемый хакерами для получения доступа к

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

вания пароля. Если хакер введет неправильный пароль, скажем, пять раз, опера — ционная система заблокирует вашу учетную запись и ни вы, ни хакер не сможе —

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

Раньше, когда операционные системы не блокировали учетные записи после нескольких неправильных вводов паролей, хакеры могли запускать специальные

программы, называемые программами проверки паролей, которые многократно вводили различные комбинации имени пользователя и пароля. С помощью про —

грамм проверки паролей хакеры имели возможность буквально за несколько ми — нут проверить тысячи комбинаций имени пользователя и пароля.

Большинство операционных систем хранят данные об учетных записях пользователей (включающие имя пользователя и пароль) в файлах. Для исключе —

ния возможности просмотра пользователями данных о паролях, как правило, файл учетных записей шифруется. К сожалению, в сети Internet можно найти не — мало программ, которые дешифруют и выводят на экран содержимое файла учет — ных записей для операционных систем Unix/Linux, Windows NT и даже Windows



Полезные ссылки
Случайные записи
  • 27.02.2011">Руководство по actionscript. часть 6, стр. 048
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.74
  • 17.11.2011">Обзор SandyBridge E
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.111
  • 14.03.2011">Руководство по actionscript. часть 3, стр. 063
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.99
  • 27.02.2011">Руководство по actionscript. часть 6, стр. 026
  • 13.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.102
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.65
  • 25.02.2011">Руководство по actionscript. часть 6, стр. 090
  • 14.08.2011">Система видеонаблюдения – выбери лучшее
  • 02.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.116
  • 03.03.2011">Руководство по actionscript. часть 5, стр. 075
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 079
  • 17.03.2011">Руководство по actionscript. часть 2, стр. 138
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...