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

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Наверное, единственный benchmark с GUI

Занимательная статистика openbenchmarking.org.

Проектбылзапущен28 февраля2011 годанавыставкеSouthern California Linux Expo. Всерединеиюняподвелинекоторуюстатистику:

былозагружено41258 результатовтестов;

насчитано89,217 запусковPTS (отсчетвелсяпообращениямк openbenchmarking.org);

собранастатистикапо32189 PCI-устройствами16536 USBустройствам;

обработано325351 поисковыхзапросовпользователей.

Самыепопулярныекомпонентынамоментнаписаниястатьи:

ОС— Ubuntu

CPU — Intel

GPU — Nvidia

Производительматплат— Asus

HDD — Samsung

FS — ext4

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

$ mbw 512 | grep AVG

Здесь512 —размермассивавМб. Надопонимать, чтореальнодлятеста нужновдваразабольшесвободнойпамяти.

Врезультатевыполненияэтойкомандымыполучимтристрочки— по однойдлякаждогопроводимогоmbw-теста, гдесамоеинтересное— в последнейколонке(собственно, пропускнаяспособность). Наноутеу меняполучилисьследующиецифры:

AVG Method: MEMCPY Copy: 2765.609 MiB/s

AVG Method: DUMB Copy: 4248.589 MiB/s

AVG Method: MCBLOCK Copy: 11930.338 MiB/s

Анарабочемкомпе:

AVG Method: MEMCPY Copy: 5372.418 MiB/s

AVG Method: DUMB Copy: 7563.436 MiB/s

AVG Method: MCBLOCK Copy: 13755.269 MiB/s

Ужезнакомыйнамsysbench тожеумееттестироватьОЗУ.

$ sysbench --test=memory run

Тест CPU с помощью архиватора 7-zip

Иопятьсамоеинтересное—этопоследняястрочка.

На ноуте:

execution time (avg): 32.6897

На рабочем компе:

execution time (avg): 29.8387

ПараметровтестированияОЗУуsysbench побольше, чемпараметров тестированияCPU. Поумолчаниютестируетсяоперациязаписи. Тестированиеоперациичтениябудетвыглядетьтак:

$ sysbench --test=memory --memory-oper=read run

Уменяэтоттестзанял20,0857 наноутеи19,5404накомпе.

HDD

HDD всовременныхконфигурацияхчастоявляетсяузкимместом. Пожалуй, самыйпростойспособузнатьегоскорость—спомощьюhdparm:

hdparm -t /dev/sda

Наноуте2,5"HDD с5400RPM выдаетрезультатв75,80 MB/sec. SSDIntel 320 можетпохвастаться222,93 MB/sec. Тествыполняетпростоепоследовательноечтение, поэтомунеоченьинформативен.

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

seqrd — последовательноечтение;

seqwr— последовательнаязапись;

seqrewr — последовательнаяперезапись;

rndrd— случайноечтение;

rndwr — случайнаязапись;

rndrw—комбинацияслучайныхчтенияизаписи.

Извсехэтихрежимовявыбралпоследовательныеислучайныечтениеи запись. Допустим, дляначалапротестимпоследовательноечтение. Преждечемзапуститьтест, нужносгенеритьдлянегофайлы:

$ sysbench --test=fileio --file-total-size=10G \

--file-test-mode=seqrd prepare

Втекущемкаталогепоявитсяроссыпьфайловспрефиксомtest.Опция '--file-total-size' нужна, чтобынивелироватьвлияниекешаОС, еезначениедолжнобытьбольшеобъемаОЗУ. Теперьзапустимтест:

$ sysbench --file-total-size=10G --test=fileio \

--file-test-mode=seqrd run

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

XÀÊÅÐ 09 /152/ 2011

099

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

UNIXOID

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Тестовый пакет sysbench: последовательное чтение данных

Приберемзасобой(удалимтестовыефайлы):

$ sysbench --test=fileio --file-total-size=10G \

--file-test-mode=seqrd cleanup

Длявинтавноутеуменяполучилисьследующиезначения:

*seqrd — 42.675Mb/sec, 2731 IOPS

*seqwr — 47.377Mb/sec, 3032 IOPS

*rndrd — 1.3463Mb/sec, 87 IOPS

*rndwr — 1.5153Mb/sec, 97 IOPS

ДляSSD:

*seqrd — 263.1Mb/sec, 16838 IOPS

*seqwr — 121.95Mb/sec, 7804 IOPS

*rndrd — 390.63Mb/sec, 25000 IOPS

*rndwr — 70.559Mb/sec, 4515 IOPs

Следующийповозможностямбенчмарк— bonnie++. Онтестируеттри вещи: скоростьчтенияизаписи(посимвольноипоблочно), количество запросоввсекундуиколичествооперацийсметаданнымифайлав секунду. Полезнымдополнениемслужитфиксированиеиспользования CPU (впроцентах) вовремятестов. Выводbonnie++ представляетиз себяplain-text с80 колонками, окоторыйможнозапростосломатьглаза. Поэтомурезультатлучшесразуконвертитьвhtml:

$ bonnie++ -n 1024 | tail -1 | bon_csv2html \

> bon_result.html

Опция'-n' указываетнаколичествофайлов, которыебудутсозданы притестированииоперацийсметаданными(указанноевопциичисло умножаетсяна1024). Увеличениеэтогочислаотносительнодефолтногозначениянужновтомслучае, еслиоперациипозаписи/чтению метаданныхпроходятслишкомбыстро, ибенчмаркнеуспеваетзафиксироватьвремя(втакомслучаевполевремениэтоготестабудет

«+++++»).

НаSSD скоростьпоблочнойпоследовательнойзаписи(129 Mb/sec)и чтения(315 Mb/sec)оказаласьнесколькобольше, чемвsysbench. Пустые файлымогутсоздаватьсясоскоростью48348 операцийвсекунду, а удаляться— соскоростью6464 операцийвсекунду. Метаданныемогут читатьсясоскоростью1090971 попугаеввсекунду.

И, наконец, наверное, самаяфичастаяутилита—iozone.Запусктестас выводомрезультатоввфайл:

$ iozone –Ra –g 10G > iozone.xls

Где'-a' — запусквсехтестов,'-R'—генерироватьсовместимыйсExcel вывод,'-g' указываетмаксимальныйразмерфайладлятестирования (ондолженбытьбольшеразмераОЗУ). Тутнадобытьготовым, чтона

медленныхдискахэтоттестработаеточеньдолго. Послезавершения тестаiozone.xlsбудетпредставлятьизсебягруппуматриц(пооднойдля каждоготеста), гдестрока— размерфайла, астолбец—размерфрагмен- тачтения/записи.

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

Швейцарскийнож

Обычнобенчмаркипозволяютпротестироватькакую-нибудьоднуподси- стемукомпа. Новстречаютсяиуниверсалы, самыймногообещающийиз которых— Phoronix Test Suite(далеедлякраткости— PTS).Сразуставим емуплюсзакроссплатформенностьилицензиюGPLv3. Установитьего просто— частовстречаетсяврепозиторияхпопулярныхдистрибутивов, например, вUbuntu:

# apt-get install phoronix-test-suite

ПритянетзасобойнесколькозависимостейввидеинтерпретатораPHP ипарыбиблиотек.Каквариант, можноскачатьсофсайта(phoronix-test- suite.com) deb-пакетилиархивсисходниками. ЕстьтакжеLive-версия, носильноустаревшая, крелизу3.4 (ориентировочновсентябре)

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

Доверсии3.0 былGUI, ноегоубрали, таккакбылнаписаннаPHPGTK2, которыйскореемертв, чемжив. Думаю, сильнорасстраиваться из-заотсутствияGUI нестоит— вCLI-интерфейсевсегопаракоманд, вкоторыхсложнопотеряться. Вкрайнемслучае, естьинтерактивная оболочка:

$ phoronix-test-suite interactive

Списоквсехдоступныхтестов:

$ phoronix-test-suite list-available-tests

Припервомзапускеможетзадатьнескольковопросов: согласиться слицензиейиразрешитьанонимнуюотправкуконфигурацииПО/ железаиспособовиспользования. Списоктестовстягиваетсяссайта openbenchmarking.org, поэтомунуженрабочийинетивключенные опцииallow_url_fopen, file_uploads, allow_url_include вPHP.

Всетестыразделенынакатегориивзависимостиотподсистемы,которую нагружают. Полныйсписоквключаетвсебя: System, Processor, Memory, Disk, Graphics,Network—протестироватьможносовершенновсе.

Правда, вNetwork всегоодинтест: Loopback TCP NetworkPerformance.

ВPTS 3.2.1намоментнаписаниястатьибылодоступно118 тестови46 тестовыхнаборов.

Допустим, мыостановилисьнакаком-тотесте. Преждечемегозапускать, разумнопросмотретьинформациюонем:

$ phoronix-test-suite info compress-7zip

Покрайнеймере, этодастколичествотрафика, котороепотребуется, чтобыпрогнатьэтоттест(ибонекоторыетестыкачаютпомногу, ачтобы загрузитьвсетесты, потребуетсяболее10Гб). Кстати, всескачанные тестыспомощьюкоманды

$ phoronix-test-suite make-download-cache

можноперенестивкаталог~/.phoronix-test-suite/download-cache/,

которыйпотомможноразбросатьподругимкомпам. Запусктестаскоростиархивацииспомощью7-zip:

$ phoronix-test-suite benchmark compress-7zip

100

XÀÊÅÐ 09 /152/ 2011

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Бенчмарк производительности оперативки

Тестовый комплект Phoronix Test Suite

ПослезапускаPTS потащитсофсайтаисходникиопределеннойверсии 7-zip ипринеобходимостисоберетих. PTSстараетсянеиспользовать пакетыизрепозиториев, чтобымаксимальноабстрагироватьсяотдистрибутивов, гдемогутприсутствоватькакие-топатчиилидругиеверсии. Единственное— библиотекидлясборкиикомпиляторыустанавливаютсяспомощьюстандартногоменеджерапакетов.

Ксожалению, штатнымисредствамиPTSнельзязапуститьнесколькотестовпоследовательно.Частичнообойтиэтоограничениеможно, используянаборытестов. Списокдоступныхнаборовможнопосмотретьтак:

$ phoronix-test-suite list-available-suites

Кпримеру, списоктестоввнабореcompilation:

*pts/build-apache

*pts/build-php

*pts/build-mplayer

*pts/build-linux-kernel

*pts/build-imagemagick

Кромеобычныхтестовыхнаборовсфиксированнымнаборомтестовесть ещевиртуальныенаборы, количествотестоввкоторыхзависитоткакихлибоусловий.

$ phoronix-test-suite list-available-virtual-suites

Намойвзгляд, самыеполезныеизних:

*all — все тесты;

*installed — все установленные тесты;

*system|processor|graphics — все тесты для тестирования определенной подсистемы.

ОдноизосновныхдостоинствPTS — симпатичныеHTML-отчеты,кото- рыепредлагаетсяпросмотретьвбраузерепослепрохождениякаждого теста. Ихтакжеоченьудобномержитькомандойmerge-results. Нуа списокдоступныхтестовможнопосмотретькомандойshow-result. Собственно, PTS непредставляетизсебячего-тосверхъестественного— простодовольноудобнаяоболочкадлязапускастороннихутилит. Новсе меняется,когдаприходитopenbenchmarking.org — сайт, скоторымPTS тесноинтегрирован. Сэтогосайтатянутсятесты, инанего(прижелании) загружаютсярезультатытестов. Задовольнокороткоевремясмомента запускатамнакопилосьболее300 тысячтестов. Теперьможнолегко сравнитьпроизводительностьразныхаппаратныхкомпонентоввLinux

идругихОС. Илинайтитестысвоейжелезки,чтобыпонять, должный лиунееуровеньпроизводительности, илинадоискатьбаг. Ещеможно сделатьсвоитестыилинаборы, загрузитьихнаopenbenchmarking.org,

ипотомонибудутавтоматическисинхронизироватьсянавсехкомпах

сPTS, как, впрочем, ирезультатытестов.ПопроситьPTS использовать учеткунаopenbenchmarking.org можноследующимобразом:

XÀÊÅÐ 09 /152/ 2011

$ phoronix-test-suite openbenchmarking-login

ЕщеодинплюсPTS—простотасозданияиизменениятестовыхпрофилей инаборов.Вседоступныетестыскачаютсяссайтаopenbenchmarking.org

вкаталогпользователя:~/.phoronix-test-suite/test-profiles/pts,гдеможно точнопосмотреть,какойтестчтоделаети,вслучаечего,поправить. Например,уменятестbuild-phpотказывалсяставитьсяпотому,чтоон пыталсястянутьсзеркалphpверсии5.2.9,которыйуженеподдерживается,иназеркалахегонет.Дляисправленияэтойошибкидостаточнобыло

вфайлеdownloads.xmlисправитьпутинаболееновуюверсиюичуть-чуть поменятьверсиивскриптахpre-иpostinstall.sh.

Сеть

Какобычнотестируютсеть? Вслучаесинетом, пожалуй, самыйпопуляр-

ныйспособ— speedtest.net илиinternet.yandex.ru. Ещеодиндовольно действенныйспособ— какой-нибудьпопулярныйторрент(например, последнийрелизUbuntu).Тоесть, синетомвсеболее-менеепонятно.Но какбытьвслучаеЛВС? Самыйтопорныйспособ—простосоздатьфайл побольшеикидатьегопосетичерезnc.

Насерверезапускаемnc, слушающийпорт1234:

$ nc -q 0 -l 1234 > /tmp/big_file

Наклиентеотправляемнасерверкакой-нибудьбольшойфайл, замеряя время:

$ time cat /tmp/big_file | nc -q0 server_IP 1234

Естьболееточныеинструменты, самыйудобныйизкоторых, намой взгляд, — iperf.

Ставим:

# apt-get install iperf

Наодномизкомповвсетивыполняем:

$ iperf -s

ОткроетсяпортTCP/5001. Надругомкомпевыполняем:

$ iperf -c server_host

ВвыводесерверавколонкеBandwidthотобразитсяпропускнаяспособностьсервера.

Десятьсекунд—маловато, поэтомурекомендуюспомощьюопциикли- ента'-t' установитьхотябышестьдесят.

Поумолчаниюiperf тестируетTCP-протокол. МожнопопроситьеготестироватьUDP, добавивопцию'-u'ксерверуиклиенту. ТестированиеUDP полезнотем, чтоотображаетсяколичествопотерянныхпакетов, почему можносудитьокачествесоединения. z

101

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

UNIXOID

Евгений Зобнин (execbit.ru)

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

ПОСТОРОННИМ ВХОД ВОСПРЕЩЕН

Используем современные методы входа в систему

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

Паролииучетныезаписибылипридуманывэпохубольшихмейнфреймов, движенияхиппи, войнывАфганистанеибольшиханалоговыхмагнитофонов, самымтехнологичнымкомпонентомизкоторых былитранзисторы. Втевременаиспользованиепаролейдлявхода вмейнфреймвыгляделодействительнокруто. Можнобылопридуматькомбинациювродеsexhero илиiamsuperman идействительно гордитьсясобой.

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

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

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

102

XÀÊÅÐ 09 /152/ 2011

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

С помощью fprint_demo можно наглядно озна-

 

комиться с возможностями libfprint

Добавляем модули pam_usb и pam_fprint в стек PAM

Высокотехнологичныйключ

Ключ— самыйпростойиэффективныйметодзащитычего бытонибыло. Мыпользуемсяключамиежедневно: для включениядвигателяавтомобиля, длявходавквартиру, дляотпиранияящиковишкафов. Ключиудобныипросты визготовлении, благодарясовременнымпрограммируемымзамкамихнестрашнопотерять. Множествораз человечествопыталосьпридуматьзаменуключам, новсе попыткипровалились(всемыпомним, кчемупривела идеяиспользоватькодовыезамкинаподъездныхдверях). Почемужемынеиспользуемстольхорошуюипровереннуювременемтехнологиюдлязащитыкомпьютеров? Современныйаналогключа— USB-флешка. Внезависимостиоттого, длякакихцелейтыобычноиспользуешьфлешку, изнеевсегдаможносделатьполноценный высокотехнологичныйключ, спомощьюкотороговойтив системубудеттакжелегко, какотперетьдверьвквартиру. Естьнесколькоспособовсделатьэто, нонаиболее простойиуниверсальныйметод— этоиспользовать PAM-модульpam_usb (pamusb.org), которыйбудетпроверятькаждуювставленнуювкомпфлешкунапредметее соответствияуказаннымтребованиями, взависимости отрезультата, разблокироватьилиблокироватьучетную записьпользователя.

Никакоймодификациитаблицыразделовилиинформации, хранимойнафлешке, приэтомнепотребуется. Для идентификации«правильной» флешкииспользуетсяее серийныйномер, модель, производитель, атакженабор случайныхданных, которыезаписываютсяврезервную областьфлешкииизменяютсяприкаждойудачной аутентификации(есликто-тоскопируеттвоюфлешку, но тыуспеешьвойтивсистемураньшезлоумышленника, данныебудутизменены, иегокопияуженесработает). Вслучаеутеривсегдаостанетсявозможностьвойтив систему, используяпароль, иперекодироватьpam_usb на новуюфлешку. Такжевкачествеключаможноиспользоватьразличныекартыпамяти(SD, MMC) идругиесъемныенакопители. Начатьиспользоватьpam_usb довольно просто. Полнаянастройкасистемысостоитизпятишагов. 1. Ставимбиблиотекуlibpam_usb.so иутилитыуправлениямодулем:

$ sudo apt-get install libpam-usb pamusb-tools

2. Беремфлешку, которуюсобираемсяиспользоватьв качествеключа, вставляемеевUSB-портивыполняем следующуюкоманду:

$ sudo pamusb-conf --add-device имя

Такpam_usbсоберетвсюнеобходимуюинформациюо флешке, добавитвсвоюбазуданныхизапишет2Кбслучайныхданных. ДляпоискафлешкивсистемебудетиспользованUdisks (аргумент«имя» здесьиспользуется, чтобы датьфлешкепроизвольноеназвание, анедляуказанияее файла-устройства), такчтоважно,чтобыдругиевнешние накопителинавремяработыэтойкомандыбылиотключены. 3. Теперьдаемpam_usb понять, чтобыэтафлешкабыла ассоциированаснужнойнамучетнойзаписью(путьэто будетvasya):

$ sudo pamusb-conf --add-user vasya

4. Запускаемпроверкуправильностисобранныхданных наслучай, еслифлешканебылакорректноидентифицирована. Илимызабылиотсоединитькакой-тодругой накопитель, ионбылиспользованвместонужногонам:

$ sudo pamusb-check vasya

5. Добавляемpam_usb всписокмодулей, необходимых дляпроведенияуспешнойаутентификациипользователя. ВUbuntu идругихдистрибутивах, основанныхна Debian, этоделаетсяспомощьюмодификациифайла/ etc/pam.d/common-auth. Внемнеобходимонайтистроку примерноследующеговида(онаможетотличаться):

\auth required pam_unix.so

Ипрямопереднейдобавитьследующуюстроку:

auth sufficient pam_usb.so

ТакмысообщимPAM, чтопередлогиномлюбогопользователянужноотдаватьуправлениемодулюpam_usb, который проверитналичиенужнойфлешки, илишьвслучаенеудачиэтойоперациизапрашиватьпароль. Поэтому, еслиты хочешьвпускатьпользователятолькопофлешке, полностьюблокируяаккаунтвслучаенеудачи, слово«sufficient» следуетзаменитьсловом«required». Впринципе, всего этогодолжнобытьдостаточнодлятого, чтобысистемапростоработала(попытайсявыйтиивойти, чтобыэтопроверить), однакофункциональностьpam_usb можнонесколько расширить, еслииспользоватьдемонpamusb-agent. Задачаpamusb-agent — автоматизироватьработупо блокированиюиразблокированиюучетнойзаписипользователяприизвлеченииивтыканиифлешкивкомп. Чтобыагентзаработал, необходимодобавитьвконфигурационныйфайл/etc/pamusb.conf следующиестроки:

INFO

info

Аналог файла /etc/ pam.d/common-auth в Gentoo и Mandriva

носит имя /etc/ pam.d/system-auth,

во FreeBSD вместо него используется / etc/pam.d/system. В ArchLinux придется править PAM-конфиги отдельно для каждого приложения.

Еще один способ обезопасить машину от вторжения — удаленно создать файл / etc/nologin с помо-

щью любого мобильного SSH-клиента. Для разблокировки придется войти как root и удалить этот файл.

XÀÊÅÐ 09 /152/ 2011

103

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

UNIXOID

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Настраиваем аутентификацию

Конфигурационный файл /etc/pamusb.conf

с помощью USB-Flash

сразу после добавления USB-флешки

<user id="имя_юзера"> <device>имя_устройства</device>

...

<agent event="lock"> gnome-screensaver-command --lock</agent> <agent event="unlock">

gnome-screensaver-command --deactivate</agent>

...

</user>

ЭторецептдляGnome. Чтобыиспользоватьpamusb-agent сдругими средами, команды«gnome-screensaver-command --lock» и«gnome- screensaver-command --deactivate» необходимоизменить.

Теперьможнозапуститьpamusb-agent ипроверитьегоработоспособность:

$ pamusb-agent

Есливсеработаетнормально, можнодобавитьеговавтозапуск:

$ cd ~/.config/autostart

$ ln -s /usr/bin/pamusb-agent pamusb-agent

Обкатаемпальчики?

Модульpam_usb удобноиспользоватьвкачествеметодазащиты ноутбуков, оснащенныхкард-ридером. Можноноситьнебольшую SD-картувкошелькеиливнутреннемкарманеивтыкатьеевноутбук, не беспокоясьотом, чтоонабудетмешать(какэтопроисходитвслучаес USB-флешкой). Однакоэтотподходбудетвыглядетьнесколькоархаично, еслиноутбукужеоснащенсканеромдляснятияотпечатковпальцев. Ноутбукисосканеромотпечатковпальцеввыпускаютмногиепроизводители. Какправило, ониненамногодорожедругихсходныхпо характеристикаммоделей, однакоихсенсоротпечатковработает тольковWindows. Дляустраненияэтогонедостаткаfreedesktop.org

запустилпроектfprint (www.freedesktop.org/wiki/Software/fprint), в

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

Сегодняlibfprint естьвлюбомдистрибутиве, поэтомуустановитьего можноспомощьюлюбогопакетногоменеджера:

$ sudo apt-get install libfprint0 \

libpam-fprint fprint-demo

Далеесканерможнопроверитьспомощьюспециальнойдемонстрационнойпрограммысграфическиминтерфейсом:

$ fprint_demo

Если все работает корректно и без сбоев, можно начать настройку аутентификации. Для этого следует запустить программу pam_fprint_enroll, которая позволит сделать эталонный слепок отпечатка пальца, который затем будет использован для идентификации его владельца:

# pam_fprint_enroll –enroll-finger 7

Цифра7 здесьозначаетуказательныйпалецправойруки. Система fprint нумеруетпальцыслеванаправо, такчтоцифрой1 будетобозначенмизинецлевойруки, а10 — мизинецправой.

Когдаслепокбудетготов, добавиммодульpam_fprint встекPAMмодулейвсехприложений, дляэтогооткрываемфайл/etc/pam.d/ common-auth, находимвсетужестроку«auth required pam_unix.so» и

добавляемпрямопереднейстроку, отвечающуюзазагрузкуpam_fprint:

auth sufficient pam_fprint.so

Приследующемлогиневседолжнозаработать.

Памятьналица

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

ВLinux-дистрибутивахнетвстроенныхсредствраспознаваниялиц, однакоихможнодобавитьспомощьюустановкикомплектаПОпод названиемpam-face-authentication (www.pam-face-authentication. org), которыйвключаетвсебябиблиотеку, реализующуюалгоритм распознаваниялиц, PAM-модульдляосуществленияаутентифика- циииприложениедлягенерированияэталонногоснимка.

Всеэтоможнособратьизисходниковилижеустановитьизсторонних репозиториеввUbuntu. Таккакпроектещесырой, ипакетыподготовленынедлявсехдистрибутивов, мырассмотримобаварианта установки. Итак, дляустановкиизисходниковнампонадобятся пакетыскомпилятором, линковщикомизаголовочнымифайлами длявсехзависимостей. ВUbuntu (даивдругихдистрибах) ихможно установить, выполниводнукоманду:

$ sudo apt-get install build-essential cmake \ qt4-qmake libx11-dev libcv-dev libcvaux-dev \

libhighgui4 libhighgui-dev libqt4-dev \ libpam0g-dev

104

XÀÊÅÐ 09 /152/ 2011

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Далеескачиваемисходникисостраницыпроектаираспаковываем:

$ cd

$ wget http://goo.gl/dpD1s

$ tar -xzf pam-face-authentication-0.3.tar.gz

Длясборкииспользуетсяcmake, поэтомуздесьвсепросто:

$ cd pam-face-authentication-0.3 $ cmake && make

$ sudo make install

ДляустановкиужепрекомпилированногопакетавUbuntu можноиспользоватьрепозиторийantonio.chiurazzi:

$ sudo add-apt-repository ppa:antonio.chiurazzi/ppa $ sudo apt-get update

$ sudo apt-get install pam-face-authentication

Послеокончанияустановкизапускаемобучающуюпрограмму:

$ qt-facetrainer

Вертимлицомпередкамерой, постояннонажимаякнопку«Capture». Важносделатьхотябыдесятокфотографий, чтобысистеманаучиласьраспознаватьтвоелицоподлюбымуглом. Такжебудетнеплохо сделатьфотографииприразнойосвещенности. Незабываемпротестироватьработусистемы.

Теперьдобавиммодульpam_face_authentication.so встекзагружае- мыхPAM-модулей. Дляэтогооткрываемфайл/etc/pam.d/gdm или/ etc/pam.d/kdm (еслитыпользуешьсяKDE) идобавляемвегоначало следующуюстроку:

auth sufficient pam_face_authentication.so enableX

Файл/etc/pam.d/common-auth изменятьненадо, таккакониспользуетсянетолькографическимименеджерамивходавсистему, нои стандартнымиконсольными/bin/login и/bin/su, аpam_face требует доступакиксам.

ТакженеобходимосоздатьпрофильдляновогоPAM-модуля. От-

крываем(создаем) файл/usr/share/pam-configs/face_authentication

следующегосодержания:

Name: Manually installed face_authentication profile Default: yes

Priority: 900 Auth-Type: Primary Auth:

[success=end default=ignore] pam_face_authentication.so enableX

Иактивируемего:

$ sudo pam-auth-update --package face_authentication

Ключизтелефона

Сотовыйтелефон— символ21-говека. Мыдавнопривыкликтому, чтоегоможноиспользоватьнетолькодлязвонков, ноидлявыхода винтернет, игр, прослушиваниямузыки, просмотравидеоидаже оплатысчетов. Номожнолииспользоватьегокакключдлявходав компьютернуюсистему?

Конечно, да. Как и USB-флешка, телефон имеет множество признаков, которые делают его уникальным. Это все те же идентификаторы производителя и модели, серийный номер, MAC-адреса, IMEI, в конце концов. Любой из них можно использовать для однозначной идентификации устройства и его владельца, но мы

XÀÊÅÐ 09 /152/ 2011

остановимся только на одном из них — MAC-адресе Bluetoothинтерфейса.

Любой, даже очень древний и простой телефон имеет поддержку протокола Bluetooth и, как следствие, уникальный MACадрес, который передает в сеть в ответ на любой запрос поиска устройств другим Bluetooth-адаптером. Многие современные ноутбуки имеют на борту такой адаптер, а его внешний USB’шный вариант стоит копейки, так что для нас синий зуб будет идеальным вариантом для настройки беспарольной и беспроводной аутентификации. Зашел в комнату — доступ открыт, вышел — система заблокирована.

Беремтелефон, включаемBluetooth, делаемтак, чтобыонбыл «видим» другимустройствам. Садимсязакомпизапускаемутилиту hcitool (входитвпакетbluez-utils) врежимепоискаустройств:

$ hcitool scan

ПолучаемимясвоегоустройстваиегоMAC-адрес, копируемпоследнийвбуферобмена. Устанавливаемпакетlibpam_blue (или pam_blue, гдекак):

$ sudo apt-get install libpam_blue

Создаемфайлконфигурации/etc/security/bluesscan.conf ипишемв негоследующее:

# Общие настройки general {

# Продолжительность сканирования в секундах (от 3 до 15) timeout = 15;

}

# Настройки пользователей и их устройств mylogin = {

name = Имя устройства;

bluemac = MAC-адрес устройства;

}

Сохраняемфайл, открываемужезнакомыйнамконфиг/etc/pam.d/ common-auth идобавляемстроку:

auth sufficient pam_blue.so

передстрокой, содержащей«pam_unix.so».

Теперьдлявходавсистемубудетдостаточноположитьтелефонрядомсноутомиввестиимя. Далееуправлениебудетпереданомодулю pam_blue, которыйпросканируетсеть, найдетMAC-адрестелефонаи впуститпользователя. Впротивномслучаепридетсяввестипароль.

Выводы

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

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

105

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

CODING

Юрий «yurembo» Язев (yazevsoft@gmail.com)

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

ПОКОРЯЕМ WINDOWS PHONE 7.1

Начинаем кодить игры под новую ось, конкуренты не дремлют!

В июле вышла обновленная операционная система от Microsoft для смартфонов — Windows Phone 7.1 под кодовым именем Mango. Этот апдейт (помимо исправления традиционных майкрософтовских багов) открыл перед отечественными разработчиками широкие возможности, которыми западные девелоперы пользовались с релиза первой версии системы.

Развлекаться с помощью смартфона можно по-разному: посмотреть свежий блокбастер, послушать музыку или же поиграть. Раньше автор пренебрегал возможностью поиграть на мобильном устройстве, считая, что на нем нельзя получить фан от игры. Однако прошло время, и стали появляться миниатюрные девайсы с достаточной для многих игр конфигурацией. Тем не менее, эти устройства оставляли меня равнодушным. После выхода в конце прошлого года операционной системы Windows Phone 7.0 ситуация изменилась. Теперь стало возможным программировать мобильные игры, используя «родной» инструментарий и накопленный за время программирования под винду опыт. Однако,

впрошлой версии ОС не было поддержки великого и могучего,

ителефоны с ней не были предназначены для продажи у нас в стране. Было грустно еще и потому, что российские разработчики

не могли напрямую получать деньги за продаваемые в магазине Windows Phone Marketplace-приложения. Все это обещали исправить в следующем апдейте.

НапроходившейвконцемаявМосквеконференцииDevCon’11 Microsoft объявила, чтоапдейтWindows Phone 7.1 (Mango) выйдетв июлеибудетсодержатьвсеобещанноеранее. Заглядываявбудущее (аведьтычитаешьэтотномеружевбудущем:), можносделатьвывод, чтосейчас— самоевремяначатьразрабатыватьприложениядля этойплатформы. ПосколькуWP — молодаясистема(ейнетещеи года), тоиприкладныепрограммыдлянеенужныразногохарактера. Темнеменее, обращаятвоевниманиенапервыйабзац, добавлюнеоспоримыйфакт: приложения, пользующиесянаибольшим спросомнамобильныхустройствах— этоигры. Ихразработкойяи предлагаюзаняться.

106

XÀÊÅÐ 09 /152/ 2011

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Рис. 1. Новые шаблоны проектов

WindowsPhone7.1Mango

Какужебылосказаноранее, чтобыразрабатывать приложениядляWP, надоиспользоватьтежетулзы, чтоивпроцессеразработкидесктопныхWindowsпрограмм. Можнопосчитатьэтозасчастье, таккакдля разработкиприложенийподпредыдущуюмобильную ОСотMicrosoft — Windows Mobile 6.5, необходимобыло использоватьeMbedded Visual tools, которыйпредлагал двагенномодифицированныхязыка— eMbedded Visual Basic иeMbedded Visual C++.

Такимобразом, тебепонадобятсяVisual Studio 2010,

.NET Framework 4.0 (именноэтиверсии, илиновее, если хочешьпрограммироватьдляWP 7.1) и, собственно,

комплектразработчикаWindows Phone Developer Tools

— имеетсябетадляОСWP 7.1, которуюсвободноможно скачатьссайтаMicrosoft). Впрочем, пакетсамодостато-

чен, онвключает: бесплатнуюVisual Studio 2010 Express,

возможностейкоторойвполнехватитдляразработкипод

WP, .NET Framework 4.0, Silverlight 4.0, XNA 4.0, Windows Phone Emulator. Ещенамашине, которуюбудешьиспользоватьдляразработкииотладки(спомощьюэмулятора) игрдляWP 7.1, должнабытьустановленавидеокартас поддержкойDirectX 10.

Вкачественастольнойоперационнойсистемыдолжна выступатьлибоWindows Vista совторымсервис-паком,

либоWindows 7 — причемStarter Edition неподдержи-

вается(тольконеподумай, чтоявообщепредположило возможностиееиспользования:)).

Новаяверсияпакетаразработчика, совместносVS 2010, кромеязыкаC# включаетподдержкуVisual Basic — теперьегоможноиспользоватьдлянаписаниямобильных программ. ПослеустановкиWP-тулз, запустиVS 2010 и просмотришаблоныдлясозданияаппликаций(рис. 1).

XNAvs.Silverlight

ДлясозданияприложенийподWindows Phone используютсядвеподсистемы: Silverlight иXNA. Обеэтиподсистемыработаютпод.NET. Следовательно, вWindows Phone исполняетсятолькобезопасныйкод. Впервую очередь, Silverlight используетсядляпостроения пользовательскогоинтерфейса(втомприближении, о котороммыпривыклиговорить, приразработкеоконногоинтерфейсавWindows). Такимобразом, посредством языкаразметкиXAML осуществляетсяпостроение пользовательскогоинтерфейсадлясмартфона, вVS можноиспользоватьвизуальныесредства. Вконтексте нашегорассмотренияэтойплатформы(дляразработки приложенийсдинамическойграфикой), этафункциональностьнасневполнеустраивает. Сдругойстороны,

Рис. 2. Эмулятор телефона

XNA специальнопредназначенадляразработкиигр. Ктомужеводномприложенииможнокомбинировать обеподсистемы(обративниманиенашаблонWindows Phone Rich Graphics Application (4.0)).

Следуянашейглавнойцели, подробнеерассмотрим фреймворкXNA. Внастоящеевремясуществуетужечетвертаяеговерсия. XNA — прямойпотомокDirectX. Насчастьеавтора, онбылсвидетелемвсегопутиразвитияэтой технологии, начинаястогомомента, когдаонанаходилась всостояниизародышаидонастоящегомомента, когда онапревратиласьвмежплатформенныйинструментдля созданияигр. Так, сейчасуMicrosoft естьтриплатформы, которыеееподдерживают: десктопнаяWindows, консоль

Xbox 360 итеперь— смартфоновскаяОСWindows Phone 7.x.

Тоесть, игра, написаннаядляWindows, присоблюдении определенныхусловийбудетработатьнадвухдругихплатформах. Чутьпозжемырассмотримэтиусловия, асейчася скажупаруслово«зародышевымсостоянии» XNA. Послевыходапрограммнойплатформы.NET Framework (2002 год) созданиеигр, выполняющихсяподнейи использующихеевозможности(впервуюочередь, сборщикамусора), быловопросомвремени, потомучто почтиодновременнопоследовалвыходManaged DirectX

— управляемыйDirectX, выполняющийсявсреде.NET.

АтотDirectX, которыйиспользовалсявнативныхC++- приложениях, соответственно, сталнеуправляемым. ЗатемвышелMDX 2.0. Однакооннепользовалсяпопулярностью: средиигроделовходиломнение, чтовыполняемый подвиртуальноймашиной(чем, посути, является.NET) кодработаетмедленнеенативного, чтодляигрочень критично. Впрочем, этовполнеоправданноеутверждение. ТогдаMicrosoft решиласделатьизуправляемого DirectX нечтобольшее, чемпростоSDK дляуправляемых языков. В2006 годувышлаперваяверсияXNA, которая представляласобойнепростоулучшенныйSDK, ановый инструмент, используякоторый, разрабатыватьигрысталопроще, чемспомощьюнеуправляемогоDirectX. Потому чтокромеобновленногоAPI, вкоторомскрытымногие низкоуровневыетехническиедетали, необходимыедля разработкиигр(инициализацияустройствидр.), XNA предлагаладополнительныетулзывпомощьигроделам.

Апосколькуигрытеперьсмогливыполнятьсяподобщей программнойплатформой.NET Framework, тоизапускатьсяонимогутнаразныхаппаратныхплатформах(вто время— PC (десктопнаяWindows) иXbox 360).

3D-эксперимент

Теперьнасталовремязанятьсякодингоминаписать графическоеприложениедляWindows Phone 7.1. Что

DVD

dvd

На диске тебя ждет дополненный с учетом современных реалий видеоурок по теме. Не пропусти!

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

HTTP://WWW

links create.msdn.com

стартовая точка для WP разработчика.

INFO

info

В «Темном искусстве игродела» я не написал о тулзе, которую юзал для создания 3D-объектов. Тогда она была платная.

Сейчас trueSpace

распространяется бесплатно. Вот ссыл-

ка: www.caligari.com.

XÀÊÅÐ 09 /152/ 2011

107

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

CODING

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Рис. 3. В процессе работы нашей демонстрации 3D

женамнаписать? Нашепервоеприложениебудетдемонстраци- ейвозможностей3D-визуализациисмартфонанабазеWP 7.1. ЗапустиVS 2010 ивкачествешаблонасоздаваемогоприложения выбери«Visual C# ÆXNA Game Studio 4.0 ÆWindows Phone Game (4.0)». Врезультатебудетсгенерированазаготовкадляразработки игры. Обратимвниманиенанекоторыетехническиедетали. Таккак дляWP установленостандартноеразрешениеэкрана(480х800), значит, нашаграфикабудетвыглядетьодинаковонаразных девайсах. КтомужеWP поддерживаетприемлемуюдляигрчастоту кадров— 30 fps (можнопоменять, изменивзначениепеременной TargetElapsedTime). Хотянадесктопе, накоторомведетсяразработкаграфическогоприложениядляWP, долженбытьвидеоадаптерсподдержкойDirectX 10, насмартфонеWP используетсяDX 9. Одинизнюансовразработки, переносимыхмеждутремяплатформамиигр, состоитвиспользованииDX 9. ВXNA явнонеуказывается, какаяверсияDX используется, затоможноопределить профильустройствавсвойствахпроекта. ДляPC иXbox 360 можно использоватьпрофильHiDef, которыйсоответствуетвысочайшему качествуграфики, исоответствуетдесятойверсииDX. Сдругой стороны, нашацелеваяплатформаWP неподдерживаетэтотпрофиль, поэтомунампридетсяиспользоватьпрофильReach, который соответствуетDX 9 совсемивытекающимиотсюдапоследствиями. Другиенюансысвязанысреализациейконтрола, которыйсильно отличаетсяуразныхплатформиз-заразличныхустройствввода. Правда, XNA 4.0 поддерживаетвсеихвиды.

Прямосейчасскомпилируйизапустиприложение. Есливсеустановленоправильно, товзапустившемсяэмуляторетелефонатыувидишь закрашенныймонотоннымцветомдисплей(рис. 2).

Закройэмуляториподготовьконтентдлясвоегоприложения (можешьвзятьснашегодиска). Позамыслувкачествефонабудет выступатьтекстура. Спомощьюконтентпайплайнзагрузифайл background.jpg. Да, еслиневкурсе, контентпайплайн— этомеханизм, интегрируемыйвстудиюпослеустановкиXNA. Основноеего предназначение— этоосуществлениепрямогодоступакресурсам

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

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

this.graphics.PreferredBackBufferHeight = 480; this.graphics.PreferredBackBufferWidth = 800; this.graphics.IsFullScreen = true;

Такимобразом, мыустанавливаемальбомныйрежимэкрана. ЗатемвфункцииLoadContent() послесозданияобъектаspriteBatch добавьследующуюстрочкукода: background = Content.

Load<Texture2D>("Textures/background");. Сеепомощьюпроисхо-

дитзагрузкатекстурывпамять. Пролистайлистингвниздофункции Draw, послекомментарияTODO добавьтакиетристрочки:

spriteBatch.Begin(); spriteBatch.Draw(background, new Rectangle

(0, 0, 800, 480), Color.White); spriteBatch.End();

ДляпрорисовкитекстурыиспользуетсяранеесозданныйобъектSpriteBatch: первыйметод— Begin данногообъектаначинает

группуоперацийрисования(внашемслучаетолькоодну), используя одинаковыенастройки, онизадаютсявпараметрахметода. Внашем примереунегонетпараметров. ЗатемметодDraw выводитзагруженнуюранеетекстуру. Вданномпримереунеготрипараметра(какиу предыдущегометода, имеютсяперегруженныеварианты): указатель напрорисовываемуютекстуру, объект— прямоугольникспараметрамидлявыводаицветдляприданияоттенка(белый— неиграет значения). Последнийметодсбрасываетназаднийбуфер(хе-хе, «заднийбуфер» — этокруто, Бивис— прим. ред.) содержимоеобъекта классаSpriteBatch ивосстанавливаетегосостояние, предшествующеевызовуметодаBegin.

Откомпилируйипроверь: весьдисплейдолжнапокрытьуказанная текстура. Далеедобавимтрехмерныеобъекты. XNA поддерживаетдлязагрузкидваформата: файлы*.x и*.fbx. ФорматХранее былстандартнымдляDirectX, однако, начинаясдесятойверсии библиотеки, этотформатпотерялподдержку. Кслову, теперьтам используетсяформат*.sdkmesh, длякоторогонесуществуетэкспортеров. НоMicrosoft неоставиласвойновыйформатвтаком плачевномсостоянииивыпустилаконвертер— утилитукомандной строкиmeshconvert, которыйпредназначендляконвертирования изX вsdkmesh. Второйформат— *.fbx — оченьраспространени поддерживаетсявсемипродуктамиотAutodesk. Посути, онявляетсяформатомдляпереносамоделеймеждуприложениями. Теперьу тебяточноневозникнетпроблемссозданиемсобственныхмоделей длясвоихигр. Сдискаможешьвзятьподготовленнуюмноюмодель (явзялизtrueSpace то, чтобыло). ОнанаходятсявХ-формате. Загрузиеевконтентпайплайн, соблюдаяструктурукаталогов, то естьтак, чтобывовнешнемкаталогенаходилсях-файлинаэтомже уровне— одноименнаяпапкастекстурами. Ещеодназамечательнаявозможностьконтентпайплайна— этокомпиляцияконтента всвойсобственныйоптимальныйдляисполненияформат. При первойзагрузкеприложенияконтентпайплайнпросматриваетвсе имеющиефайлы, иесликакой-тообъектможетбытьпреобразован, онпреобразуетего.

Сейчас можно сначала попробовать загрузить и вывести на экран модель, но я предлагаю этого не делать, а сразу разработать класс для реализации возможности создания нескольких объектов без дублирования кода. Создай новый файл object.cs и напиши в нем код одноименного класса, он инкапсулирует функциональность создаваемых объектов (для подсказки смотри исходник с диска). Пока ты его пишешь, я коротко расскажу, что здесь происходит. Вначале, как всегда, происходит подключение пространств имен — обрати внимание, используется пространство XNA. Затем уже в описании класса объявляются и инициализируются переменные — члены класса. Далее идет конструктор. Безусловно, в нашем примере можно было обойтись без него, потому что переменные уже инициализированы, и с созданием объекта прекрасно бы справился конструктор по умолчанию. Однако, поскольку у нас два объекта этого класса, то необходимо поместить их в разные координаты. Этим и занимается конструктор, получая в качестве параметра множитель для смещения. Дальше идет одна из моих любимейших конструкций языка C# — свойство. Его устройство

напоминает мне разработку визуальных компонентов для Delphi :). Метод установки значения данного свойства довольно обширен, он производит преобразование переданного угла из градусной меры в радианную, используемую в XNA, а последним шагом создает матрицу поворота по оси Y и присваивает ее переменной — члену класса. Затем идет метод DrawObj, который прорисовывает

108

XÀÊÅÐ 09 /152/ 2011

Соседние файлы в папке журнал хакер