Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
20.04.2024
Размер:
17.96 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

 

 

 

 

ДистрибутивArtistX содержитбольшоеколичествософтадляработы смультимедиа

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

— настройкасоотношенияэкранаитаймер отключения. Вседовольноудобноипродумано. Дистрибутивидетсполнымкомплектоминструментовразработки. Достаточноскачатьссайта проектаGeeXboX ISO Generator, работающий подLinux, Mac OS X иWindows 9x/NT/2k/XP.

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

вподкаталогiso, образовавшийсяпосле распаковкиISO Generator, изапуститьпроцесс созданияISO-образа. Затемтакиедискиможно спокойнопроигрыватьвлюбойобстановке, бездополнительнойнастройкииподключения «источника».

АльтернативойGeeXboX являетсяMoviX (movix. sf.net) — легкийкомпактныйдистрибутив, построенныйнаDamn Small Linux. Онпозволяетсмотретьмувики, фотографииислушать музыку. ЗагрузкавозможнасCD, HDD, USB или поСети. ПрипомощикомплектаMoviXMaker-2

(savannah.nongnu.org/projects/movixmaker)

можносоздатьсвойвариантдистрибутивана базеMoviX/eMoviX ипроигрывателяMPlayer.

ПослезагрузкизаписанноенаCD/DVD-диск

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

MYTHBUNTU 9.04

ÎÑ: MYTHBUNTU 9.04

САЙТ ПРОЕКТА: WWW.MYTHBUNTU.ORG ДАТА ВЫХОДА: 23 АПРЕЛЯ 2009 ГОДА ЛИЦЕНЗИЯ: GNU GPL

АППАРАТНЫЕ ПЛАТФОРМЫ: I386, X86_64

СИСТЕМНЫЕ ТРЕБОВАНИЯ: INTEL PENTIUM ИЛИ AMD CPU 1.0 ГГЦ, 192 MБ RAM, 2 ГБ HDD (ЛУЧШЕ 80+ ГБ) ОСНОВНЫЕ КОМПОНЕНТЫ: KERNEL 2.6.28, GLIBC 2.9, GCC 4.3.3, UDEV 141, XORG 1.6.0, XFCE 4.6.0, MYTHTV 0.21.0, MPLAYER 1.0RC2, ATI 8.600, NVIDIA 180.44, FIREFOX 3.0.8

ОсновойэтогорелизапослужилUbuntu 9.04 Jaunty Jackalope, скоторымонполностью совместимпопакетам. Нумерациясовпадаетс убунтовской; последниерелизыMythbuntu выходятпрактическисразупослеанонсабазового дистрибутива.

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

XÀÊÅÐ 10 /130/ 09

GeeXboX достаточнопроств

управлении

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

инераздражаетяркимикрасками. Вкачестве рабочегоокружениявыбранXFce. Чтобыоблегчитьновичкупроцессзнакомства, интерфейс максимальноупрощен, оставленолишьсамое нужное. Послезагрузкибудетдоступнотолько одноменюApplications, вкоторомможно найтивсенеобходимоедлявоспроизведения медиафайловизапускаMythTV. Основная функциональностьMythbuntu заключенаименновMythTV — онпредставляетсобойнабор программ, позволяющихпостроитьнаобычном компьютеренастоящуюмедиастанцию— воспроизводитьмедиафайлы, записыватьвидео надиск, серфитьпросторыинтернета, читать новости, получатьпрогнозпогоды, игратьв игрыит.д. (подробнееоMythTV читайвиюльскомномереzза2007 год).

Дистрибутивможетиспользоватьсякакавтономнаястанция, такиподключатьсяввиде фронтэндакужесуществующемуMythTV. Для настройкипараметровработыPVR-системы предложенграфическийинструментMythbuntu Control Centre. Припомощинегоможнопроизвестивсеосновныеоперации: установить роль(автономный, фронтэнд), конвертировать системувдесктопилисервердлязагрузки бездисковыхклиентов, настроитьтему, активировать/деактивироватьплагиныисистемные сервисы(VNC, SSH, Samba, NFS, MySQL), уста-

новитьнедостающиепроприетарныедрайвера

икодеки, настроитьLIRC имногоедругое. При необходимостиControl Centre вызываетутили-

ты, вродеSynaptic.

Впоставкедистрибутиваянасчитал14 плагиновдляMythTV и24 темы; естьвсенеобходимыедрайвера(включаяпроприетарныедля видеокартNVIDIA иATI) иосновныекодеки.

Пакетыw32codecs, ffmpeg иlibdvdcss2 устанав-

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

Proprietary Codecs.

ЧтобызапуститьMythTV, достаточновыбрать нарабочемстолеярлыкMythbuntu LiveCD Frontend. Появитсяменюподключениякбазе

ивыборпараметров. Проверяемнастройкии запускаем.

Кстати, альтернативуMythbuntu предостаточно: напримерMythDora (mythdora.com) — специализированныйдистрибутив, основанныйна

099

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to

BUY

 

 

 

 

 

UNIXOID

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

 

 

 

 

НовичокслегкостьюразберетсясособенностямиMythbuntu

Fedora иMythTV, илиKnoppMyth (mysettopbox. tv/knoppmyth.html), построенныйнаKnoppix, MythTV ииспользующийвкачестверабочего столалегкийишустрыйFluxbox.

ARTISTX 0.7

ÎÑ: ARTISTX 0.7

САЙТ ПРОЕКТА: WWW.ARTISTX.ORG/ SITE2/

ДАТА ВЫХОДА: 21 ÌÀß 2009 ÃÎÄÀ ЛИЦЕНЗИЯ: GNU GPL АППАРАТНЫЕ ПЛАТФОРМЫ: I386 СИСТЕМНЫЕ ТРЕБОВАНИЯ: INTEL

PENTIUM II ИЛИ АНАЛОГИЧНЫЙ AMD CPU, 512 MБ RAM, 20 ГБ HDD

ОСНОВНЫЕ КОМПОНЕНТЫ: KERNEL 2.6.27, GLIBC 2.8, UDEV 124, XORG 1.5.2, GNOME 2.24.1, KDE 4.2.2, COMPIZ FUSION, FIREFOX 3.0.10, KOFFICE 1.9.98, GNOME OFFICE, OPENOFFICE.ORG 3.0.1

ДистрибутивArtistX (ранееMediainlinux)

несколькодругогоназначения. ДляLinux написанодостаточнософта, припомощикоторогоможнонетолькопросматриватьвидеои слушатьмузыку, ноисамостоятельносоздавать мультимедиаконтент. Какразтакиепрограммы

составляютосновуArtistX. DVD-дискразмером 3.3 Гббуквальнонашпигованприложениями, распространяемымиподсвободнойлицензией, — разработчикизаявляютоналичии2500 специализированныхпакетов! Посути, ArtistX являетсянаиболеебогатымкомплектомсвободныхпрограммдляобработкиаудио, видеои графическихфайлов. Воттольконекоторыеиз них:

Программыдляработыс2D -графикой: Gimp, Inkscape, Nip2, Krita, Cinepaint, Synfig, Rawstudio, Skencil, Hugin;

Программы3D-моделирования: Blender, Wings3D, Kpovmodeler, Povray, K3D;

Программыдляобработкивидео: Cinelerra, Kino, Openmovieeditor, Kdenlive, Pitivi, Avidemux, Devede;

Аудиоивидеоплееры: Mplayer, Helix Player, Videolan, Xine, Kaffeine, Kmplayer, LastFM;

Программыдляобработкиисозданиямузыки: PD, Rosegarden, Ardour, TerminatorX, Cecilia/ Csound, Gnusound, Mixxx.

Последнийнамоментнаписанияэтихстрок релиз0.7 основаннаUbuntu 8.10 Intrepid Ibex. ДистрибутиввыполненввидеLiveDVD

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

Состав Ubuntu Studio

МощныйредактораудиозаписиисведенияArdour, редакторзвуковыхфайловAudacity, драм-машинаHydrogen, звуковойсервер-демонJACK, инструментмастерингаJAMin, нотныйредакторLilyPond, программадлямикшированияMixxx, MIDI/Audio синтезатор

MusE, MIDI-секвенсорRosegarden, программныйMIDI-синтезаторTiMidity++, CinePaint

дляраскраскииретушированиявидеокадров, нелинейныередакторыPiTiVi иKino, Stopmotion дляпокадровогосозданиявидео, Blender длясозданиятрехмернойкомпьютернойграфики. Последнийвключаетвсебясредствамоделирования, анимации, рендеринга, постобработкивидео, созданияинтерактивныхигр, Synfig длясозданиядвумерной векторнойанимации, атакжененуждающиесявпредставленииGimp, Inkscape иScribus.

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

Можнонасчитатьоколодесяткаальтернатив ArtistX, но, ксожалению, некоторыеочень хорошиепроектывродеJAD (JackLab Audio Distribution), Musix GNU+Linux, Dyne:bolic уже практическинеразвиваются. Изактивных отмечудистрибутив64 Studio (64studio.com), основанныйнаDebian иоптимизированный для64-битныхсистем(на32-битныхтакжерабо- тает). ЯдроэтойОСсобраносиспользованием последнихRealTime патчей. Внастоящеевремя проектпредлагаетдвестабильныеверсии дистрибутива: 2.0 (LiveCD размером~600 Мб) и 2.1 (установочныйвариант, ~800 Мб), плюсветку 3.x, находящуюсявактивнойразработке. Кроме того, проектраспространяет64 Studio Platform Development Kit (PDK) — свободныйинструмент,

позволяющийсоздаватьрешениянаоснове

Debian иUbuntu.

ЗдесьстоитвспомнитьоUbuntu Studio (ubuntustudio.org), которыйтакжесодержит большуюподборкусофтадляобработкиаудио, видеоиграфики. Смотриврезку.

Сейчасэтототпрысксталчастьюпроекта Ubuntu, поэтомувыходитпараллельнососновнымдистрибутивом.

LINUX-GAMERS LIVE 0.9.5

ÎÑ: LINUX-GAMERS LIVE 0.9.5

САЙТ ПРОЕКТА: LIVE.LINUX-GAMERS.NET ДАТА ВЫХОДА: 24 ИЮНЯ 2009 ГОДА ЛИЦЕНЗИЯ: GPL

АППАРАТНЫЕ ПЛАТФОРМЫ: I686 СИСТЕМНЫЕ ТРЕБОВАНИЯ: CPU КЛАССА PENTIUM II, 512 MБ RAM, ВИДЕОКАРТА С АППАРАТНЫМ 3D УСКОРИТЕЛЕМ (РЕКОМЕНДУЕТСЯ GEFORCE2 MX/RADEON HD 2400 И МОЩНЕЕ)

ОСНОВНЫЕ КОМПОНЕНТЫ: KERNEL 2.6.29, GLIBC 2.10.1, GCC 4.4.0, UDEV 141, XORG 1.6.1.901, BLACKBOX 0.70.1-5, ДРАЙВЕРА ATI И NVIDIA

Идеясоздатьэтотдистрибутивпоявиласьугруппыэнтузиастов, задавшихсяцельюпредставить Linux-игрынаконференцииLinuxTag. Результатомдолжнобылостатьрешение, позволяющее игратьвпопулярныеигрыпрямосCD/DVDдиска, безустановкинахард, чтоиотражено

вдевизепроекта— boot ‘n play («загрузисьи играй»). Требования, несмотрянакажущуюся простотузадания, быливыдвинутыдовольно жесткие— запускнабольшинстве32-битных системсмаксимальнойподдержкойоборудованияипростотойуправления. Изначально группабыларазделенана2 лагеря. Первый тестировализвестныедистрибутивы, оценивая результат; второй— пыталсясоздатьвсеснуля. Витогепервойбандетакинеудалосьнайти оптимальноерешение(нонекоторыйрезультат всежеполученивскоребудетпродемонстрирован). Соперникамповезлобольше: онисоздали

100

XÀÊÅÐ 10 /130/ 09

 

 

 

 

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

 

 

 

 

linuX-gamers Live полностьюреализует

 

идею«boot ‘n play»

РабочийстолeAR OS

нужныйLiveDVD наосновеArch Linux. Релиз, представленныйнаLinuxTag 2007, сразупривлеквниманиепосетителей ипользовалсязаметнымуспехом. Текущаяверсия0.9.5 создаваласьспециальнодляLinuxTag 2009.

Настраницезакачкипредлагается4 вариантадистрибутива: Lite ISO (700 Мб), Big ISO (4,7 Гб), Lite USB (1 Гб), Big USB (5 Гб).

Списоквсехигр, входящихвкомплект, можнопросмотретьна страницеlive.linux-gamers.net/?s=Games. Все, чтовыделено жирнымшрифтом, представленотольковBig. Вперечнена-

ходимArmagetronad, Extremetuxracer, X-Moto, Urban Terror, Warsow, Tremulous ипрочиерадостигеймера. Вкомплект традиционновключаетсянескольковерсийпроприетарных драйверовдлякартNVIDIA иATI (этоединственныекомпоненты, распространяющиесянеподGNU GPL), атакже открытыедрайверадлядругихвидеокарт.

ВзагрузочномменюможнопротестироватьОЗУиCPU, а такжезапуститьSpace Invaders беззагрузкисистемы. Впроцессепредлагаетсявыбратьязыкраскладки(здесьлучше оставитьанглийскую) иуказатьвидеодрайвер. Этовсе. Если видеокартуопределитьнеудалось, топопадешьвконсоль. Ничегострашноговэтомнет. Регистрируемсясучетной записью«gamer» спустымпаролем; длянастроекиспользуем«root» спустымпаролем(учитывая, чтонекоторыеигры сетевые, этонеестьхорошо; враннихверсияхбылпароль «123456», теперьегозачем-тоубрали). Далееудаляем/etc/ X11/xorg.conf ивводим«startx». Послеэтогообычновсе работает. ВкачестверабочегостолаиспользованлегковесныйBlackbox. Длязапускаигрыдостаточнонажатьнужную ссылкувпанеливнизуэкранаиливыбратьеевконтекстном меню. Вэтомжеменюнаходимещенесколькоприложений—

Firefox, XChat, Xterm, Alsamixer идругие. Еслипланируются сетевыебаталии, вызываемконсольизапускаемwicd для настройкисети. Всепростоипонятно.

Дистрибутивизначальнопланировалсяисключительнодля работысприводаинеимелинструментовдляустановкина хард,нопомногочисленнымпросьбамтакуюработуужепровели.Желающиемогутиспользоватьскрипт/opt/bin/hddinstall. Следуетпомнить,чтоонноситстатусэкспериментальногоипередустановкойудаляетвседанныенажесткомдиске,поэтому егорекомендуютпокатолькодлятестирования!

АльтернативойlinuX-gamers являетсяSuperGamer (supergamer.org). ЭтотдистрибутивпостроеннаVectorLinux (перваяверсиябылаосновананаPCLinuxOS). Дляего записиииспользованияпонадобитсяпривод, поддерживающийDual Layer DVD, таккакобраззанимает7,8 Гб. Вменю XFce, помимобольшогоколичестваприложений, находим ярлыкидлязапуска33 популярныхигр: Quake Wars, Doom 3, Prey, Unreal Tournament, Quake 4, OpenArena, Btanks, Supertuxkart, Neverball, Scorched3d, Warzone ит.д.

EAR OS 1.10B FREE EDITION

ÎÑ: EAR OS 1.10B FREE EDITION

САЙТ ПРОЕКТА: WWW.EAROS.DK ДАТА ВЫХОДА: 23 ИЮНЯ 2008 ГОДА ЛИЦЕНЗИЯ: GNU GPL

АППАРАТНЫЕ ПЛАТФОРМЫ: I386

СИСТЕМНЫЕ ТРЕБОВАНИЯ: CPU 1 ГГЦ, 256 MБ RAM, 3 ГБ HDD

ОСНОВНЫЕ КОМПОНЕНТЫ: KERNEL 2.6.24, GLIBC 2.7, GCC 4.2.3, UDEV 117, XORG 1.4.1GIT, FIREFOX 3.0, ATI 8.3, WINE 1.0.0

РАЗРАБОТКОЙ ДИСТРИБУТИВА EAR OS ЗАНИМАЕТСЯ ДАТСКАЯ КОМПАНИЯ AUDIO REALITY, СПЕЦИАЛИЗИРУЮЩАЯСЯ НА ПРОДАЖЕ ОБОРУДОВАНИЯ ДЛЯ ДОМАШНИХ МЕДИАЦЕНТРОВ.

Пользователямпредлагаются2версии:платнаяибесплатная,

—обебазируютсянаUbuntu,ядрасобранысReal-Timeпатчами. ВEnterpriseEditionнесколькоизмененинтерфейс,улучшена производительность,атакжедоступныдополнительныевозможности,вродедистанционногоуправленияиподдержкиIEEE 1394аудио.ЗагружаемсясLiveCDиставимнахардприпомощи мастера,вызываемогощелчкомпозначкунарабочемстоле.Вкачествеучетнойзаписиразработчикирекомендуютиспользовать earmusicсаналогичнымпаролем.Послезагрузкиавтоматически стартуетFirestarter,помогаянастроитьправилаiptablesирасшаритьдоступвинтернет.Впанеляхинарабочемстоленаходим некоторыеапплеты,позволяющиезапуститьприложения,произвестинастройкисети,выставитьтребуемоеразрешениеэкрана, установитьпакетыидрайвераидажеполучитьданныеопогоде. Интерфейсизначальнонелокализован,ноэторешаемо:выбира- емвменюLanguageSupportивсписке—нужныйязык.Внизу экранакрасуетсяпанельSimDockснесколькимизначками, предназначеннымидлязапускаосновныхприложений:браузера

Firefox(поставляетсясплагиномMediaplayerConnectivity),зву-

ковогоредактораAudacity1.3.4b,медиа-проигрывателяKaffeine 3.5.9,программыдлязаписиCDиDVDдисковK3b,фотоорганай- зераF-Spot,IM-клиентаPidgin,графическогоредактораGimp 2.4.5,музыкальногопроигрывателяExaileиControlCenter.Самой первойрасположенакнопкадлязапускаeARMediaCentre,которыйсобственноиявляетсяглавнойособенностьюдистрибутива. Сегопомощьюможнопосмотретьвидео,фото,TV,онлайн-транс- ляцию,послушатьмузыкуит.д.Отсюдадоступнывсеосновные приложения,включаяSkype(которогопочему-тонетниводном изменю),выходнаYouTubeиFlickr.Имеютсявсенеобходимые плагиныикодеки.Недостающеелегкоустановитьприпомощи

Synaptic;дистрибутивиспользуетUbuntu,MedibuntuиWineHQ

репозитарии(аэтоболее15000пакетов).z

INFO

info

PVR — персональныйвидеорекордер.

ОMythTV читай

встатье«Строим домашнююмедиастанцию», опубликованнойвиюльском номереzза2007 год.

• Статью«Мойумный дом— моякрепость», посвященнуюдист-

рибутивуLinuxMCE,

читайвиюньскомномереzза2009 год.

XÀÊÅÐ 10 /130/ 09

101

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to

BUY

 

 

 

 

 

CODING

 

w Click

 

 

 

 

 

 

ВАДИМ ШПАКОВСКИЙ SHPAK.VADIM@GMAIL.COM

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

 

p

 

 

 

 

g

WEBЧЕРЕЗ

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

ZOPEОБЗОРПИТОНОВСКОГО WEB-ФРЕЙМВОРКА ZOPE

 

 

 

 

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

 

 

 

 

В ПРЕДЫДУЩЕМ НОМЕРЕ ЖУРНАЛА БЫЛ СДЕЛАН ОБЗОР САМЫХ ПОПУЛЯРНЫХ ПИТОНОВСКИХ WEB-ФРЕЙМВОРКОВ. ПРОДОЛЖАЯ ТЕМУ, СЕГОДНЯ МЫ ПОДРОБНО РАССМОТРИМ ОДИН ИЗ НИХ, А ИМЕННО — ZOPE.

ZOPE2

В1998 годусотрудникукомпанииDigital Creations, Python-специалисту, ДжимуФултону былопредложенопрочитатьлекциюпоCGI (стандартинтерфейса, используемогодля связивнешнейпрограммысвеб-сервером— в товремябылстандартомдляПитонаввебе). Согласнолегенде, онничегооCGI незнал, и егоначальнику, покаонилетеливсамолете, пришлосьрассказатьемуосновыCGI. Сэтой лекциейФултонивыступилнаконференции. Говорят, чтопротоколужаснулегосвоей чрезмернойпростотой, ионрешилсоздать что-нибудьобъектно-ориентированное. Так началасьисторияZope. Вскорекомпания

Digital Creations переименоваласьвZope Corporation иначалавыпускатьсвойпродукт подсобственнойOpen Source лицензиейZPL. Деньгижеонизарабатываютзасчетсоздания сайтовиконсультаций. В2000 годувеесостав вошлисоздателиязыкаPython, которыхвозглавлялГвидованРоссум(правда, самГвидо пробылвZope Corporation толькодо2003 года,

послечегоуволилсяисейчасблагополучно работаетвGoogle). Zope2 приобрелбольшую популярностьблагодарясвоимособенностям. Во-первых, данныепредставлялисьввиде объектов(чтобылонетипичнодлявеба), а во-вторых, появиласьвозможностьнастраиватькомпонентынапрямуючерезбраузер. Длянаписанияпростогоприложениястало требоватьсягораздоменьшезнанийисил. Но переходкбольшимсерьезнымпроектамуже былнетак-топрост. Появилсядажетермин «Z-образнаякриваяобучения», который означает, чтопоначалуZope сильнооблегчает жизнь, нозатемтребуетбольшихусилийдля пониманиямоделиразработки. Послепро-

хожденияэтогоэтапаработатьсZope снова становитсялегче.

ZOPE3

ПроектZope3 началсяв2001 году, когдаZope Corporation экспериментироваласкомпонентнойархитектурой. ГлавнойцельюбылоразбиениеобъектовZope2, которыесильноразрасталисьвобъеме, наболеемелкие— компоненты. Другойцельюсталосглаживаниекривой обучения: Zope2 былслишкомсложным, чтобы внедритьвнегокомпонентнуюархитектуру. Поэтомупринялирешениеполностьюегопереписать, включиввновыйпроекткомпонентную архитектуруивсесильныестороныZope2. Так появилсяZope3, образовавдвеветкипродуктовZope, которыенеобладалиобратной совместимостью.

Однакобылоуженаписанослишкоммного кодаподZope2, чтобызаброситьэтуветку. В результате, обеветкиразрабатываютсяпараллельно(насентябрь2009 годапоследними стабильнымиверсиямиявлялись3.4.0 и2.11.3). НововведениявZope3 слишкомзаманчивы, чтобыихигнорировать. Поэтомубылзапущен проектFive, которыйпозволялиспользовать некоторыетехнологииZope3 вZope2. Five был интегрированвZope2, начинаясверсии2.8. СкаждойновойверсиейвZope2 становится возможнымиспользоватьвсебольшеибольше фишекZope3.

ДалееябудурассматриватьименноZope3.

ОСНОВНЫЕКОНЦЕПЦИИ

ВосновемногихособенностейZope лежитего объектно-ориентированность:

• Zope-приложениепредставляетсобой коллекциюкомпонентов— объектов, счетко

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

Каждыйкомпонентможнозаменитьналюбой другойстакимжеинтерфейсом(можнопровестианалогиюсмодельюпровайдероввASP. NET). Такимобразом, компонентывыполняют одинитотжефункционал, норазнымиспособами. Апрограммиствыбираетизнихнаиболее подходящий.

Данныетакжепредставляютсяввидеобъектов, которыехранятсявZOBD (Zope Object Database).

МощныймеханизмHTML/XML-шаблонов.

Широкиевозможностидлятестирования.

МногиеизфишекZope можноиспользовать ивнеего.

КОМПОНЕНТКОНТЕНТА

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

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

АДАПТЕРЫИУТИЛИТЫ

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

102

XÀÊÅÐ 10 /130/ 09

 

 

 

 

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

 

 

 

 

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

КОНФИГИ

Всекомпонентырегистрируютсявспециальномреестрекомпонентов. Кромеинформацииозарегистрированныхкомпонентах, тамтакжехранятсянастройкиприложения— конфиги. Длярегистрациииспользуется специальныйXML-подобныйязыкразметкиZCML (Zope Configuration Markup Language). Файлконфигурацииимеетимяирасширение configure.zcml ирасполагаетсявпапкепроекта. Длявключенияпроекта всоставдействующихдоступныхпакетовZope необходимодополни- тельновпапкуetc\package-includes\ экземплярасерверапоместить файлсименемmy_project_name-configure.zcml, содержащийстроку <include package=«my_project_name»/>.

DTML

Document Template Markup Language (DTML) — средствосоздания страничныхшаблонов, которыеподдерживаютдинамическийконтент. Оноснованнатегахискриптовомязыке, ииспользуетсянастороне сервера(вотличиеотJavaScript, которыйработаетнасторонеклиента). DTML-тегиподдерживаютдваформата: Extended Python format strings (EPFS) иHTML. ФорматEPFS основанназаключениипитоновскихстрок текставкруглыескобкидлязаданияграницблоковкода. Дополнительныйпараметрформатированияпозволяетуказатьдеталипреобразованияданных; например: %(date fmt=DayOfWeek upper)s позволяет преобразоватьдатукакденьнеделизаглавнымибуквами. ФорматHTML используетсинтаксисHTML насторонесерверадлякодированиякоманд вставкитекстоввформируемыйдокумент. КакиHTML-теги, тегDTML можетсодержатьсписокатрибутовсприсвоениемзначений(имяатрибутаможнонеуказывать). Дляпримера, получиминформациюотекущем запросеклиентаспомощьюобъектаREQUEST. Дляэтогонеобходимо создатьстраницуDTML следующеговида:

<html>

<body>

<dtml-var REQUEST html_quote> </body>

</html>

ZPT

DTML-страницыимеютряднедостатков, главныйизкоторыхто, чтоони непредназначеныдлядизайнеров, работающихсHTML. Кактолькона HTML-страницепоявляетсякодDTML, результатобычностановится непригоднымдляредакторовибраузеров. ВDTML несовсемудачноразделеныпредставлениеинформации, логикаформированиядокументаи контент, изкоторогодокументформируется. Этоможетзатруднитьмасштабированиесодержимогоиразработкусамогосайта. Наконец, модельпространстваименвDTML имеетслишкоммногоскрытыхнюансовприработе собъектамиинедопускаетполногопрограммногоуправленияпоиском. ПопрогнозамавторовZope3, языкDTML лишенвбудущемперспективи будетудален. Подходящейальтернативойявляютсястраничныешаблоны ZPT (Zope Page Template), приработескоторымиприходитсяиметьделос языкомTAL — расширениемязыкаHTML/XML. ОтличиеотXML втом, что атрибуттеганачинаетсясключевогословаtal иотделяетсяотимениоператорадвоеточием. Значениеатрибутазаключаетсявкавычки. Включениетекстаможетпроизводитьсядвумяспособами: заменойтегаизаменой содержимоготега. Заменатеганазначениепроизводитсяоператором tal:replace = выражение. Еслинеобходимовключитьтекствнутритега, но оставитьсамтег, тоиспользуетсяоператорtal:content = выражение. Например, вофрагменте:

<head>

<title tal:content="template/title"> The Title

</title>

</head>

СТРУКТУРАZOPE-ПРИЛОЖЕНИЯ

— блочныйтегtitle будетоставлен, ноегосодержимое«The Title» будет замененозначениематрибута«template/title». Крометого, существует многодругихполезныхоператоров(например, repeat, дляциклов, или condition, дляпроверкиусловий).

ИНТЕРФЕЙСЫ

ИнтерфейсвZope выполняеттакиежефункции, чтоиинтерфейсыJava илиC#. Интерфейсопределяетсякакпитоновскийкласс, наследуемый отспециальногоклассаInterface. Предположим, чтонамнадосоздать проекткнигирецептов. Воткакбудетвыглядетьинтерфейсдляполученияинформацииорецепте:

from zope.interface import Interface class IRecipeInfo(Interface):

"""Give information about a recipe.""" def getName():

"""Return the name of the dish.""" def getIngredients():

"""Return a list of ingredients."""

Интерфейсы, какиклассы, поддерживаютнаследование. Еслитребуется изменятьсодержимоерецепта, можноопределитьследующийинтерфейс, которыйбудетвключатьметодыинтерфейсаIRecipeInfo:

class IRecipe(IRecipeInfo):

"""Give and store recipe’s information.""" def setName(name):

"""Set the name of the dish.""" def setIngredients(ingredients):

"""Set the recipe’s ingredients."""

Есликомпонентхочетреализоватьопределенныйинтерфейс, надоиспользоватьтакойсинтаксис(возможнареализациянесколькихинтерфейсов):

from zope.interface import implements

from worldcookery.interfaces import IRecipeInfo class RecipeInfo(object): implements(IRecipeInfo)

def __init__(self, name=u'', ingredients=[]): self.name = name

self.ingredients = ingredients def getName(self):

return self.name

def getIngredients(self): return self.ingredients

XÀÊÅÐ 10 /130/ 09

103

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to

BUY

 

 

 

 

 

CODING

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

 

 

 

 

 

 

указаннойдиректориинеобходимыедляфункционирова-

 

 

ниясерверафайлыипапки.

 

 

4) Длязапускасерверанадозапуститьскриптbin/runzope

 

 

(илиrunzope.bat вWindows). Способхорошприразработке

 

 

приложенияинеподходитдлязапускаготовогопродукта,

 

 

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

 

 

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

 

 

скриптаbin/zopectl спараметромstart. Дляостановкизапу-

 

 

ститотжескриптспараметромstop. Ноработаеттолькодля

 

 

Unix-систем(подWindows нужнопровестиболеесложные

 

 

махинации).

ZOPE MANAGEMENT INTERFACE (ZMI)

5) Длясозданияновогопроектанеобходимосоздатьдирек-

 

 

торию<Zope_server_dir>/lib/python/<app_name>.

 

 

6) ОднаизособенностейZope — егоинтерфейсуправления

 

 

(ZMI), которыйдоступенпослезапускасерверапоадресу

 

ВотличиеотJava илиC# интерфейсов, класс, которыйреа-

http://localhost:8080/manage.

HTTP://WWW

лизуетZope-интерфейс, необязанопределятьвсеметоды

ОСНОВНЫЕФАЙЛЫ

этогоинтерфейса. Ошибкавозникнеттолькововремявы-

 

полнения, когдапроизойдетобращениекнеопределенному

Zope3устанавливается,какивсеприкладныепакетыПитона,в

links

методу.

папку<Python_dir>\Lib\site-packages,—частьинсталляцион-

http://zope.org

Вмодулеzope.interface естьнесколькополезных

ныхфайловрасполагаетсявпапке<Python_dir>\Scripts.Вди-

официальныйсайт.

методов. Например, методalsoProvides(obj, IRecipe)

ректорииэкземплярасайтаимеютсяпапкиbin,etc,lib.logиvar.

 

подписываетобъектobj (итолькообъект, анекласс!)

Папкаbin сайтасодержиткодикомандныефайлыдляза-

http://wiki.zope.org/

навыполнениеинтерфейсаIRecipe. Чтобысделатьто

пускасистемынаисполнение(вчастности, runzope.bat).

zope3/Zope3Wiki

жесамоедлявсегоклассаRecipe, необходимовы-

Папкаetc содержитконфигурационныефайлысайта.

еслинетпроблем

зватьметодclassImplements(Recipe, IRecipe). Метод

Например, вфайлеetc/zope.conf хранятсявсенастройки

санглийским, то

verifyObject(IRecipe, obj) измодуляzope.interface.verify

сервераибазыданных. Секцияserver определяетпорты

здесьможнонайти

проверяет, реализуетлиобъектинтерфейсполностью.

протоколаTCP/IP 8080 дляhttp-сервераи8021 дляFTP-

многополезного.

МетодverifyClass выполняеттакуюжефункциюдляклас-

сервера. Секцияzodb определяетрасположениефайла

 

сов.

объектнойбазыданных. Секцииaccesslog иeventlog

http://zopelada.ru,

СХЕМЫ

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

http://zope3.ru, http://

циисобытий. Файлыprincipals.zcml иsecuritypolicy.zcml

zope.net.ru — русско-

Описанныйвышеподходсопределениеминтерфейсов

конфигурируютпараметрыдопущенныхпользователей

язычныересурсы.

сgetиsetметодаминеоченьпитоничен, особеннодля

сайта(принципалов) иихроли. Файлsite.zcml — главный

 

простыхобъектов, которыепростохранятданные. Для

конфигурационныйфайлсайта, сссылкаминаотдельные

 

питоновскихобъектовхарактернаработасаттрибутамина-

разделы, определяющиедеталинастроексистемы.

INFO

прямую. Реализуетсяспомощьюмеханизмасхемследую-

Папкаetc\package-includes содержитнебольшиефайлына

 

щимобразом:

языкеZCML. Ониопределяютвключениеразличныхпаке-

 

 

товвтекущуюконфигурациюсайта. Этапапкапополняется

 

from zope.interface import Interface

администраторамиилиразработчикаминовыхкомпонент

info

from zope.schema import List, TextLine

принеобходимостирасширитьфункциональностьсайта.

• КодZope3 содержит

class IRecipe(Interface):

Папкаlib\python предназначенадляразмещенияновых

более5000 автома-

name = TextLine(

пакетов, определяющихособенностиданногосайта. Для

тическихтестов, что

title=u"Name",

подключенияпакетанеобходимодобавитьссылкунанегов

значительноувели-

description=u"Name of the dish",

папкуetc\package-includes.

чиваетегостабиль-

required=True)

Папкаlog содержитфайлыжурналов, просмотркоторыхпо-

ность, особеннопри

ingredients = List(title=u"Ingredients",

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

внесениикрупных

description=u"List of ingredients.",

ватьпоследовательностьсобытийипровестидиагностику

изменений.

required=True,

ошибок, возникающихприотладкеновыхпакетов.

 

value_type=TextLine(title=u"Ingredient"))

Папкаvar содержитфайлыZODB.

• В2006 годупоявил-

 

ZOPE MANAGEMENT INTERFACE (ZMI)

сяGrok — идейный

Вдействительности, схемыявляютсятемижесамымиин-

продолжательZope3!

терфейсами, поэтомуотличиемеждунимитольковнешнее.

СредаZope3 являетсяодновременносетевымсервером

 

УСТАНОВКА

— публикаторомхранимыхнасерверевобъектнойбазе

 

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

 

1) УстановитьПитон(есливдругонвсеещенестоит).

сетевыхприложений. Сетевыеприложениямогутразраба-

 

2) УстановитьZope (установщикможноскачатьсофициаль-

тыватьсякакврежимеTTW (черезсеть) сиспользованием

 

ногосайтаиливзятьнадиске).

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

 

3) ЧтобыначатьработатьсZope, необходимосоздать, по

проектасредствамифайловойсистемы.

 

крайнеймере, одинэкземплярZope-сервера, которыйкро-

Ужеупоминалось, чтоZMI — этоинтерфейсуправления,

 

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

которыйпозволяетуправлятьсодержимымZope. Кроме

 

немешаетсоздатьнесколькотакихэкземпляров). Дляэтого

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

 

нужнозапуститьmkzopeinstance.bat, которыйнаходитсяв

камисерверавовремяегоработы(закладка«Сервер»). В

 

папке<Python_dir>/Scripts, указатьдиректориюэкземпляра

левомверхнемуглунаходитсянавигатор— иерархическая

 

сервера, имяадминистратораипароль. Скриптсоздаств

структураобъектнойбазыданных. Внемпредставленыдве

104

XÀÊÅÐ 10 /130/ 09

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЧЕРЕЗZMI МОЖНОПОЛУЧИТЬИНФОРМАЦИЮ ОЗАПУЩЕННОМСЕРВЕРЕ

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

HELLO, WORLD!

Вкачестведемонстрационногопримеранапишемстраницу, котораявы-

водитнадпись«Hello, world!».

1.Создаемдиректориюдляпакета: /lib/python/helloworld.

2.Внейсоздаемпустойфайл__init__.py (чтобыПитонтрактовалеекак пакет).

3.Тутжесоздайфайлbrowser.py соследующимсодержимым:

from zope.publisher.browser import BrowserView class HelloView(BrowserView):

def __call__(self): return """

<html>

<head>

<title>Hello World</title> </head>

<body>

Hello, world! </body>

</html>"""

4. Регистрируемпакетhelloworld. Дляэтоговдиректорииetc/packageincludes создадимфайлhellow orld-configure.zcml, содержащийстроки:

<configure

xmlns="http://namespaces.zope.org/zope">

<include package="helloworld" /> </configure>

5. Последнийшаг— написаниеконфигаconfigure.zcml, которыйнужно разместитьвдиректориитолькочтосозданногопакетаlib/python/ helloworld. Этотконфигрегистрируетпредставлениестраницысименем helloworld иоткрытымиправамидоступа, использующейобъявленный намиклассHelloView:

<configure

xmlns="http://namespaces.zope.org/browser">

<page

for="*"

name="helloworld"

permission="zope.Public"

class=".browser.HelloView"

/>

</configure>

6. Запускаемсерверипереходимпоадресуhttp://localhost:8080/ helloworld. Должназагрузитьсястраницаснадписью«Hello, world!».

ЗАКЛЮЧЕНИЕ

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

Для серьезного изучения я рекомендую книгу Суханова «Введение в Zope3». При небольшом объеме в ней рассматриваются все основные концепции. Книгу можно найти на диске zв разделе «Литература». Удачи! z

XÀÊÅÐ 10 /130/ 09

105

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to

BUY

 

 

 

 

 

CODING

 

w Click

 

 

 

 

 

 

ЛЕЙТЕНАНТ РОМАН «PREDIDENTUA» ХОМЕНКО /HTTP://TUTAMC.COM/

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

GOOGLO

сервисы для хакера

ОВЛАДЕВАЕМ СЕРВИСАМИ МЕГАКОРПОРАЦИИ С ПОМОЩЬЮ PYTHON’A

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

МНОГИЕ НАШИ КОЛЛЕГИ НАЗЫВАЮТ GOOGLE «КОРПОРАЦИЕЙ ЗЛА». СЛОЖНЫЙ ВОПРОС! ЛИЧНО Я НИЧЕГО ПЛОХОГО В ДАННОЙ ОРГАНИЗАЦИИ НЕ ВИЖУ, ПОСКОЛЬКУ ОНА СОВЕРШЕННО БЕСПЛАТНО

ПРЕДОСТАВЛЯЕТ ЧЕСТНЫМ ПРОГРАММИСТАМ МНОЖЕСТВО ПОЛЕЗНЫХ СЕРВИСОВ И ЗАМЕЧАТЕЛЬНЫЙ API ДЛЯ ИХ ИСПОЛЬЗОВАНИЯ.

SEO & BLOGSPOT

Перед началом работы с Google слегка подготовимся, установив библиотеки GData и ElementTree (ищи их на диске). Установил? Отлично, подготовительный этап пройден. Самое время поставить перед собой первую задачу — помочь СЕОшникам с их сателлитами, в качестве которых можно использовать гугловский блогохостинг Blogspot. Зайдем на него (http://blogspot.com) и создадим блог, к

примеру, http://super-puper-hacker.blogspot.com. А теперь напишем код для автоматического постинга. Во-первых, авторизируемся на blogspot’е, инициализируя объект blogger_service:

from gdata import service import gdata, atom

blogger_service = service.GDataService('login@gmail.com','pass')

blogger_service.source = '][akep' blogger_service.service = 'blogger' blogger_service.account_type = 'GOOGLE' blogger_service.server = 'www.blogger.com' blogger_service.ProgrammaticLogin()

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

query = service.Query()

query.feed = '/feeds/default/blogs'

feed = blogger_service.Get(query.ToUri()) blog_id = feed.entry[0].GetSelfLink().href. split("/")[-1]

Этим кодом в переменную blog_id мы сохранили нужный идентификатор. Хотя стоп, не очень-то все это эффективно. Зачем каждый раз узнавать айдишник, если он не меняется?

Как вариант, можно зайти на блог, нажать на кнопку «добавить новый пост» и, в результате, в браузере появится приблизительно такой текст: www.blogger.com/post-create.g?blogID=3344789329453358925.

Последние цифры этого текста являются идентификатором блога. А далее мы напишем так:

blog_id = 3344789329453358925

Теперь создадим наш пост как объект gdata.GDataEntry, в котором установим свойства title и content и запостим его на блог методом blogger_service.Post:

title = "TITLE" text = "TEXT"

entry = gdata.GDataEntry()

entry.title = atom.Title('xhtml', title) entry.content = atom.Content(content_type='html', text=text)

106

XÀÊÅÐ 10 /130/ 09

 

 

 

 

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

 

 

 

 

НЕКОТОРЫЕФАКТЫОGOOGLE

Google Inc. — американская компания, владеющая первой по популярности (77,04 %) в мире поисковой системой Google, обрабатывающей 41 млрд. 345 млн. запросов в месяц.

Google — самый дорогой бренд в мире. Рыночная капитализация компании составляет примерно 160 млрд. долл.

Google понимает более 100 языков. Кроме русского, украинского, английского, греческого, латыни, гэльского, хинди, зулусского, эсперанто, персидского, арабского, иврита, и многих других языков, Google также понимает язык повара Борк-Борк-Борка из «Маппет-шоу», язык расы инопланетян с планеты Клингон, персонажей сериала Star Trek, наречие Элмера Фуда (из мультика про Багса Банни) и древний полушуточный хакерский язык leet.

Вид мадагаскарских муравьев Proceratium google был назван в честь сервиса Google Earth, который помог открывателю в его исследованиях. Алгоритм ранжирования назван Page Rank, не от слова Page (страница), а от фамилии Ларри Пейджа — одного из основателей Google.

blogger_service.Post(entry, '/feeds/%s/posts/ default' % blog_id)

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

ПОИСК

Итак, примемся за поиск. Это можно сделать через регулярки и один запрос, но к чему напрягаться, коллеги-программеры все давно реализовали. Мы можем скачать библиотеку xgoogle (на диске она есть), и использовать всего лишь один объект GoogleSearch, которому при создании нужно передать поисковый запрос, а затем — с шиком использовать для парсинга страниц метод get_results до тех пор, пока он будет возвращать результат. В конечном счете код будет выглядеть следующим образом:

from xgoogle.search import GoogleSearch gs = GoogleSearch("presidentua")

results = gs.get_results() while results:

for res in results: print res.url

results = gs.get_results()

ПЕРЕВОД

Итак, страницы получены, текст — напарсен. А теперь перейдем к переводу и вспомним Google Translate. В этом сервисе также есть API для доступа, но он реализован на основе JavaScript-библиотеки, поэтому получается, что нам опять чего-то не хватает. Напишем недостающее самостоятельно, поскольку любому хакеру будет полезно изучить либу для парсинга HTML в лице BeautifulSoup. Сначала получим страницу, используя opener из стандартной библиотеки urllib2:

opener = urllib2.build_opener()

opener.addheaders = [('User-agent', '][akep /0.1')]

translated_page = opener.open( "http://translate.google.com/translate_t?" +

СЕРВИСБЛОГОВ

urllib.urlencode({'sl': sl, 'tl': tl}), data=urllib.urlencode({'hl': 'en', 'ie': 'UTF8',

'text': text.encode('utf-8'), 'sl': sl, 'tl': tl})

)

В начале кода мы создаем opener, а затем — устанавливаем Useragent (без юзер-агента гугл переводить откажется). Финальным аккордом мы исполняем запрос, передаем все параметры, ориенти-

руясь из API Google:

sl — скакогоязыкапереводим?

tl — анакакой?

hl — языкинтерфейса, этотпараметрнамневажен, поэтомупусть всегдабудет‘en’.

ie — кодировкатекста. Конечноже, используемutf-8.

text — переводимыйтекст.

После завершения запроса в переменную translated_page поместится HTML-код, и вот чтобы извлечь из него чистый текст, мы используем BeautifulSoup. Создадим его объект:

translated_soup = BeautifulSoup(translated_page)

Теперь из переменной translated_soup мы можем вытянуть необходимые данные. Например, мы точно знаем, что переведенный текст находится в div-элементе HTML’ла с идентификатором result_box; Стало быть, нужный перевод мы вытянем строкой:

translated_soup('div', id='result_box')[0].string

Вообще, о BeautifulSoup советую отдельно почитать на официальном сайте www.crummy.com/software/BeautifulSoup. Поверь, эта либа способна чрезвычайно упростить тебе жизнь.

ОПЕРА— НЕВСЕГДАБРАУЗЕР

Ну, все, хватит помогать СЕОшникам, ведь Гугл полезен и другим представителям хак-сцены. Посмотрим на сотрудников милиции, они владеют актуальной информацией и потому способны к оперативному реагированию. Не будем от них отставать! Представим ситуацию, при которой у тебя есть снифер, и нужно получить доступ к сайту, который хранит сессию всего лишь полчаса. Получается, что теперь тебе придется безотрывно торчать за компом, чтобы быть готовым воспользоваться ситуацией? Вырваться из рабства нам поможет телефон, который всегда под рукой и готов нас порадовать sms-кой, содержащей актуальную информацию. Но отправлять смски зачастую не так-то просто, так как на бесплатных сервисах нам мешает капча. И здесь тоже поможет Гугл, создавший замечательный Календарь, позволяющий извещать о событиях посредством СМС. Эту фичу мы и заюзаем.

Заходим на гуглокалендарь и в настройках указываем телефон, а также способ уведомления о событиях — ставим «за одну минуту до события послать СМС».

XÀÊÅÐ 10 /130/ 09

107

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to

BUY

 

 

 

 

 

CODING

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

GOOGLE SPREADSHEET

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сервисы для ха

 

 

 

 

 

 

to

BUY

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

df

 

n

e

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

НЕБОЛЬШОЙСПИСОКСЕРВИСОВ ОТGOOGLE

бесплатные сообщения на все номера. Но до этого еще дожить нужно, а пока давай будем пользоваться Календарем.

GOOGLE CALENDAR

HTTP://WWW

links

• Сайтбиблиоте-

киBeautiful Soup: http://crummy. com/software/ BeautifulSoup.

Теперь перейдем к программе, где сначала нужно авторизироваться:

calendar_service = gdata.calendar.service. CalendarService()

calendar_service.email = 'spirt40@gmail. com'

calendar_service.password = 'мой пароль' calendar_service.source = '][akep' calendar_service.ProgrammaticLogin()

Далее добавляем событие:

DVD

dvd

Комментированные исходникиикуча ништяковотавтора каквсегдаждуттебя нанашеммега-DVD.

Ккаждойстатьея снимаюмаленькое видео, иэтанестанет исключением. Смотри егоснашегодиска!

text = 'Texxxt'

text += ' %s:%s'%(time.localtime()[3], time.localtime()[4]+2)

event = gdata.calendar.CalendarEventEntry() event.content = atom.Content(text=text) event.quick_add = gdata.calendar.\

QuickAdd(value='true')

new_event = calendar_serviceInsertEvent( event, '/calendar/feeds/default/private/full')

Лично я этим способом пользуюсь очень давно, чего и тебе советую. Кстати, скоро он может потерять свою актуальность, ведь Гугл анонсировал своего «убийцу скайпа», в рамках которого вроде бы обещаются

ТАБЛИЦЫ

Агде твои скрипты хранят свои данные? На хостинге?

Аесли его завтра закроют? Давай найдем ему замену в виде Spreadsheets — гуглотаблиц. Для этого зайди на http://spreadsheets.google.com, создай новую таблицу и обязательно посмотри на ее код.

Например, для URL http://spreadsheets.google.com/ ccc?key=tLqt8Y4YaQyqe8DrRBcxS-g&hl=en кодом будет tLqt8Y4YaQyqe8DrRBcxS-g. Идентификатор нужен для того, чтобы знать, с какой таблицей работать. Далее в первой строчке мы установим название столбцов. Если это снифер, то их можно назвать ip, user-agent, cookie или что-нибудь в этом роде. Для демонстрации я назвал столбы first и second. Теперь, после кода авторизации на гугле, мы сформируем исходные данные:

key = 'tLqt8Y4YaQyqe8DrRBcxS-g' wksht_id = '1'

data = {

'first': 'first data', 'second': 'second, some text'

}

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

gd_client.InsertRow(data, key, wksht_id)

ЭТОКОНЕЦ?

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

Мы не рассмотрели гуглопочту, дающую достаточно места для хранения файлов.

Я не рассказал тебе о Google Maps, с помощью которого можно видеть на карте, например, где базируются люди, попавшиеся в сети твоего снифера.

Я злостно сокрыл информацию о мощнейшем Google App Engine. К примеру, на его основе с помощью Python и Django можно сделать снифер, который будет всю информацию хранить в базе BigTable, выдержит тысячи подключений и не упустит ни единого запроса!

Как ты понимаешь, все это — темы для отдельных статей. Может быть, с ними мы познакомим тебя позже.

108

XÀÊÅÐ 10 /130/ 09

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