vr-online (july 2010)

61

Upload: igor-antonov

Post on 29-Mar-2016

230 views

Category:

Documents


4 download

DESCRIPTION

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

TRANSCRIPT

Page 1: VR-Online (July 2010)
Page 2: VR-Online (July 2010)

Интро2

vr­online | июль 2010

IntroПриветствую Вас, дорогие друзья!

В очередной раз убеждаюсь, что планирование любых дел – основа их успешногозавершения. Когда­то я пренебрегал этим правилом (точнее, относился менее серьезно),полагаясь на русское «авось». Теперь стараюсь планировать любое более­менеебольшое дело. Под планированием подразумеваю не просто прокручивание идеи иэтапов ее реализации в голове, четко расписываю шаги выполнения, а также указываюпримерные сроки завершения каждого шага.Применяя эту практику, могу с уверенность сказать, что работать, да и простодобиваться определенных целей стало куда проще. Вроде все как обычно – меня никтоне заставляет и не принуждает что­то делать. Однако на подсознании всегда хочетсяуспеть к указанному сроку или просто выполнить очередной пункт плана.Одно время я даже экспериментировал с составлением плана. Пробовал делать вэлектронном виде и одновременно на бумаге. Как бы это странно не звучало, но намногопроще и удобней было работать со вторым вариантом. Ты не представляешь, какприятно взять ручку и вычеркивать очередной выполненный пункт!!! Ощущения непередаваемые!К сожалению, пользоваться лишь олдскульным вариантом «бумажка + ручка» непредставляется возможным. Работать приходится как дома, так и на работе. Бывает так,что начав дело дома, приходится доводить его до ума на работе. На бумаге план есть, ноне будешь, же тоскать его с собой туда­сюда! Нужна какая­то банальная синхронизация.В итоге для себя я выбрал Google Docs + бумажка (ничего смешного :­)). Сначала ясоставляю план в гугл­доках. Затем, когда начинаю работать распечатываю его или пишуна бумаге (в зависимости от объема плана). Отметки о выполнении того или иного пунктапроизвожу первым делом на бумаге, а потом уже в электронной версии. Увы, приходитсяделать лишние движения, но пока я готов платить эту цену, т.к. ощущаю, что в целом мояпроизводительность увеличивается.

Приятного чтения, дорогой читатель!Игорь Антонов

Page 3: VR-Online (July 2010)

Содержание3

vr­online | июль 2010

СодержаниеИюль 2010 (25)

It-NewsHard-NewsVrIP ПерсонаКодинг1 4. Delphi.

1 7. Delphi.1 9. Java.21 . C#

28. Python

Подражаем Office 2007. Свой mini­barАсечные страсти. Часть 1Первое приложение для Android OSВвод данныхПростая база фильмов сиспользованием Microsoft AccesПростой телефонный справочник наC#Рецепты

23. C#

26. C#

Я прусь!Обзоры от VR35. English Grammar in UseОсваиваем грамматику английского37. Opera Unite.Удобный доступ к содержимому39. Обзор HTC Tattoo41 . Желанный андроид.Обзор HTC Desire

Без рамки43. Processing. ВведениеИнтерактивная визуализация46. Операция "Щит и меч"

Меня тошнит!

Креатиff

51 . lnkscape.Картонная коробка54. What is?Разбираемся с фракталами

Безопасность

56. NuCaptcha.Головоломка для спамеров58. Tor.Защита передачи данных

Мнение VR

Идея проектаФленов Михаил aka

Horrific

(http://flenov.info)

Антонов Игорь akaSpider_NET

Роман Костенко akaLord_of_Fear

Редакторы номера Верстка и оформлениеАнтон Козлов aka

Jimmy Jonezz

Редькин Дмитрий akazahod5277

mail@vr­[email protected]

Вопросы и предложения

Page 4: VR-Online (July 2010)

IT­News4

vr­online | июль 2010

Новос

типод

готови

ли:An

yKey

иSpid

er_NE

TIT-News

IP- голод может наступить через... 343 дняАмериканские ученые предупреждают, что запасы IP­адресов иссякнутчерез год. Конечно, при условии, что Всемирная глобальная паутинапродолжит расти такими темпами, как сегодня. Выходит, что люди напланете могут столкнуться с совершенно новым для себя видомголодания?О том, что незанятые IP­адреса в рамках протокола IPv4 подходят кконцу, миру сообщило Read Write Web, сославшись на Джона Куррана,президента и исполнительного директора Американского реестра интернет­адресов.

IPv4 – наиболее широко применяемый IP­протоколе в современном Интернете. Поскольку ониспользует 32­битные адреса, то в общей сложности в рамках данного протокола можно создатьчуть больше 4 млрд IP­адресов.Но здесь, главное, не поддаваться панике, а искать альтернативный выход. Ведь провайдерам ителекоммуникационным компаниям так или иначе придется решать эту проблему. Альтернативойможет стать, к примеру, протокол IPv6 (в нем используются 126­битные адреса) или технологияNAT, позволяющая соотнести несколько адресов с одним IP­адресом.

OpenSolaris будет закрытВ списке рассылки разработчиков OpenSolaris появилось письмо счерновиком разъяснения позиции Oracle по поводуSolaris&OpenSolaris. Один из участников этой группы, работающий вOracle, подвердил данную информацию. Вкратце суть этогоразъяснения такова:

* Проект OpenSolaris закрывается. Возрождается бесплатный вариант поставки Solaris Express.* Исходные коды будут по большей части открываться под лицензией CDDL, также будетпродолжена практика открытия исходных кодов под лицензией GPL. Однако, при этом код небудет широкодоступен еще некоторое время после выхода его бинарной версии в продукте, апосмотреть на него можно будет в публикуемых снапшотах.

* Для компаний­партнеров на индивидуальной основе код и скомпилированные модули будутпредоставляться в режиме раннего доступа. Возможно также сотрудничество с элементамисовместной разработки. Примером такого сотрудничества названо партнерство с Intel.* Разработчики Solaris будут участвовать в интеграции широкораспространенных компонентов всвою систему в плотном взаимодействии с апстримом. Примерами таких компонент названыApache, Perl, OFED (набор драйверов для работы с промышленным оборудованием), Gnome,X11, OpenSSL.

Вирусописатели тоже полюбили Android"Лаборатория Касперского" сообщила об обнаружении первой трояна типаTrojan­SMS, работающем под платформой Android. Чтобы избежать зараженияновым троянцем, пользователям достаточно быть внимательными, устанавливаяна смартфон бесплатное ПО. Новая вредоносная программа попадает наAndroid­смартфоны под видом установочного APK­файла видеоплеера объемомчуть меньше 13 килобайт. Если пользователь соглашается на его установку,троянец проникает в систему и начинает отсылать SMS­сообщения на платные номера без

Page 5: VR-Online (July 2010)

IT-News5

vr­online | июль 2010

ведома и согласия владельца. Будь внимательным!

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

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

Стала доступной для загрузки 4-я тестовая версия IE9Сегодня команда разработчиков очередной версии блохастого браузерасообщили о выходе очередной тестовой версии. Изменения посравнению с предыдущей:­ Реализовано аппаратное ускорение всех возможностей HTML5. Этоподразумевает, что IE 9 "опережает" другие браузеры, которые не могутпохвастаться полной поддержкой аппаратной отрисовки элементовстраниц. Тестирование производительности можно выполнить при помощи тестаhttp://ie.microsoft.com/testdrive/Performance/PsychedelicBrowsing/

­ Новый JavaScript движок (Chakra). Отличие от предыдущего движка проявляется в первуюочередь в полной интеграции с браузером. Напомню, раньше связь с движком JS былареализована посредством COM.­ Улучшенная поддержка WEB­стандартов. Новая бетка набирает 95 баллов в тесте Acid3. Пятине хватает из­за неполной поддержки SVG Fonts и SMIL animation of SVG. К финальному релизуданный недочет должен быть исправлен.Найти пропавших домашних питомцев поможет найти MS Tag

Компания MobilPetTag (http://www.mobipettag.com/) предлагает всем желающимвоспользоваться одноименным сервисом (в основе лежит технология MS Tag),помогающим сократить время поиска потерявшихся домашних животных. Выглядитвсе это примерно так. Хозяин генерит (с информацией о себе) и печатает MS Tag.Затем, полученную бумажку прикрепляет к ошейнику своего любимца. Если вдруг случитсянесчастье и питомец потеряется, нашедший его человек сможет определить полнуюинформацию о владельце животного. Ему достаточно отсканировать Tag с бирки и получитьописание на сайте.Грядет особая версия Visual Studio

Компания Microsoft всегда старается выпускать максимально простые виспользовании продукты. Если это операционная система ­ то она обязательна,должна иметь user­friendly интерфейс. Если это среда разработки, то в ней должныбыть все необходимые функции для комфортной работы и все такой жедружественный интерфейс. Вроде и так все круто, но компания не собираетсясдавать позиции, а наоборот, старается сделать свои продукты еще более простыми. Например,совсем недавно MS анонсировала новую версию Visual Studio. 23 августа, должна выйти впродакшн beta версия Visual Studio LightSwitch (именно так будет называться новинка. Отличиеот других версий будет заключаться в более существенном упрощении разработки приложений.В ide будет доступен ряд шаблонов, описывающих разнообразные корпоративные процессы. Припомощи этих шаблонов, обычные менеджеры смогут разрабатывать простенькие приложения.Процесс разработки будет напоминать игру в конструктор.

Page 6: VR-Online (July 2010)

IT-News6

vr­online | июль 2010

Google собирается закрыть Google Wave?Сегодня на популярнейшем ИТ­ресурсе Techcrunch появилась новость отом, что корпорация Google заявила о прекращении поддержки своегонашумевшего проекта Google Wave. Команда, ранее работающая над этимпроектом, прекращает всякую работу. Techcrunch приводит информацию,как подтвержденную, хотя и без ссылки на первоисточник.

Вообще говоря, странно, что подобное случается — ведь сам Сергей Бринутверждал, что данный проект является «новым уровнем интерактивности». В самом деле,Google Wave представляет собой частично e­mail, частично Twitter и частично интернет­мессенджер. Пользователи сервиса могут перетаскивать различные файлы с рабочего столапрямо в Google Wave. Проект в полной мере заработал только в мае этого года, несмотря на то,что в первый раз о нем услышали еще год назад, в мае 2009, на конференции, проведеннойGoogle в Сан­Франциско.Почему сервис закрывается? Команда разработчиков утверждает, что в проекте «участвуетслишком мало пользователей, которых мы бы хотели видеть».

Злоупотребление Интернетом вызывает депрессиюПодростки, проводящие в Интернете большое количество времени рискуютпогрузиться в депрессию. Синдром «тоски зеленой» у этих тинэйджероввстречается в два раза чаще, чем у их сверстников, которые пользуютсяСетью умеренно.Основанием для вывода стала публикация по результатам исследования,произведенного в китайской провинции Гуанчжоу, пишет Руформатор. Из1041 подростка более 940 использовали Интернет аккуратно. А почти 10процентов тинэйджеров Сетью злоупотребляли.Более активных интернетчиков взяли под контроль. Наблюдения за ними втечение девяти месяцев показали, что депрессия у них развивалась в 2,5 раза чаще. Какобъясняют исследователи, у психически здоровых подростков Интернет может вызыватьнарушения здоровья. Правда, имеется и другое объяснение: люди с отклонениями просто болеесклонны часами просиживать в Сети.

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

ФБР обвиняет "Википедию" в пособничествемошенникам

ФБР предъявило претензии к "Википедии". Федеральное бюрорасследований США потребовало, чтобы онлайн­энциклопедия убрала ссайта изображение герба ФБР. Правоохранители сослались на закон ипригрозили судом.В письме владельцу "Википедии" некоммерческому фонду Wikimediaфэбээровцы сослались на закон, запрещающий изготавливать любые копии знакаправоохранительного агентства, сообщают подробности инцидента "Вести.Ru".

Якобы, злоумышленники могут воспользоваться изображением герба на сайте "Википедии" вкорыстных или мошеннических целях. Претензия до смешного нелепая, так как скачатьизображения герба бюро можно по всему Интернету, в том числе ­ на сайте самого ФБР.Неудивительно, что владельцы "Википедии" ответили фэбээровцам вежливым отказом, пишетNew York Times. А в письме, направленном в бюро, главный адвокат некоммерческойорганизации Майкл Годвин заявил, что Wikipedia готова отстаивать свою правоту в суде.

Page 7: VR-Online (July 2010)

IT-News7

vr­online | июль 2010

Adobe судится с российским программистомКомпания Adobe предъявила иск на сумму 900 тыс. руб. программисту изМурманской области. В компании заявляют, что с финансовой точки зренияэто самое крупное дело об интернет­пиратстве в российской практике фирмы.Обвиняемый по делу о нарушении авторских прав компании Adobe 23­летнийМихаил Беляев работает программистом в Кольском научном центре РАН,передает Security Lab.ru со ссылкой на CNews. Михаил поддерживал влокальной сети ftp­сервер, на котором хранилось несколько терабайт данных.Все содержимое этого ресурса предоставлялось пользователям локалки набесплатной основе.

В конце января оперативники отдела «К» пришли с проверкой в офис интернет­провайдера,услугами которого пользуется Беляев. Они определили владельца ftp­сервера и составилипротокол. По словам Беляева, спустя несколько дней после проверки он убрал всеконтрафактное ПО из общего доступа. Но несмотря на это, в марте на него завели дело постатье 146 УК РФ.По словам обвиняемого, первоначально компания оценила ущерб в 750 млн. руб., а размер искасоставил 1,5 млн. руб. (подача иска на удвоенную сумму ущерба – это типовая практика). Послетого, как Беляев признал свою вину, Adobe согласилась оформить мировое соглашение и снизитьсумму до 450 тыс. руб. (соотвественно исковая ­ 900 тыс. руб.). На текущий момент Михаил ужевыплатил компании 50 тыс. руб. Однако иск на сумму 900 тыс. руб. до сих пор находится в суде.Решение по делу будет вынесено 4 августа.

По новой технологии лесные пожары разбомбятВ России разработаны специальные авиационные боеприпасыАСП­500. Они в несколько раз могут повысить эффективностьтушения природных пожаров. Начинка этих боеприпасов –огнегасящий состав. Еще одно преимущество АСП­500 – их можносбросить точно в эпицентр пожара. Как передает "Интерфакс", внастоящее время противопожарная авиация применяет такназываемые сливные средства, из которых реагенты выливаются взону горения. Но потоки нагретого воздуха над пожарищем мешаютпопасть точно по цели. Новые боеприпасы позволят достичь почти100%­ной точности доставки средств тушения. АСП­500представляет собой оболочку с 400 литрами огнегасящего составаи диспергирующим (распыляющим) зарядом, после подрыва которого создается облакодиаметром более 30 метров. При этом образуется поток смеси с начальной скоростью около 400м/сек, который охватывает площадь пожара в 1000 кв м.

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

Виртуальное кладбище на MissYou2.comMissYou2 – виртуальный мемориал, позволяющий создавать виртуальныестранички умерших людей. Это социальный проект, предлагающийсоздавать интернет­мемориалы для сохранения памяти о людях. На сайтеможно ознакомиться также со страничками памяти ряда известных людей.В отличие от американского каталога могил Find A Grave, MissYou2посвящен виртуальным памятникам усопшим. Дизайн MissYou2 весьмапривлекателен. Он выполнен в некоей «облачной» цветовой гамме. Можно поставить егосоздателям плюс за то, что они не взяли в пример те сайты, посвященные теме мертвых,которые активно эксплуатируют мрачные серо­черно­красные тона, комментирует Руформатор.Вверху расположены значки стран, на языки которых можно перевести основные элементысайта, причем перевод вполне корректный и грамотный. Создатели MissYou2 также готовятаналогичный портал для увековечивания памяти животных – PetEden. Функционал портала поканедоступен в полной мере. Дизайн у сайта такой же, как у MissYou2, но в другой цветовой гамме.

Page 8: VR-Online (July 2010)

IT-News8

vr­online | июль 2010

Избраны «хранители» Интернета на случайглобального сбоя сети

Интернет может быть полностью заблокирован. Но только лишь, какобещают, в случае крайней необходимости. Начиная с июля этогогода Глобальная сеть находится под защитой Системы безопасногорасширения доменного имени (DNSSEC).Решением специальной международной комиссии создана группа изшести человек, обладающими сверх полномочиями. В ихраспоряжении находятся специальные коды для перезагрузки сети Интернет в случае ееглобального сбоя, технологической катастрофы или террористической акции, сообщают СМИ.Шесть человек из разных стран мира должны будут ввести каждый свой собственный фрагментпароля, активизирующего процедуру перезагрузки сети Интернет, после ее экстренноговыключения. В настоящее время прессе известен лишь один «хранитель» Интернета из шести.Это преподаватель университета британского города Бас Пол Кейн. Принадлежащий емуфрагмент "ключа" записан на микрочип, вмонтированный в пластиковую карточку.

Информация о других "хранителях" не раскрывается, вероятно, в целях безопасности.

Ты спрашиваешь, Ask.com отвечаетAsk.com ­ четвертый по популярности поисковик среди американцев. Вчерапредставители ask'a сообщили о запуске в тестовом режиме нового сервиса,позволяющего пользователям задавать вопросы реальным людям (аляочередной клон вопросов и ответов от Google, а также Ответы@mail.ru).Создатели новинки надеются, что сервис поможет пользователям получатьответы на сложные вопросы, ответы на которые очень проблематично найти на просторах сети.

Официального названия сервис еще не получил.

Чиновники хотят общаться с народом через SkypeСвязаться с московскими чиновниками можно будет черезпрограмму Skype. Такой странный эксперимент запустили водном из московских округов. К воплощению идеи в жизньподошли на столько серьезно, что власти даже готовят кизданию свой справочник skype­адресов.О новшестве сообщила пресс­служба префектуры Юго­Восточного административного округа Москвы, гдесобственно и реализуется эта инициатива. "В сборниквойдут учетные записи адресов руководителей и сотрудников органов исполнительной власти, втом числе глав управ районов, ответственных за социальное обслуживание жителей", ­ говоритсяв сообщении.По данным пресс­службы, в ближайшее время все 12 управ районов займутся выявлениемсоциально незащищенных граждан, желающих установить web­камеры и подключить системуSkype для общения с представителями органов исполнительной власти, родственниками идрузьями. "Параллельно начнется установка программного обеспечения в управлениях культуры,физической культуры, образования, здравоохранения, семейной и молодежной политики", ­отмечается в сообщении.

Google разработала он-лайн конструкторприложений для AndroidРазработчики компании Google разработали крайне интересный он­лайн сервис. Благодаря новому App Inventor практически любойпользователь с продвинутыми навыками пользователя сможетсоздать свое собственное приложение для популярной мобильнойоперационной системы Android. Естественно сервис насмешитпрофессиональных программистов, которые используют

Page 9: VR-Online (July 2010)

IT-News9

vr­online | июль 2010

инструменты вроде Android SDK, однако для новичков в программировании App Inventorпредоставит отличные возможности для реализации идей.В App Inventor реализована возможность так называемого визуального дизайна приложений ― всервисе представлен дисплей гуглофона, на который прям мышью можно накидатьфункциональных кнопок, эдитбоксов, гиперссылок, текстовых полей. Присутствует функция dragand drop. Оснастив интерфейс своей будущей программы необходимыми элементами, можнозапросто зайти в свойства каждого, более подробно отредактировав функции и параметры.Со слов представителей Google, App Inventor позволит создавать игры, информационныеприложения и даже программы с привязкой к местности. Чтобы получить возможностьиспользовать сетевое приложение, достаточно заполнить форму и дождаться приглашения отGoogle.Ссылка на конструктор: http://appinventor.googlelabs.com/about/

Page 10: VR-Online (July 2010)

Железные новости10

vr­online | июль 2010

Новос

типод

готови

л:Lord

_of_F

earHard-News

Массовый переход на DDR4 начнётся в 201 5 годуХотя мы регулярно наблюдаем, как производители оверклокерскойпамяти выпускают всё более быстрые комплекты DDR3, а компания Intelдаже собирается внедрить для платформы LGA 2011 поддержку памятитипа DDR3­2666, рано или поздно возможности памяти этого поколениябудут исчерпаны, и отрасль начнёт переход на использование памятитипа DDR4. На одном из профильных мероприятий представителикомитета JEDEC недавно сообщили, что стандарт DDR4 будет утверждёнв 2011 году, его внедрение начнётся в 2012 году, а говорить о массовомпереходе на память типа DDR4 можно будет не ранее 2015 года. Модулипамяти типа DDR4 смогут охватить диапазон рабочих режимов от DDR4­2133 до DDR4­4266.

HDD на 3 терабайта в ноутбуке. Уже реально.Уже не первый квартал подряд в мире продаётся больше мобильныхкомпьютеров, чем настольных, и поводов для упразднения этойтенденции нет. Многие пользователи хотели бы иметь на своёмноутбуке все те же удобства, к которым они привыкли в настольномкомпьютере.Компания Eurocom, специализирующаяся на производстве мощныхво всех смыслах переносных компьютеров, с недавних порпредлагает для своих "мобильных рабочих станций" опцию в виде возможности установкичетырёх винчестеров Seagate Momentus объёмом по 750 Гб. Таким образом, совокупный объёмвсех винчестеров, находящихся в корпусе ноутбука, может достигать 3 Тб.

По сравнению с базовой конфигурацией Eurocom Panther D900F, которая уже стоит более $3000,присутствие четырёх винчестеров объёмом по 750 Гб увеличивает стоимость мобильной рабочейстанции на $1424.Zalman оснастил лопасти вентилятора акульими плавниками

Представители самых разных направлений инженерной деятельности сдавних пор пытаются заимствовать конструктивные решения у самойприроды, поскольку эволюция за многие миллионы лет довела некоторыеидеи до степени, близкой к совершенству. Компания Zalman довольнонеожиданно обратилась к этому источнику "вдохновения", выпустивкорпусной вентилятор модели ZM­SF3 с "акульими плавниками" на лопастях.По словам инженеров Zalman, подобная конструкциялопастей позволяет снизить турбулентностьвоздушного потока, что приводит к повышению егоскорости и снижению уровня шума и вибрации.

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

Page 11: VR-Online (July 2010)

Hard-News11

vr­online | июль 2010

Seagate медлит с началом поставок винчестеров объёмом 3 ТбЕщё в конце июня компания Seagate представила винчестер объёмом3 Тб в серии внешних накопителей FreeAgent GoFlex.Предполагалось, что он поступит в продажу по цене $249 вближайшее время, и до конца года Seagate предложит версиювинчестера аналогичного объёма во внутреннем исполнении.Применение последней в современных компьютерах ограничиваетсянеобходимостью отказа от BIOS в пользу EFI и использования 64­разрядных операционных систем.Некоторые магазины уже начали принимать заявки на поставку этого винчестера, но в качестведаты поставки указывается шестое декабря этого года. Возможно, Seagate не рассчитала силы,представив этот довольно сложный в производстве продукт заблаговременно. Винчестерподобного объёма должен содержать пять магнитных пластин. Удастся ли Seagate "раскидать"три терабайта по четырём магнитным пластинам до конца года, пока сказать сложно.

Kingston оснащает модули памяти водоблокомКомпания OCZ Technology давно выпускает модули памяти с гибриднойсистемой охлаждения, которая позволяет опираться на принцип обдуварадиаторов воздухом или использовать интегрированный водоблок, взависимости от ситуации. Компания Kingston решилась установитьводоблоки на серийные модули памяти только сейчас.В серию HyperX H2O вошли двух­ и трёхканальные наборы памяти типаDDR3­2000 (9­10­9­27) и DDR3­2133 (9­11­9­27), работающие при номинальном напряжении 1.65В, и состоящие из модулей объёмом 2 Гб.

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

Способный приютить два вентилятора разных типоразмеров (140 мм и92 мм) радиатор имеет шесть тепловых трубок. Производительностикулера должно хватать для охлаждения процессоров с уровнем TDP до130 Вт включительно. Система креплений предусматривает совместимость с процессорнымиразъёмами LGA 775/1156/1366 и Socket 754/939/AM2/AM3/AM2+.

Page 12: VR-Online (July 2010)

Гатамов РабаданГлавный редактор журнала Progam (http://www.progam.ru/)

12

Расскажите, пожалуйста, про идею созданияжурнала.Идея появилась давно: мы с другом КирилломВалуйским вели небольшой игровой сайт —бесплатные игры, программы warez, все в этомдухе. В какой­то момент захотелось отойти оттемы пиратского контента к чему­то болееинтересному и перспективному, поэтому сталидумать над необычными идеями. И как­тоКирилл сказал, что у него закралась совершеннобредовая идея создать игровой журнал,бесплатный, в противовес дорогостоящимглянцевым. В pdf, например. Не задумываясь, ясогласился, смутно представляя, насколькотитанической будет эта работа.Если говорить коротко: за пару­тройку лет мывыпустили восемь номеров, сменили несколькодоменов, концепций сайта, закрылись в кризис ивернулись только сейчас уже с немного другимэлектронным журналом.Тот журнал, что вы видите на сайте, по сути ужене первый, девятый выпуск Progam,выстраданный путем проб и ошибок. Апредыдущие номера даже стыдно показывать :­)

Про игры выпускается достаточно многоглянцевых журналов, чем progam выделяется наих фоне?Он абсолютно бесплатен. И это принципиально:даже если журнал появится в печати (в идеалестремимся к этому), цена его будет на порядокниже, чем у «титанов» игровой журналистики.

Какие электронные журналы вы читаете?Ну, вот, VR­Online читал недавно :­) А такстараюсь уделять больше времени книгам.

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

Как вы считаете, есть ли будущее уэлектронных журналов?Да. Журналы могут уйти от привычного pdf, нобудущее, безусловно, есть. Взять хотя бы iPad— идеальное средство для чтения электроннойпериодики.

Какой глянцевый журнал (про игры) высчитаете наиболее удачным и почему?Какие необычные у вас вопросы :­)Сейчас не читаю игровые журналы. Нравился«Game.Exe», потому что не боялись отойти отпривычных норм.

Блоги про игры есть, журналы тоже, а вот стелепередачами дела обстоят куда хуже. Как высчитаете, нужна ли сегодня качественнаятелепередача про игры? Например, что­то вроде"Виртуальная реальность" или "От винта" изначала 90­х?Нельзя сделать хорошую, серьезнуютелепередачу про игры. Все это превращается вглупость, плохую и несмешную комедию, гдеведущий с усердием рассказывает «свежиеновости» о слиянии компаний, диктуетвторосортные обзоры, и вообще очень сильнопытается доказать, что происходящее в игровойиндустрии — это очень важно для зрителя.Игры — развлечение, и рассказывать о нихможно только в формате веселой, ни на что непретендующей передачи.

StarCraft 2. Вы ждали эту игру? Успели ужепопробовать? Как на ваш взгляд, игра оправдаетожидания фанатов?Я не играл, не фанат. Но наши авторы ужеиграли, на сайте есть хороший обзор от СашиЛозовского (http://www.progam.ru/content/starcraft­ii­wings­liberty­mnenie), плюс в журнале будетеще одно развернутое мнение от РоманаКусайко.

Как вы относитесь к фильмам поодноименным играм? Стоит ли вообще сниматьтакое кино? Если я не ошибаюсь, подобныеvr­online | июль 2010

VrIP-Персона

Page 13: VR-Online (July 2010)

VrIP-Персона13

vr­online | июль 2010

фильмы всегда получают низкие оценки отфанатов игр.Я подозрительно отношусь к фильмам по играм,хороших экземпляров мало, а хитов совсем ниодного. Из понравившихся вспоминается только«Сайлент Хилл».Снимать нужно, хотя бы потому, что хорошовыходит редко. Но начинать карьеру режиссера свидеоигры, наверное, опасно: вот, оказалосьведь, Уве Болл, прославленный геймерамимагистр треша, делает неплохое кино, судя попоследним работам.

Чего на ваш взгляд не хватает в современныхиграх?Мне кажется, всего хватает :­) Индустриядвижется, развивается, достигается большаяинтерактивность, контент становится удобным идобирается в консоль за один клик. Электронныеразвлечения постоянно улучшаются,эволюционируют, и это прекрасно.

Идеальная игровая платформа на сегодня?(Ваше мнение)Сейчас Xbox 360 себя вполне оправдывает,неплохая цена, новый стиль и все популярныеигры.

Планируете ли вы запуск подкаст лентыпосвященной играм?Нет такого желания. Если нужны интересныеподкасты, послушайте Chiptune, хорошаявосьмибитная музыка(http://gameit.podfm.ru/chiptune/19/). А мы скореесразу возьмемся за видеообзоры, когда придетвремя.

Ну и напоследок, чтобы вы хотели пожелатьнашим читателям?Делайте то, что любите. Рискуйте и пробуйтеразные варианты, стремитесь к цели и неслушайте советы. Ну, и читайте VR­Online иProgam, конечно :­)

Page 14: VR-Online (July 2010)

DelphiПодражаем Office 2007Свой mini­bar

14

Не успели многие начинающие пользователикомпьютера закончить разного рода курсы поосвоению всемирно известного офисного пакетаMS Office 2003, как «злые» программистыкомпании Microsoft написали новую версию MSOffice 2007, в которой интерфейс былкардинально. Что же принес нам новый дизайн?Многие офисные работники, увидев новый видпрограммного продукта, побежали от ужаса вближайшую аптеку за корвалолом. Неужели всетак страшно?После подробного знакомства с приложением,оказалось, что не такой уж он и страшный. Многоочень удобных нововведений, которыезначительно ускоряют написание документов.Одним из таких, на мой взгляд, приятныхновшеств является MS Office Mini­bar.

На мойвзгляд, оченьудобный инструмент ­ где ни кликни мышкой,появляется панель, с возможными вариантамидействий над выбранным объектом, будь этотаблица, рисунок, диаграмма или просто текст.А почему бы не сделать Мини­бар для своейпрограммы? Чем мы хуже Microsoft’а (ничем,просто у нас нет столько денег – прим.редактора)? Тем более сделать это, стехнической точки зрения, вовсе не сложно. Япровел все необходимые исследования ивыяснил все тонкости mini­bar строения.Для созданий своего мини­бара нам понадобитсянемного:1. Базовые знания Delphi2. Голова на плечах3. Руки (прямые)4. И немного старания.ПриступаемПерво­наперво создадим проект нашей новойпрограммы (File­New­Application)! Мини­бар в

нашем случае будет обычная форма, связанна сглавной формой и выполняющая в ней разногорода действия. Пользоваться придется им часто,поэтому для простоты обращения создадимпроцедуру, под названием Minibar. После слов

$R *.dfm

Объявим процедуру:procedure TForm1.Minibar (forma:tform;prozr:boolean; timer_p:ttimer; obr:byte);

Она принимает четыре параметраForma – переменная типа tForm, которая будетслужить для нас шаблоном формы. Какуюформу мы укажем, та и появится в качествемини­бара.Prozr – переменная типа Boolean. Даннаяпеременная будет включать или выключатьплавное появление или исчезновение формы.Вы спросите, зачем этот параметр? Если выбудете писать большой проект, то возможно он увас будет забирать много системных ресурсов,что может привести к «торможению» компьютераи было бы не плохо заранее продуматьвозможность отключения визуальных эффектов.Timer_p – переменная типа tTimer. Онауказывает на таймер, отслеживающийположение курсора. В зависимости от отдалениякурсора мыши от нашего МБ, окошко будетплавно затухать и наоборот, по приближениюпоявляется.Obr – переменная типа byte. В нашей процедуреиспользуется в качестве параметра дляобращения к функции. В моем случае, функцияопределяет два параметра:0 – Создание и обработка формы Мини­бара.1 – Параметр для обращения таймера кфункции. С помощью этого параметра

vr­online | июль 2010

Автор

:Агай

гельди

евРу

сланa

kaAg

RuMa

Кодинг

Page 15: VR-Online (July 2010)

Кодинг15

vr­online | июль 2010

осуществляется обработка появления изатухания формы.Пришло время подробней рассмотретьпроцедуру Minibar. Начнем с параметра – 0.Создадим условие для переменной obr. Дляэтого напишем три, простые строчки:case obr of0:Begin

Для того, чтобы М­Б, появлялся именно в томместе, где мы нажали мышкой, нам требуетсязаписать координаты положения курсора. Ихбудем записывать в переменную типа tPoint.Назовем её «pos», в разделе описанияпеременных Var объявим переменнуюvar

pos : tpoint;

И перепишем следующий код:]case obr of0:begin

pos:=mouse.CursorPos;// переменной pos присваиваем координатыпозиции курсораforma.Show;// Активируем Мини-барforma.Left:=pos.X;// Отступ слева делаем по значению Xforma.Top:=pos.Y-forma.ClientHeight;// Отступ сверху делаем по значению У иотнимаем

// рабочую высоту формы, чтобы нижнийправый край формы был рядом с положениемкурсораif prozr=true then// если параметр прозрачности равен – истина,тогдаbegin

forma.AlphaBlend:=true; //включаем параметр прозрачности формыtimer_p.Enabled:=true; //активируем таймерtimer_p.Interval:=1;// для плавности ставим интервал таймера 1миллисекунду

endelse// если параметр прозрачности не равен истине,значитtimer_p.Enabled:=false; // неактивируем таймер

end;

Теперь поглядим на обработку обращениятаймера. Для работы с таймером придетсяобъявить несколько новых переменных:const

dl = 100; // переменная определяет расстояниеот мини-бара, при котором прозрачность будетравна нулюvar

i, ip : integer;pr,lv,vr,nz,vn:boolean; // pr – справа, lv –слева, vr – сверху, nz – снизу, vn – внутри.

Переходим к коду:1:// Для дальнейшей работы нам надо отследитьгде по отношению к мини-бару находится курсор// всем переменным присваиваем значение - ложьBegin

pr:=false;lv:=false;vr:=false;nz:=false;vn:=false;

// считываем положение курсораpos:=mouse.CursorPos;

// если курсор находится левее чем мини-бар,тогда всем значениям кроме lv присваем ложь,if pos.X<forma.Left thenbegin

pr:=false;lv:=true;vr:=false;nz:=false;vn:=false;

end;// если курсор находится левее чем мини-бар,тогда всем значениям кроме pr присваем ложь,

if pos.X>forma.Left+forma.ClientWidth thenbegin

pr:=true;lv:=false;vr:=false;nz:=false;vn:=false;

end;// если курсор находится левее чем мини-бар,тогда всем значениям кроме vr присваем ложь,

if pos.Y<forma.Top thenbegin

pr:=false;lv:=false;vr:=true;nz:=false;vn:=false;

end;// если курсор находится левее чем мини-бар,тогда всем значениям кроме nz присваем ложь,

if (pos.Y>forma.Top+forma.ClientHeight) thenbegin

pr:=false;lv:=false;vr:=false;nz:=true;vn:=false;

end;

// если курсор находится левее чем мини-бар,тогда всем значениям кроме vn присваем ложь,if (pos.y<forma.Top+forma.ClientHeight) and

(pos.Y>forma.Top) and(pos.X<forma.Left+forma.ClientWidth)and (pos.X>forma.Left) then

beginpr:=false;lv:=false;vr:=false;nz:=false;vn:=true;

Page 16: VR-Online (July 2010)

Кодинг16

vr­online | июль 2010

end;// движение курсора слева. Отслеживаем насколько курсор левее нашего компонента

if (pos.X<forma.Left) and (pos.X>forma.Left-dl+5)and (lv=true) thenbegin

// в зависимости от расстояния между курсороми Мини-баром делаем форму прозрачнойip:=255-(forma.Left-pos.X)*(round(255/dl));

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

if ip>=0 thenforma.AlphaBlendValue:=ip;

// если прозрачность формы от нуля до пяти,значит можно её закрытьif (forma.AlphaBlendValue=0) or

(forma.AlphaBlendValue<5) then forma.close;end;

// движение курсора справаif (pos.X>(forma.Left+forma.Width)) and

((pos.X<(forma.Left+forma.Width+dl-5))) and(pr=true) thenbegin

ip:=(forma.Left+forma.ClientWidth-pos.X)*(round(255/dl));if ip<0 thenip:=255-ip*(-1);

// если прозрачность меньше нуля, тогдаумнажаем на -1, чтобы поменять знакif ip>=0 thenforma.AlphaBlendValue:=ip;

if (forma.AlphaBlendValue=0) or(forma.AlphaBlendValue<5) then forma.close;end;

// движение курсора сверхуif (pos.Y<forma.top) and (pos.Y>(forma.Top-dl+3)) and (vr=true) thenbegin

ip:=255-(forma.Top-pos.y)*(round(255/dl));if ip>=0 thenforma.AlphaBlendValue:=ip;

if (forma.AlphaBlendValue=0) or(forma.AlphaBlendValue<5) then forma.close;

end;// движение курсора снизу

if (pos.Y>forma.top+forma.ClientHeight) and(pos.Y>(forma.Top+forma.ClientHeight-dl+3)) and(nz=true) then

beginip:=(forma.Top+forma.ClientHeight-pos.y)*(round(255/dl));if ip<0 thenip:=255-ip*(-1);if ip>=0 thenforma.AlphaBlendValue:=ip+255;if (forma.AlphaBlendValue=0) or(forma.AlphaBlendValue<5) then forma.close;

end;// Для того, чтобы Мини-бар был полностьюнепрозрачным,// обрабатываем случай, когда курсор расположеннад мини-баром

if (pos.X>forma.Left) and(pos.X<forma.Left+forma.clientWidth)and (pos.Y>forma.Top) and(pos.Y<forma.Top+clientheight) and (vn=true)then

beginforma.AlphaBlendValue:=255;

end;button1.Caption:=inttostr(ip);

end;end;…

Теперь приступим к созданию самого Мини­бара!Создаем новую форму, Нажимаем Alt+F11,связываем её с формой Form1. Такое жедействие проделываем и с главной формой,связывая, её с формой Мини­бара.При создании мини­бара я использовалбиблиотеку Alpha Control, благодаря ней, у меняполучился примерно такой вот Мини­бар.

При создании Мини­бара рекомендую следоватьследующим пунктам:1. Мини­бар следует делать как можнокомпактней, так, чтобы он как можно меньшепространства занимал на экране.2. При использовании выпадающих списков,вам следует отключать таймер, так как есливысота списка больше 100, то форма будетзакрываться.3. Все компоненты рекомендуетсяотодвинуть от краев формы примерно на 3­5пикселей, благодаря этой операции, припоявлении Мини­бара он будет отличаться отформы.Мини­бар мы создали, теперь давайтеразберемся, как его вызывать. В обработчикенужного вам события впишите следующуюстрочку.minibar(form2,true,timer1,0);

Добавьте на форму таймер и сделайте его неактивным. В обработчике OnTimer пишем:procedure TForm1.Timer1Timer(Sender: TObject);beginminibar(form2,true,timer1,1);end;

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

Page 17: VR-Online (July 2010)

DelphiАсечные страстиЧасть 1.

17

Сервисы для мгновенного обмена сообщениямиплодятся как грибы, однако старушка Аська несобирается сдавать позиции. Чего с ней тольконе случалось! Ее создали на «святой» земле,продали американскому монстру, а тот и вовсепередал ее в руки российских бизнесменов.Несмотря на все перетрубации, аська все ещепопулярна среди простых смертных и в ее рядахнаблюдается пополнение.Такое положение дел не оставляет нам выборакак взять и разобраться во всех тонкостяхасечного протокола.

Немного историиПоявилась на свет ICQ в большом израильскомгороде Тель­Авив. Изначально ее хотелииспользовать только для обеспечения связимежду несколькими удаленными друг от другакомпьютерами. Именно так и появилась всемизвестная аська.После создания ICQ никто не планировалвыпускать ее на паблик и пытаться как­томонетизировать. Разработчики лишь хотелиоблегчить себе работу, путем экономии времени(еще бы, какой гик не любит общаться прямо сосвоего рабочего места?).Первыми маркетинговыми шагами можно считатьраспространение среди своих друзей. Толькопотом проект был выложен в сеть и каждыйжелающий мог воспользоваться удобнойболталкой.Сказать, что у нее мгновенно появилисьпользователи, значит, не сказать ничего. ICQпоявилась на тысячах компьютерах разных странмира буквально за пару дней, и потребность вкнопке скачать ICQ стала невообразимой.В 1998 году ICQ была приобретена компаниейAOL за 407 миллионов долларов. А разработчикипереквалифицировались в инвесторов. Мироваясеть ежедневно, можно даже сказатьежесекундно разрастается и расширяется.Каждый день в ICQ регистрируются тысячи

новых пользователей. Многие имеют понесколько UIN'ов, один нужен для работы, одиндля дома, другой для знакомств и т. д. Вот такаявот хорошая вещь аська.Ася + DelphiДля взаимодействия с асечным протоколом ужедавно существует провереннный временемкомпонент — ICQClient. Написал этот чудесныйкомпонент не кто­то, а наш с вамисоотечественник ­ Александр Демченко akaCoban2k. К сожалению, автор забросилподдержку компонента, но его дело не умерло.Ныне за совершенствованием проектазанимается Царь Иоанн XIIIhttp://progs.volkov.spb.su/ticqclientПо указанному линку можно найти последнююверсию компонента, а также примерыиспользования.Работаем с компонентомНу вот, теперь давайте перейдем к установкекомпонента. У меня Delphi 7 и я скачалкомпонент TICQClient_v1.35_alphahttp://forum.volkov.spb.su/index.php?action=dlattach;topic=13747.0;attach=25.Устанавливается компонент как обычнаябиблиотека. Не забудьте прописать путь ккомпоненту в настройках (если он автоматом непрописался).Ну все, установку закончили.Переходим к более близкомузнакомству. Компонент находитсяна вкладке Samples, бросаем егона форму и смотрим свойства.UIN и Password. Как вы уженаверное поняли, это ваш уин ипарольICQServer: String ­ ICQ сервер,следует использовать:'login.icq.com'ICQPort: Word ­ ICQ port, следует

vr­online | июль 2010

Автор

:akaG

radКодинг

Page 18: VR-Online (July 2010)

Кодинг18

vr­online | июль 2010

использовать: '5190'ContactList: Tstrings ­ Контакт лист пользователя,*посылается только при логине*. Каждая строчка­­ UIN номер.ConvertToPlaintext: Boolean ­ Если это свойствоустановить в TRUE, тогда сообщения,приходящие в RTF(Rich Text Format) формате,автоматически будут сконвертированы в простойтекст(plain text).AutoAwayMessage: String ­ Авто­ответпользователя. В обычной ICQ это ответ на 'ReadAway­message'.VisibleList: Tstrings ­ Visible лист пользователя.Каждая строка ­­ UIN номер. Посылается, когдавы переходите в invisible статус. Добавлятьпользователя можно в любое время.InvisibleList: Tstrings ­ Invisible лист пользователя.Каждая строка ­­ UIN номер. Посылается, когдавы переходите в статус отличный от invisible.Добавлять пользователя можно в любое время.Вот эти основные свойства с которыми нампредстоит работать. Теперь взглянем насобытия:Login(Status: LongWord = S_ONLINE) ­ Процедураустанавливает соединение с сервером, вы сразупереходите в статус Status, который поумолчанию S_ONLINEprocedure Disconnect ­ Отсоединиться отсервера.SendMessage(UIN: LongWord; Msg: String) ­Послать сообщение UIN'у.AddContact(UIN: LongWord): Boolean ­Добавление UIN'а в ваш контакт лист послелогина. UIN автоматически добавляется вContactList TStrings.RemoveContact(UIN: LongWord) procedure ­Удаляет UIN из вашего контакт листа.Используйте пока вы в онлайне.С мат частью немного разобрались. Приступим кпрограммировании ICQ bot. Открываем Delphi исоздаем новый проект. Голую форму приводимпримерно вот к такому виду:

Я добавил Edit для уина иMaskEdit для пароля. ДвеButton для коннекта идисконекта. ListBox дляответов и Memo длясобытий. Теперь начинаемкодить. По нажатию накнопку коннект пишемследующий кодprocedureTForm1.SpeedButton1Click(Sender: TObject);

beginIcqClient1.UIN:=StrToint(Edit1.Text);ICqClient1.Password:=MaskEdit1.Text;IcqClient1.Login(0);Memo1.Lines.Add('Подключение...');SpeedButton1.Enabled:=False;SpeedButton2.Enabled:=True;

end;

В первой и во второй строке мы читаем Уин ипароль, далее мы начинаем коннектится ксерверу после чего добавляем события в Memo.Активируем кнопку дисконекта , а кнопкуконнекта деактивируем чтобы не былоповторного коннекта. Далее пишем что будетделать бот после коннекта:procedure TForm1.ICQClient1Login(Sender:TObject);beginImage1.Picture.LoadFromFile('1.png');StatusBar1.Panels[0].Text:='Онлайн';Memo1.Lines.Add('Онлайн');

end;

Здесь все просто, загружаем фото в Image,добавляем сообщение в статус бар и мемо.Дальше самое интересное. Что будет делать ботпосле получения сообщения от пользователя.Конечно же он должен ему ответить, а отвечатьмы будем сообщениями из листбокса, взятыерандомным образом:procedure TForm1.ICQClient1MessageRecv(Sender:TObject; Msg, UIN: String);VarMessage_s:String;

beginMessage_s:=ListBox1.Items.Strings[Random(4)];Memo1.Lines.Add('От - '+UIN+' '+ Msg);Memo1.Lines.Add('Кому - '+Uin+' ' + '('+'Я'+Message_S+')');IcqClient1.SendMessage(StrToInt(Uin),'Я'+Message_S);

end;

Что делает первая строчка ­ я уже говорил.Далее мы банально добавляем событие в мемои в конце отправляем пользователю сообщение.Осталось запрограммировать кнопкудисконнекта. Пожалуй, это самый простой код:procedure TForm1.SpeedButton2Click(Sender:TObject);beginIcqClient1.Disconnect;SpeedButton1.Enabled:=True;SpeedButton2.Enabled:=False;Image1.Picture.LoadFromFile('2.png');StatusBar1.Panels[0].Text:='Офлайн';Memo1.Lines.Add('Отключен');

end;На этом первый урок асечных страстей подошелк концу. Увидимся в следующем номере!

Page 19: VR-Online (July 2010)

JavaAndroid OSПишем первое приложение

19

Android OS ­ операционная система длямобильных устройств, основанная на ядре Linux.Первая версия датируется октябрем 2008 года.Сегодня довольно много производителейпредставили свои модели на базе именно этойОС. Вот недавно и я купил себе один из них, аименно HTC Tattoo. Естественно я загорелсяидеей написание собственных программ дляэтой платформы. В этой статье я расскажу тебе,как написать свое первое приложение длясовременной мобильной ОС.ИнструментарийПрежде чем что­то писать, надо понять на какомязыке, и в какой среде это делать. В качествесреды проще всего использовать Eclipse. Кроменего нам понадобится JDK, Android SDK, испециальный плагин для Eclipse которыйзначительно упростит нам жизнь. О том, как всеэто устанавливать я писать не буду. Приминимальных знаниях английского об этомможно прочитать наhttp://developer.android.com/sdk/installing.html.Для каждой версии ОС, а их уже достаточномного, SDK свой, и качать все их не стоит (онивесят больше 1 Гб). Лучше скачать лишь туверсию, под которую пишется программа,естественно, если она создается дляраспространения в массы, стоит подумать оработоспособности под всеми основнымиверсиями платформы.В качестве языка программирования (дляосновного кода) применяется Java, а длясоздания пользовательского интерфейсаиспользуется и XML. Кроме того интерфейсможно создавать интерактивно, перемещаякомпоненты мышкой на форму.Hello, World!Сегодня мы не будем нарушать традицию иначнем наше изучение с приложения «Привет,Мир!», точнее даже с двух его версий.В Eclipse наживаем File­>New­>Project, в спискевыбираем Android­>Android Project и жмем Next.Далее вводим имя проекта например HelloWorld,

и выбираем версию SDK. Далее нужнозаполнить 3 поля с неочевидным смыслом. Язаполнил их следующими значениями:Application name: Hello, World!Package name: com.example.helloworldCreate Activity: HelloWorld

Об их смысле я скажу чуть позже, а сейчас жмемFinish. Проект состоит из нескольких папок:src – исходный кодgen – файлы сгенерированные самой JavaAndroid 1.6 – у вас может быть другая версия,часть SDKres – файлы ресурсов, содержит несколькоподкаталогов, сейчас самым важным для насбудет layout.В файле HelloWorld.java уже есть какой­томинимальный код. Давайте немногомодифицируем его. Модифицируете его так,чтобы он имел следующий вид.package com.example.helloworld;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class HelloWorld extends Activity

/** Called when the activity is firstcreated. */@Overridepublic void onCreate(BundlesavedInstanceState)

super.onCreate(savedInstanceState);TextView tv = new TextView(this);tv.setText("Hello World!");setContentView(tv);

Мы добавили в наше приложение возможностьдоступа к TextView – компоненту дляотображения текста. Программированиеосуществляется через обработку событий.Событие onCreate вызывается при первомзапуске приложения. Там мы создаем текстовоеполе, и устанавливаем для него текст.

Автор

:Крыл

овЕго

рE­m

ail:kril

ov­ego

r@yan

dex.ru

Кодинг19

vr­online | июль 2010

Page 20: VR-Online (July 2010)

Кодинг20

vr­online | июль 2010

Вызовом setContentView(tv) мы отображаемнаше поле на экране. Попробуем запуститьпроект, но тут выскакивает сообщение о том, чтонет совместимого девайса и нужно его создать.Другими словами нужно создать виртуальнуюмашину­телефон на котором запустится нашеприложение.Для того чтобы его создать жмем New, в окневводим любое имя, а так же выбираем версиюОС, остальные поля можно не заполнять. Каквидно можно создать по виртуальному девайсуна каждую версию ОС и проверять программу наработоспособность.Единственный минус это то, что виртуальныедевайсы по умолчанию сохраняются в папкепользователя, и в пути к ней не должно бытьрусских букв. Пробуем еще раз и ждем порядкаминуты пока загрузится эмулятор, и видим нашеприложение на экране. На серой полосе вверхней части экрана мы видим надпись Hello,World! – это значение поля Application name,заполняемое при создании проекта, а далее начерном фоне видим надпись Hello World! – какраз тот текст который мы установили для нашегоTextView. К сожалению, таким образом, мы несможем отобразить на экране больше одногокомпонента, а это совсем не то, что нам нужно,поэтому придется еще немного модифицироватькод. А точнее вернуться к его первоначальномувиду.Вместо создания TextView там была всего однастрока setContentView(R.layout.main). Но что жетакое R.layout.main? R – это служебный класс,который находится в папке gen, да и layout тоже.Ну а если проще то на экране будет отображенфайл main.xml из папки layout. Откройте его.Судя по первой строке это обычный xml файл. Внем содержится описания компонентов и ихсвойств. Некоторые компоненты являютсяконтейнерами и содержат в себе другиекомпоненты. Пример такого уже приведен вовторой строке. Это LinearLayout. Он определяетспособ расположения других компонентов друготносительно друга, наряду с ним существуетнесколько других таких компонентов. Поговоримо его свойствах, установленных по умолчанию.android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"

Первое означает, что компоненты будутрасполагаться вертикально друг под другом, адва других то, что LinearLayout будет заниматьвсе место, которое для него предназначено, вданном случае весь экран. У него есть ещемножество других свойств, но это выходит зарамки данной статьи. Далее в нем содержитсяуже знакомый нам TextView.

<TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/hello"/>

Два первых свойства нам знакомы. Значениевторого означает то, что компонент будет такойвысоты которая нужна, и будет ее менять еслиэто нужно. А вот значением третьего свойстваявляется какое­то странное. Это ссылка настроку которая определена в ресурсах, а именнов файле strings.xml и имеет имя hello. В моемслучае оно имеет значение Hello World,HelloWorld!. Запустив приложение, мы и увидимего в окне эмулятора.ЗаключениеНа этом я заканчиваю сегодняшнюю статью. Онабыла только обзорной и ввела лишь в азыпрограммирования для андроида. Если она кого­то заинтересовала то напишите мне на почтуили на форуме и возможно в следующем номерепоявится следующая статья в которой мы идальше будем разбираться в программированиидля этой ОС.

Page 21: VR-Online (July 2010)

C#Ввод данных

21

Практически в каждом приложении возникаетнеобходимость введения некоторых данныхпользователем. Казалось бы, нет ничего проще –кидаем на форму компонент TextBox – и делосделано. Но часто требуется ввод данных вдиалоговом окне. Как поступить в данномслучае?Для рассмотрения этого вопроса, я создалследующую форму:

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

Теперь в проекте мы можем использоватьследующий код:label1.Text =Microsoft.VisualBasic.Interaction.InputBox("Input new value", "Interaction", "value",this.Left, this.Top);

Как видно, метод InputBox принимает пятьпараметров. Первый из них – это приглашение квводу, второй – заголовок окна, третий –значение по умолчанию (вполне можноиспользовать и string.Empty), четвертый и пятый– это координаты верхнего левого угла (обапараметра имеют тип int). Вызывая такимспособом InputBox, мы получаем окно такоговида:

Если пользователь нажал кнопку Ok, то InputBoxвернет введенное значение, а если кнопкуОтмена или просто закрыл окно – то пустуюстроку (т.е. исключения в приведенной вышестроке кода мы в любом случае не получим).Но что делать, если от пользователя нужнополучить два или более значений? ВызыватьInputBox подряд несколько раз – наверно,наихудшее решение в плане юзабилити, котороеможно придумать.Я предлагаю создать в проекте новую формупримерно такого вида:

Для того чтобы окно напоминало диалог, следуетизменить следующие параметры формы:• Назначить свойствам AcceptButton иCancelButton соответствующие кнопки.

vr­online | июль 2010

Автор

:Поро

тников

Андре

йaka

wwwn

etКодинг

Page 22: VR-Online (July 2010)

Кодинг22

vr­online | июль 2010

• Свойству FormBorderStyle – значениеFixedDialog.• Свойствам MaximizeBox и MinimizeBox –значении false.• Также назначить свойствам ShowIcon иShowInTaskbar значение false.В классе формы объявим две статическиепеременные:private static string value1 = null;private static string value2 = null;

Так как нам потребуется извлекать значения этихпеременных из другой формы, зададим еще паруметодов­аксессоров:public static string GetValue1

get

if (null == value1)throw newNullReferenceException();

elsereturn value1;

public static string GetValue2

get

if (null == value2)throw newNullReferenceException();

elsereturn value2;

Если форма ни разу не вызывалась ипеременным не задавались значения, будетвыброшено исключение NullReferenceException.Чтобы избежать падения приложения из­заисключения, в коде обработки события нажатиякнопки Ok напишем следующее:value1 = textBox1.Text;value2 = textBox2.Text;this.DialogResult = DialogResult.OK;

Соответственно, в коде обработчика нажатиякнопки отмены вставим такой код:value1 = value2 = null;this.DialogResult = DialogResult.Cancel;

Если форму закроют, то свойству DialogResultтакже будет присвоено значениеDialogRsult.Cancel.Таким образом, можем воспользоваться даннойформой следующим образом:

Form2 frmNew = new Form2();if (DialogResult.OK == frmNew.ShowDialog())

label1.Text = Form2.GetValue1 +Environment.NewLine + Form2.GetValue2;

В этом куске кода мы проверяем DialogResult,возвращаемый второй формой. Если он равенDialogResult.OK, то значения value1 и value2обязательно заданы и исключения мы неполучим.

Page 23: VR-Online (July 2010)

С#Простая база данных фильмов на C#

23

В этой небольшой статье я хочу рассказать тебепро написание простейшей база данныхфильмов, или проще говоря, видео каталога, припомощи C# и Microsoft Access. В статье ярассмотрю все необходимые моменты:подключение к программе mdb файла,чтение/запись данных с использованиемdataGridView и т.д.

Лепим приложениеПервым делом, тебе необходимо создать базуданных в Microsoft Access. База данных оченьпроста, поэтому у тебя есть непаханое поле дляэкспериментов и совершенствования.// Первая таблица будет содержать фильмы// где movieID является авто-увеличивающимсязначением, также primary key //(главнымключом), и typeID вторичным ключом (foreignkey)// movies (movieID, Title, Publisher,Previewed, Year, typeID)// ---------------------------------------------------------------// Вторая таблица будет хранить жанры фильмов// movietypes (typeID, Type)

Если ты сразу планируешь создать большуюбазу, то воспользуйся каким­нибудь генераторомбазы данных. Для небольшого проекта, такогокак этот, в применение таких инструментов нетнеобходимости.Ok, теперь у нас есть база данных. Можнодвигаться дальше. Microsoft Access позволяетдобавлять записи, но мы хотим создавать их из

своего приложения. Для решения этой задачимы воспользуемся пространством именSystem.Data.OleDB. В нем есть все необходимыеметоды для соединения с базой данных иманипуляцией имеющимся в ней данными.В конструкторе основной формы, приложениесоединяется с базой данных при помощиследующего кода:public Form1()

InitializeComponent();// initiate DB connectionstring connectionString ="Provider=Microsoft.Jet.OLEDB.4.0;

Data Source=moviedb.mdb";try

database = newOleDbConnection(connectionString);database.Open();//SQL query to list moviesstring queryString = "SELECT movieID,Title,

Publisher, Previewed, Year, TypeFROM movie,movieType WHEREmovietype.typeID = movie.typeID";

loadDataGrid(queryString);catch (Exception ex)

MessageBox.Show(ex.Message);return;

Метод loadDataGrid загружает данные из базыданных в компонент dataGridView, при помощиSQL запроса, записанного в строковойпеременной queryString. Реализация ниже:public void loadDataGrid(stringsqlQueryString)

OleDbCommand SQLQuery = newOleDbCommand();DataTable data = null;dataGridView1.DataSource = null;SQLQuery.Connection = null;OleDbDataAdapter dataAdapter =null;dataGridView1.Columns.Clear(); //<-- clear columns

vr­online | июль 2010

Перев

од:Иго

рьАн

тонов

akaSp

ider_N

ETE­m

ail:ant

onov.ig

or.khv@

gmail.

comКодинг

Page 24: VR-Online (July 2010)

SQLQuery.CommandText =sqlQueryString;SQLQuery.Connection = database;data = new DataTable();dataAdapter = newOleDbDataAdapter(SQLQuery);dataAdapter.Fill(data);dataGridView1.DataSource = data;dataGridView1.AllowUserToAddRows =false; // <-- remove the null linedataGridView1.ReadOnly = true;// <-- so the user cannot type// following code defines columnsizesdataGridView1.Columns[0].Visible =false;dataGridView1.Columns[1].Width =340;dataGridView1.Columns[3].Width =55;dataGridView1.Columns[4].Width =50;dataGridView1.Columns[5].Width =80;// insert edit button intodatagridvieweditButton = newDataGridViewButtonColumn();editButton.HeaderText = "Edit";editButton.Text = "Edit";

editButton.UseColumnTextForButtonValue = true;editButton.Width = 80;

dataGridView1.Columns.Add(editButton);// insert delete button todatagridviewdeleteButton = newDataGridViewButtonColumn();deleteButton.HeaderText = "Delete";deleteButton.Text = "Delete";

deleteButton.UseColumnTextForButtonValue =true;deleteButton.Width = 80;

dataGridView1.Columns.Add(deleteButton);

Интересной частью этого кода являетсядобавление кнопок в ячейки dataGridView. Припомощи этих кнопок, ты сможешь обновлять илиизменять выделенные строки. Если тебе ненравится вариант с кнопками для каждой строки,то можешь создать всего лишь две кнопки (внекомпонента dataGridView) и забиндить на нихредактирование и удаление записей длявыделенной строки. Для своего примера яиспользую первый способ.Теперь нам нужно найти ответ на одининтересный вопрос: «Как узнать когда нажаликнопку в определенной ячейке и собственно какповесить на эти кнопки код обработчикасобытий?». Мой пример решения ниже:private void dataGridView1_CellContentClick

(object sender, DataGridViewCellEventArgse)

string queryString = "SELECT movieID,Title, Publisher,Previewed, Year, TypeFROM movie, movieType WHEREmovietype.typeID = movie.typeID";

int currentRow =int.Parse(e.RowIndex.ToString());try

string movieIDString =dataGridView1[0, currentRow].Value.ToString();movieIDInt = int.Parse(movieIDString);

catch (Exception ex) // edit buttonif (dataGridView1.Columns[e.ColumnIndex]== editButton && currentRow >= 0)

string title = dataGridView1[1,currentRow].Value.ToString();string publisher = dataGridView1[2,currentRow].Value.ToString();string previewed = dataGridView1[3,currentRow].Value.ToString();string year = dataGridView1[4,currentRow].Value.ToString();string type = dataGridView1[5,currentRow].Value.ToString();Form2 f2 = new Form2();f2.title = title;f2.publisher = publisher;f2.previewed = previewed;f2.year = year;f2.type = type;f2.movieID = movieIDInt;f2.Show();dataGridView1.Update();

...

Как видишь, я использую событиеCellContentClick. После того как выполненонажатие кнопки, мне необходимо узнатьвыделенную строку. Я получаю индекс это наосновании e.RowIndex. Используя этупеременную, ты можешь получить значениелюбой колонки выделенной строки. Как и былопоказано, первый параметр – это номер колонки,а второй – номер строки. Когда обновлениевыделенной строки завершается в Form2, явызываю метод Update() на объектеdataGridView1, тем позволяя сразу увидетьизменения, которые были сделаны.Кнопка «Удалить» работает по такому жепринципу:// delete buttonelse if (dataGridView1.Columns[e.ColumnIndex]==deleteButton && currentRow >= 0)

// delete SQL querystring queryDeleteString =

"DELETE FROM movie WHERE movieID ="+movieIDInt+"";OleDbCommand sqlDelete = newOleDbCommand();sqlDelete.CommandText = queryDeleteString;sqlDelete.Connection = database;sqlDelete.ExecuteNonQuery();

Кодинг24

vr­online | июль 2010

Page 25: VR-Online (July 2010)

loadDataGrid(queryString);

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

Кодинг25

vr­online | июль 2010

Автор: Ivan SvogorОригинал статьи:http://www.codeproject.com/KB/cs/simple_movie_database.aspx

Page 26: VR-Online (July 2010)

С#Простой телефонный справочник на C#

26

Несколько дней назад я потерял свой мобильник.Все мои контакты были сохранены в телефоне исамо собой были утеряны вместе с ним. Ксчастью, в скором времени я нашел свойтелефон, но перед находкой, я решил создатьпростенькое приложение для хранения контактоваля телефонный справочник. В качестве языкапрограммирования я выбрал C#, а такжезадействовал технологию LINQ. Хранилищемвсех контактов будет зашифрованный 3DESалгоритмом XML­файл.

Что умеет мой справочникПеред тем как привести код, я хотел бырассказать о функциональных возможностяхмоего приложения. Я не стал извращаться иреализовал лишь необходимый мне функционал.1. «Живой» поискЛюбой контакт можно найти при помощивстроенного поискового механизма. Вводимпервые буквы имени контакта и сразу же видимрезультат.2. Многопользовательский режимС моим приложением могут работать несколькопользователей. Каждый пользователь будетвидеть лишь свои контакты.3. Вспоминалка паролейЕсли ты хочешь заюзать эту функцию, то тебенеобходимо ввести валидное имя пользователяи пароль своего SmtpClient в коде C#. Крометого, ты можешь ввести имя пользователя ипароль своего Gmail аккаунта. Все данные

вводятся в Forgets the password region модуляUserForm.cs.

try

NetworkCredential loginInfo = newNetworkCredential("username", "password");MailMessage msg = new MailMessage();msg.From = newMailAddress("[email protected]");msg.To.Add(newMailAddress(user.First().Attribute("Email").Value));msg.Subject = "Phonebook Password";msg.Body = "Yours Password = " + password;msg.IsBodyHtml = true;SmtpClient client = newSmtpClient("smtp.gmail.com");client.EnableSsl = true;client.UseDefaultCredentials = false;client.Credentials = loginInfo;client.Send(msg);MessageBox.Show("Your password has beensent to your email", "Email sent",

MessageBoxButtons.OK,MessageBoxIcon.Information);catch (Exception ex)

MessageBox.Show(ex.Message, "Error",MessageBoxButtons.OK, MessageBoxIcon.Error);

После внесения изменений не забудь выполнитькомпилирование проекта.4. БезопасностьДля обеспечения безопасности контактов яприменяю классы .NET 3DES//Base on : http://msdn.microsoft.com/en-us/library/system.security.cryptography.

//tripledescryptoserviceprovider.aspxpublic static void EncryptToFile(String Data,

vr­online | июль 2010

Перев

од:Иго

рьАн

тонов

akaSp

ider_N

ETE­m

ail:ant

onov.ig

or.khv@

gmail.

comКодинг

Page 27: VR-Online (July 2010)

Кодинг27

vr­online | июль 2010

String FileName, byte[] Key, byte[] IV)

try

//Создаем или открываем определенныйфайлFileStream fStream =File.Open(FileName, FileMode.Create);// Создаем a CryptoStream используюFileStream// и передаем ключ с векторинициализации (IV).CryptoStream cStream = new CryptoStream

(fStream, newTripleDESCryptoServiceProvider().CreateEncryptor(Key, IV),CryptoStreamMode.Write);

// Создаем StreamWriter используяCryptoStream.StreamWriter sWriter = newStreamWriter(cStream);// Записываем данные в поток// и зашифровываем их.sWriter.WriteLine(Data);// Закрываем поток// и закрываем файл.sWriter.Close();cStream.Close();fStream.Close();

catch (CryptographicException e)

Console.WriteLine("A Cryptographicerror occurred: 0", e.Message);catch (UnauthorizedAccessException e)

Console.WriteLine("A file access erroroccurred: 0", e.Message);

public static string DecryptFromFile(StringFileName, byte[] Key, byte[] IV)

try

// Создаем или открываем файл.FileStream fStream =File.Open(FileName, FileMode.OpenOrCreate);// Создаем CryptoStream используяFileStream// и ключ с вектором инициализации(IV).CryptoStream cStream = new CryptoStream

(fStream, newTripleDESCryptoServiceProvider().CreateDecryptor(Key, IV),CryptoStreamMode.Read);

// Создаем StreamReader используяCryptoStream.StreamReader sReader = newStreamReader(cStream);// Читаем данные из потока// и расшифровываем их.string val = sReader.ReadToEnd();// Закрываем потоки// и закрываем файл.sReader.Close();cStream.Close();fStream.Close();

// Возвращает строкуreturn val;

catch (CryptographicException e)

Console.WriteLine("A Cryptographicerror occurred: 0", e.Message);return null;

catch (UnauthorizedAccessException e)

Console.WriteLine("A file access erroroccurred: 0", e.Message);return null;

Если кто­то откроет XML файл, то контактов онне увидит, т.к. они все данные зашифрованы. Япредлагаю тебе изменить Ключ и Вектор на своисобственные (см. TripleDES.cs). По умолчанию вкачестве ключа и вектора используются:public static byte[] ByteKey =

new byte[] 65, 20, 35, 105, 249, 97,242, 87, 163, 127, 124, 121,73, 225, 209, 103, 5, 198, 68, 221, 122,14, 224, 2 ;

public static byte[] IV = new byte[] 160,175, 98, 111, 208, 167, 177, 23 ;

В случае если ты новичок в 3DES или вообще ниразу с ним не сталкивался, то воспользуйсяприложением TripleDES Key, IV Creator(программа прилеплена к статье). С егопомощью ты сможешь сгенерировать новыйвектор и ключ.

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

Ты можешь изменять направление сортировкиконтактов или типа календаря (для отображениярегистрационной даты). Также я предусмотрелвозможность изменение размера шрифта.Автор статьи: Mohammad DayyanОригинал статьи:http://www.codeproject.com/KB/cs/CSharpPhoneBook.aspx

Page 28: VR-Online (July 2010)

PythonРецепты

28

При написании следующих рецептов, япредполагаю, что читатель имеет представлениео программировании. Заострять внимание буду восновном на том, что пригодится припрогнозировании цен акций. То есть будутрассмотрены рецепты на следующие темы:массивы, работа со строками и файлами, работас интернетом и написание собственных функцийи модулей, а так же построение графиков идиаграмм. Данные статьи будут большепозиционироваться как справочный материал(читай шпаргалка). Собственно это даже нестатьи. Это подробно документированные кускикода.МассивыСейчас мы узнаем о том, как работать смассивами.# создаем пустой массивa = []# различными способами добавляем к нему триэлемента: 5, 6 и 7a.append(5)a = a + [6]a += [7]# создаем массив из трех элементовb = [1, 2, 3]# объединяем массивы a и bc = a + b # теперь массив c выглядит так: [5,6, 7, 1, 2, 3]c = b + a # а теперь так: [1, 2, 3, 5, 6, 7]# выведет 6 - четвертый эелемент массива(нумерация начинается с нуля)print c[4]# выведет последний и предпоследний элементымассиваprint c[-1], c[-2]# выведет все элементы массива кроме первыхдвухprint c[2:]# выведет последние два элемента массиваprint c[-2:]# выведет первые два элементаprint c[:2]# выведет все элементы кроме последних двухprint c[:-2]# выведет весь массив кроме первых двух ипоследних трех элементовprint c[2:-3]# выведет количество элементов в массивеprint len(c)

Ветвления и циклыТеперь рассмотрим, как организовать на pythonциклы и ветвления (обработка массивов вцикле, использование break и continue). В статьеприведен необходимый минимум материала,поэтому если кто­то считает список примеровкода неполным – оставляйте в комментарияхпредложения. Прочитав вариантыиспользования циклов и ветвлений обязательнопоэкспериментируйте в PyScripter, и Вашиволосы будут мягкими и шелковистыми ). Ужескоро будем применять полученные знания напрактике.## условия - if# простейшее условиеa = 1if a == 1:

print u'один'# используем elsea = 1if a == 1:

print u'один'else:

print u'не один'# усложняем ветвление - несколько вариантовif a == 1:

print u'один'elif a==0:

print u'ноль'else:

print u'не один и не ноль'# краткая форма записиx = u'один' if a == 1 else u'не один'print x# наличие элемента в массивеa = [1, 2, 3]x = 5if x in a:

print u'5 присутствует в массиве'else:

print u'5 не присутствует в массиве'# отсутствие элемента в массивеif x not in a:

print u'в массиве пятерки не обнаружено'## цикл - for# i поочередно принимает значения от 0 до 9for i in xrange(10):

print i# i принимает значения от 10 до 19for i in range(10,20):

print i# формирования массива при помощи цикла

vr­online | июль 2010

Автор

:Toly

WWW:

http://to

ly­blog

.ruКодинг

Page 29: VR-Online (July 2010)

Кодинг29

vr­online | июль 2010

# в массиве будут квадраты чисел от 0 до 9c = [ i*i for i in xrange(10) ]# пройтись по элемента массиваfor i in xrange(len(c)):

print c[i]# второй способfor q in c:

print q## цикл while# не забываем увеличивать значение счетчика втеле циклаi = 0while i<10:

print ii += 1

# можно и так# цикл выполняется пока i не равно 10i = 0while i != 10:

print c[i]i += 1

## использование break и continue в циклах## continue - переход к следующей итерациицикла## break - останов цикла# суммирование положительных эелемента массиваa = [1, 3, -9, 2, 3, -3]sum = 0for x in a:

if x < 0:continue

sum += xprint sum# будет выводить элементы массива# до появления первого отрицательного числаfor x in a:

if x < 0:break

print x

Функции и модулиПришло время рассмотреть определениефункций на python, их вызов, а так же написаниеи использование отдельных модулей длядальнейшего использования. В качествепримера напишем модуль для простейшихстатистических расчетов (вычисление суммыэлементов массива, среднего арифметического идисперсии) и научимся его использовать.Итак, вначале функции.# пример определения ничего не делающей функции# (pass означает ничего не делать)def simpleFunction():

u""" Справка (помощь, F1 и т.д.) дляфункции simpleFunction():эта функция абсолютно ничего не делает"""pass

# вызываем функциюsimpleFunction()# вызываем справку по функцииprint simpleFunction.__doc__# функция сложения# если второй аргумент не задан,# то по умолчанию b = 1def funcAdd(a, b=1):

# то, что возвращает функцияreturn a + b

# можно определить эту же функцию как лямбда-выражениеfuncAdd = lambda a, b=1: a+b

# выведет сумму чисел 3 и 8print funcAdd(3, 8)# выведет 6, второй аргумент не задан# и его значение принимается по умолчанию -единицеprint funcAdd(5)# можно сразу сделать вывод,# а результат вычислений не возвращатьdef printFuncAdd(a, b=1):

print a + b# возвращает None, а выводит 11printFuncAdd(10)# используем глобальные переменныеdef printA():

global aprint aa += 1

# после вывода внешней переменной 'a'# увеличивает ее значение на 1a = 10printA()print a

Теперь перейдем к практической части.Сохраним файл на диск со следующимсодержимым. Назовем его “stat.py”. Это будетнаш модуль.# функция суммирования элементов массиваdef summas(a):

s = 0for x in a:

s += xreturn s

# функция вычисления среднего арафиметическогоdef average(a):

# используем определенную выше# функцию суммирования элементов массиваreturn summas(a)/len(a)

# функция вычисления дисперсииdef dispersion(a):

av = average(a)s = 0for x in a:

s += (x - av) * (x - av)return s/len(a)

В той же папке сохраняем файл (под названием“test.py”) следующего содержания.# импортируем модуль stat.pyimport stat# "придумываем" массив для обработкиa = [1,3,4,2,3,4]print u'Исходный массив: ', aprint u'Сумма элементов массива: ',stat.summas(a)print u'Среднее арифметическое: ',stat.average(a)print u'Дисперсия: ', stat.dispersion(a)# а можно подключить модуль так:import stat as stprint u'Исходный массив: ', aprint u'Сумма элементов массива: ',st.summas(a)print u'Среднее арифметическое: ',st.average(a)print u'Дисперсия: ', st.dispersion(a)# или так:from stat import *print u'Исходный массив: ', aprint u'Сумма элементов массива: ', summas(a)print u'Среднее арифметическое: ', average(a)

Page 30: VR-Online (July 2010)

Кодинг30

vr­online | июль 2010

print u'Дисперсия: ', dispersion(a)

Запускаем и видим, что функциисвеженаписанного модуля успешно работают.

Файлы и wwwЗдесь мы разберемся, как работать с файлами ипринимать информацию из интернета. Читаем ипросвещаемся потому, как данный материалбудет использоваться на практике дляпрогнозирования временных рядов в следующемцикле статей. Предоставленная информация неотражает всех возможностей python, тем неменее, для работы с онлайн­котировкамиприведенных примеров будет достаточно.Работа с файлами# -*- coding: UTF-8 -*-## создаем файл и записываем в него 2-е строки# режим работы "w" - если файла нет, то онсоздается# если есть - перезаписываетсяf = open('1.txt', 'w')# \n - перевод на новую строкуf.write('Текст первой строки\n')f.write('Текст второй строки\n')# сохраняем изменения в файлеf.close()## дописываем в конец файла дополнительныестроки# если бы файла не было - он бы создался# параметр 'a+' - дописываем в конец файлаf = open('1.txt', 'a+')f.write('Новая строка (добавочная)')f.close()## открываем файл для чтения и выводим егосодержимое# 'r' - режим чтенияf = open('1.txt', 'r')# в переменную line передается текст файла какодна строкаline = f.read()# выводим содержимоеprint u'===> содержимое файла'print lineprint u'===> содержимое файла в нормальнойкодировке'print line.decode('utf-8')print u'===> количество символов', len(line)f.close()## считываем файл как массив строкf = open('1.txt', 'r')# в переменную lines передается массив срокфайлаlines = f.readlines()f.close()

# при выводе массива наблюдаем вместо обычныхсимволов их кодыprint u'\n===> массив строк файла'print lines# выведем каждую строку массива по отдельностиprint u'\n===> выведем каждую строку массивапо отдельности'for line in lines:print line.decode('utf-8')

В результате должно получиться что­то вродеэтого:

Работа с интернетомВ качестве иллюстрации работы с интернетомрассмотрим небольшой скрипт, приведенныйниже.# -*- coding: UTF-8 -*-# python-рецепты (интернет и urllib)# импортируем модуль для работы с интернетомimport urllibsite = urllib.urlopen('http://ya.ru')page = site.read()# те же проблемы с кодировкойprint page# исправляемсяprint page.decode('utf-8')

Запустив все это в PyScripter увидим html­кодоблегченной страницы Яндекса:

Для работы с www в контексте работы с онлайнкотировками нам больше знать и ненужно. Воизбежание проблем с кодировками решилнаписать сетевое приложение в линуксе. Какоказалось там свои тонкости работы с www:например строчкаpage = site.read()в Ubuntu 9 работать не будет (а в десятой,например, работает). Поэтому иногда лучшесразу использовать модуль urllib2.Обработка текстаТеперь мы изучим возможности, которыепредоставляет python при обработке текстовой

Page 31: VR-Online (July 2010)

Кодинг31

vr­online | июль 2010

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

Модуль string# подключаем модуль stringimport string# определяем строку (одинарные или двойныекавычки)st = 'aa1 ab2 aa3 ab4'st1 = "word1,word2,word3,word_N"# определяем многострочную строку (тройныекавычки)st2 = '''string 1string 2string n'''# суммирование строкprint st + st1# count - возвращает количество вхожденийподстроки в строку# (строки 'ab' в строку st)print string.count(st, 'ab')# можно работать со строкой как с массивомсимволов# выведет ab2print st[4:7]# find - возвращает номер символа в строке скоторого начинается подстрока# выведет 4print string.find(st, 'ab')# выведет -1, так как в строке нет подстроки'aaa'print string.find(st, 'aaa')# возвращает строку в верхнем регистреprint string.upper('fgfHLKJ')# возвращает строку в нижнем регистреprint string.lower('fgfHLKJ')# разделителем ',' разбиваем строку на массивстрокprint string.split(st1, ',')# зная, что символ новой строки это '\n',# преобразуем многострочную строку в массивастрокlines = string.split(st2, '\n')print lines# теперь обратная операция - из массива строк# делаем одну, добавляя между ними разделитель'=='new_str = string.join(lines, '==')# выведет 'string 1==string 2==string n'print new_str# replace - замена подстрок в строке# меняем '==' на '=>>'print string.replace(new_str, '==', '=>>')

Модули math и matplotlibДля сложных вычислений, как правило,используют дополнительные математическиебиблиотеки. Python в этом случае не являетсяисключением – в стандартном наборе модулей

есть библиотека math. Модуль matplotlib встандартный набор не входит, но являетсястандартом де­факто при визуализациичисловой информации: с его помощью можнолегко строить диаграммы, а так, же 2D и 3Dграфики.Уже собирался было приниматься за статью, каквспомнил об удобном ресурсе, которым самчасто пользуюсь. Именно там наиболее удобнаясправка к модулю math – ни убавить, ниприбавить. Поэтому не буду изобретатьвелосипед и предоставлю ссылку на источник:модули math и cmath:http://ru.wikiversity.org/wiki/Программирование_и_научные_вычисления_на_языке_Python/§2/Приложениестроим графики:http://ru.wikiversity.org/wiki/Программирование_и_научные_вычисления_на_языке_Python/§9диаграммы:http://ru.wikiversity.org/wiki/Программирование_и_научные_вычисления_на_языке_Python/§10На этом свою миссию по предоставлениюначальных сведений о python считаювыполненной.Пакеты и ООПДумаю каждый, кто имеет хотя бы отдаленноепредставление о программировании, понимаетвсю важность ООП. Тем более если предстоитразработка крупного проекта. Питон изначальноразрабатывался как объектно­ориентированныйязык программирования, поэтому сложностей среализацией ООП на python возникнуть недолжно. Сразу скажу, что статья обзорная, такчто в подробности сильно вдаваться не буду.Только самое необходимое.Организация python-пакетовПакетом в питоне называется группа модулей,объединенные по какому­либо признаку.Питоновские пакеты делать неудобно, а оченьудобно: для этого создается каталог с именемпакета, например testpak, затем в негопомещаются модули, которые нужносгруппировать, например module1.py иmodule2.py, а так же инициализирующий модуль__init__.py, который “сообщает” интерпретаторуpython, что каталог, в котором он находится,является пакетом. Допустим в модулеmodule1.py определена функция func().Следующий фрагмент кода показывает, какполучить к ней доступ.# импортируем необходимый модуль из пакета# и задаем для него псевдоним - modimport testpak.module1 as mod# вызываем требуемую функциюmod.func()

Page 32: VR-Online (July 2010)

Кодинг32

vr­online | июль 2010

Пакеты могут быть вложенными. Так что если быфункция func() была бы определена в модулеmodule3.py пакета podpaket, сохраненного в своюочередь в каталоге пакета testpak, то доступ кней осуществлялся бы следующим образом:# импортируем необходимый модуль из пакета# и задаем для него псевдоним - modimport testpak.podpaket.module3 as mod# вызываем требуемую функциюmod.func()

Организация пакетов:

Предположу, что суть объектно­ориентированного программирования читателюясна, и с места в карьер предлагаюознакомиться с практической реализациейкласса auto на python. Думаю, из комментариеввсе предельно ясно.# -*- coding: utf-8# класс автомобиля autoclass auto(object):

# функция инициализации объекта класса(заодно передаем параметры)# ключевое слово self указывает наэкземпляр объекта# и всегда передается первым как параметрdef __init__(self, rate=10, volume=40):

# свойство обекта - расход топливаself.rate = rate# свойство объекта - емкость бакаself.volume = volume# сколько бензинаself.petrol = 0# для демонстрации выводим параметрыprint "Параметры автомобиля:"print "Расход", self.rate, "литров насотку"print "Бензобак -", self.volume,"литров"print "----------------------------------"

# процедура наполнения бакаdef fill(self, add_petrol):

self.petrol += add_petrolif self.petrol > self.volume:

print "В бак не поместилось ",self.petrol - self.volume, "литров"self.petrol = self.volume

else:print "Успешно залито", add_petrol,

"литров бензина"# процедура поездки

# в качестве параметра передаем скольконужно проехатьdef ride(self, lenght=100):

maxride = self.petrol * 100 /self.rateif maxride >= lenght:

spend = self.rate * lenght / 100self.petrol -= spendprint "Проехали", lenght,"км"

else:print "не доедем!"

# сколько бензина осталось?def petrol_level(self):

print "В баке", self.petrol, "литров"# машина с параметрами по умолчаниюx = auto()print " -> смотрим в бензобак"x.petrol_level()print " -> пробуем проехать 5 км с пустымбаком"x.ride(5)print " -> заправляем 20 литров"x.fill(20)print " -> заправляем еще 30"x.fill(30)print " -> едем на дачу (220 км)"x.ride(220)print " -> едем обратно (тоже 220 км)"x.ride(220)print "-> а можно посмотреть в бензобак так:"print x.petrolprint "-> и изменить его"x.petrol += 20x.petrol_level()

Page 33: VR-Online (July 2010)

Я прусь!Делимся впечатлениями

33

JimmyJonezz: Когда в жизникаждого, что­то исполняется, иисполняется согласнозадуманному, состояние вкотором пребывает человексложно описать. На данныймомент у меня схожая ситуация­ я удачно реализую своизамыслы и запросы и поэтому япрусь от этого. Некоторыезадумки реализуются дольше,некоторые меньше (повременному промежутку), новсегда один результат. Когдаприлагаешь усилия и видишькак они реализовываются,пребываешь в некоторомвосхищении и внутреннем"подъеме". Стоит понимать, чтозапросы должны бытьпропорциональны возможностиих реализации, и это маленькоеправило помогает мне получатьудовольствие от жизни в целом.zahod5277: В этом месяце япрусь от перемен. Я переехал вгород. Наконец­то у меня будетнормальный интернет,завяжется куча новыхзнакомств, будет интересно. Аеще, я кое­где добыл двастарых системных блока, годовэдак 2002­2003. Одинсистемник я планируюиспользовать как сервер,небольшое файлохранилище, ана второй у меня болееграндиозные планы ­ модинг.Хочу покрасить его,понавтыкать кучу светодиодов,чтоб мерцал как новогодняяелка, хочу... Много чего я хочу сним сделать, если получится ­обязательно ждите фотографиина сайте.

Va­Bank: Да не прет меня. Наработе завал, напарник уехалотдыхать в горы, так что я одинотдуваюсь за всё. Настроениянет.Kastor: Даже не знаю, что быздесь написать. Наверное,больше всего я прусь от того,какое классное это лето вышло.Началось оно достаточногалимо, если учитывать что ячуть не лишился стипендии из­за парочки убогих предметов.Но под конец июня досдав все,что только можно было,началось реальное лето.Поездка на карьер с ночевкой ишашлыками (куда я, кстати, наскутере катил). День рождениев кафе и аттракционы(называется, вспомнилидетство). Снова вылазка надачу с ночевкой и шашлыками,волейбол на пляже, купание вморе, в том числе и ночью.Вода, вроде как из подкипятильника, но холодно,блин! Достаточно часто меняотрывали от компа, и я гулял стоварищами по городу, каталсяна скутере (опять же, бывалоночью, что намногоинтереснее). Встречи состарыми знакомыми, которыхне видел несколько лет.Приплыв как позитивных, так инегативных воспоминаний иэмоций. Вот такое лето вышло.Без серьезных траблов конечнотоже не обошлось, но хорошихвещей, которые приятно будетвспомнить, было не мало. Одноплохо, в этот раз от нашегоунивера не выставляли командуна международную олимпиадуKPI OPEN, на которой я был в

том году.wwwnet: Мне нравится, что IT­индустрия в наше времяразвивается быстрым темпом.Не так давно вышел Android, ауже одна из популярныхплатформ. Скоро выйдут в светWindows Phone'ы. В Интернетепоявляются новые сервисы,старые и хорошозарекомендовавшие себясайты развиваются инекоторые даже в правильномнаправлении. И самоеприятное ­ что ты тоже в этомучаствуешь, внося хотьнебольшой, но тоже вклад.Spider_NET: Перед самойсдачей номера я умудрилсясерьезно заболеть. Ни с того нис сего поднялась высокаятемпература и появиласьголовная боль. Как я только непытался с ней бороться.Попробовал всевозможныетаблетки, но результата так и небыло. Жена предлагалавызвать врача скорой помощи(все таки два дня подрядлежать с температурой 39,6 неайс), но я отказался. У меняпечальный опыт общения сврачами скорой помощи,поэтому нет никого желания кним обращаться по «мелочам».В итоге, жена сходила в аптекуи там ей посоветовали какможно качественно сбитьтемпературу. Правда нужнобыло ставить себе укол.Супруга ни разу не ставилауколы, а я как­то смотрелтеоретическое видео по этойтеме на YouTube. Однимсловом я решился себя уколоть:­) Как говорит мой друг

vr­online | июль 2010

VR­Cr

ewЯ прусь!

Page 34: VR-Online (July 2010)

Я прусь!34

vr­online | июль 2010

lord_of_fear: «У тебяганстерский подход клечению!». Оказалось, чтопоставить себе укол ни такая ужбольшая проблема. Все простои быстро, а главная я добилсянужного эффекта. Температуранемного спала, а ее остатки ядобил вторым уколом. Так, вот,я прусь от полезности видео наYouTube и безграничныхчеловеческих возможностях :­)

Page 35: VR-Online (July 2010)

English GrammarIn UseОсваиваем грамматику английского

35

Обычно в этой рубрике мы пишем о книжках такили иначе связанных с IT, но сегодня я решилнемного от этого стандарта. Про интересную ITкнигу я расскажу в следующий раз, а сегодняпопробую порадовать тех, ктозанимается/собирается изучением английскогоязыка.На мой взгляд, самое сложное в английскомязыке – грамматика. Слова учатся на ура;произношение со временем вырабатывается, асносная разговорная речь придет послепопадания в англоязычную среду. С грамматикойвсе несколько сложнее. Тут, как ни крути, апридется потратить время на ее изучение. Этооснова всего обучения и никуда от этого неденешься.Я возненавидел грамматику еще со школы. Каксейчас помню, наш преподаватель преподнестеорию в ужасной форме. Я толком ничего непонял, а потом пошло­поехало. В институте япробовал вновь вернуться к этому вопросу.Покупал книгу (к сожалению, автора уже непомню) по грамматике, но разобраться так и несмог. Результат стал такой же, как и в школе – язабил на это дело.Постоянные посетители нашего сайта знают, чтос прошлого года я серьезно занялся изучениемязыка. У меня есть конкретная цель, и отступатьуже некуда. Следовательно, грамматикупридется как­то побеждать. К счастью у меняочень хороший преподаватель, который даеточень много полезной информации. Именно унего я и увидел следующую книгу – RaymondMurphy “English Grammar in Use”. Впервыепопробовав позаниматься по этой книге, ябуквально влюбился в нее! Такого простогоизложения грамматики английского мне видетьеще не приходилось. Все настолько просто ипонятно, что аж хочется заниматься вновь ивновь. Думаю, ты уже догадался, что я не смоготказать себе в покупке этой книги и сейчас ярасскажу о ней подробнее.Итак, для начала сразу освещу один маленькийнюанс. Книга от корки до корки написана на

английском языке. Ни одного слова на Великом иМогучем языке ты не найдешь. На мой взгляд, вэтом большой плюс книги, т.к. параллельно тынаучишься пользоваться словарем, да и не хилопополнишь свой словарный запас. По началубудет тяжело ее читать, но со временемпривыкнешь (а куда ты денешься с подводнойлодке?).Структура книге не требует последовательногочтения. Ты можешь выбрать интересующую тебятему и изучать лишь ее. Если темы изучаемойглавы переплетается с другими главами, то обэтом будет сообщено в сносках, т.е. заблудитьсяи что­то упустить у тебя вряд ли получится.Весь теоретический материал подкрепленпрактическими упражнениями. Их обязательнонужно выполнять и сверяться с ответами в концекниге. Упражнения интересные, но жаль, что ихне очень много. В среднем, на одну темуприводится 4­6 упражнений. Если хочетсятренироваться большое, то придется пошурститьинет и найти всякого рода задачники поанглийскому. Благо проблем с поиском нет.Книга продается в двух варианта – с компакт­диском и без него. К сожалению, мне досталсявариант второй, т.е. без диска. Когда я заказывалкнигу в books.ru у них была только бездисковаяверсия. Если у тебя будет выбор, то обязательнопокупай ту, что с диском. Она стоит немногодороже, но зато у тебя будут дополнительныебонусы. На компашке тебя будут ждатьдополнительные упражнения (судя по описаниюдиска их там много), а также всевозможныетесты.Не могу не сказать об изложении теории. На мойвзгляд, автор преподносит ее очень хорошо.Вроде теоретического материала немного (врамках одной темы), но для понимания хватаетза глаза. Конечно, будут попадаться (во всякомслучае, для меня) тяжело усваиваемы темы, нобояться не нужно. К твоим услугам всегда инет ссайтами вроде glish.ru, а в моем случае еще ипреподаватель.

vr­online | июль 2010

Автор

:Игор

ьАнто

новaka

Spide

r_NET

E­mail:

Anton

ov.igo

r.khv@

gmail.

comОбзоры от VR

Page 36: VR-Online (July 2010)

Обзоры от VR36

vr­online | июль 2010

После прочтения книги, ты:1. Познаешь грамматику. Только не обольщайся!От одной книги гуру ты не станешь, а вот поднятьсвои знания сможешь запросто. Главное потомне останавливаться на достигнутом, апродолжать учиться дальше.2. Пополнишь словарный запас. Поскольку книгаполностью написана на английском тебепридется заглядывать в словарь для поисказначения нужных слов. Это очень положительноотразится на запоминании нужных слов.3. Найдешь интересные фразы и выражения.

А где купить?Все книги, которые попадают в наши обзоры, тыможешь приобрести в интерент­магазинахBooks.RU (http://books.ru) и Ozone.RU(http://ozon.ru).

Page 37: VR-Online (July 2010)

Opera uniteУдобный доступ к содержимому

37

Счастливые обладатели веб­браузера Opera,могут похвастаться тем, что (начиная с 10 версии– прим. автора) присутствует дополнение,которое обеспечивает этому браузерудополнительный широкий наборфункциональных возможностей. Речь пойдет отакой технологии, как Opera Unite.Благодаря Opera Unite, есть возможностьсделать любой компьютер не только клиентскимустройством, но и использовать его в качествесервера, что позволяет пользователям,связываться с соседними компьютерамизнакомых или друзей и напрямую делитьсяинформацией без использования онлайн­сервисов и каких­либо других приложений.Рассмотрим самую простую ситуацию – естьнекая локальная сеть (данная технологияработает не только в локальной сети – прим.автора) и пользователь, который юзает OperaUnite (учётная запись в социальной сети «MyOpera» и лабораторный релиз Opera Unite). Этотже пользователь, к примеру, устанавливаетвиджет Media Player, загружает любимые треки вплейлист, а также предоставляет к этомуприложению общий доступ. Остальныепользователи, теперь смогут свободнопользоваться приложением Media Player, имеяпри этом любой веб­браузер, отличный от Opera.Важно помнить, чтобы активировать Opera Uniteна своём компьютере и предоставить доступ кего содержимому, пользователь должениспользовать браузер Opera. Думаю, ход мыслиясен.Доступны следующие сервисы:Доступ к файлам (File Sharing): с помощью этогоприложения можно предоставить доступ кфайлам на своём компьютере другимпользователям. В данном случае не требуетсяпредварительно загружать эти файлы наспециализированные онлайновые сервисы.Достаточно лишь выбрать на своём локальномдиске папку, доступ к которой вы хотитепредоставить. Opera Unite сгенерирует прямуюссылку на эту папку. Её можно разослать

друзьям, с которыми вы хотите поделитьсяфайлами.Веб­сервер (Web Server): данный сервиспозволяет запустить полноценный веб­сайт скомпьютера. Достаточно выбрать на локальномдиске папку с файлами веб­сайта и разрешитьдоступ к ней извне. Всё содержимое при этомостанется на вашем компьютере, который будетвыступать одновременно и хранилищеминформации. Opera Unite автоматическираспознаёт и запускает индексные файлы, такчто ваш веб­сайт будет отображаться в томвиде, в котором он разработан.Медиа­проигрыватель (Media­Player): доступ квашей музыке, где бы вы ни находились и слюбого компьютера. Для этого нужно выбратьпапку с музыкальной коллекцией в формате MP3и разрешить доступ к ней, а затем использоватьпрямую ссылку Opera Unite, открыв её в любомбраузере и начав прослушивание композиций спомощью встроенного в Opera Медиа­проигрывателя.Доступ к фото (Photo Sharing): теперь можноподелиться фотографиями с друзьями иродственниками прямо со своего компьютера, неотправляя файлы на онлайновые сервисы. Дляэтого достаточно выбрать папку с фотографиямина локальном диске компьютера, и приложениесформирует галерею их миниатюр.Полноразмерное фото загружается нажатием наминиатюру.Гостиная (The Lounge): данный сервис даётвозможность организовывать чат с друзьямипрямо на своём компьютере. Ваши друзья могутприсоединяться к разговору нажатием напрямую ссылку, без необходимостирегистрироваться в каких­либо онлайновыхсервисах. В зависимости от установок, вамдостаточно только сообщить им пароль длявхода в чат.«Холодильник» (The Fridge): прикрепите запискик виртуальным холодильникам ваших друзей.Теперь вы можете обмениваться с нимисообщениями в безопасном режиме и в

vr­online | июль 2010

Автор

:Jimm

yJone

zzEm

ail:jim

myjon

ezz@b

k.ruОбзоры от VR

Page 38: VR-Online (July 2010)

Обзоры от VR38

vr­online | июль 2010

реальном времени. Не забудьте сообщить импрямую ссылку на ваш «холодильник».Это только часть приложений, кроме этого,приложения, предоставляемые стороннимиразработчиками, также могут быть доступныдрузьям, к примеру, любимый мной виджетArtist's Sketchbook 1.65., давно прижился наодном из моих браузеров.

Особо важно отметить, что Opera Unite создана ссоблюдением общепринятых и открытыхстандартов, таких как HTML, CSS, JavaScript,SVG, AJAX. Много разговоров шло, по поводубезопасности этой технологии; на данныймомент, я не имею подробной информации поданному поводу, но могу сказать, что сейчас вOpera Unite предусмотрено три уровня доступадля сервисов:1. Открытый (публичный): Каждый, у кого естьпрямая ссылка на файл или сервис, можетполучить доступ к нему.2. По паролю: Доступ к файлам и сервисамполучат только пользователи, которым выпередадите специально сгенерированныйпароль3. Частный: Файлы доступны толькопользователю данного компьютера.На официальном блоге компании Opera, былвыдвинут некий лозунг, значение, которогопредполагало следующее определение: «OperaUnite заново открывает Web». Opera Uniteопределенно интересная технология, как дляразработчика, так и для конечного пользователя,предлагающая сервисы, которые действительнопригодятся многим, но она скорее дополняет веб,но никак не открывает его заново.Дополнительные ссылки:Ссылка на страницу Unite: http://unite.opera.com/Русскоязычное сообщество и официальный Блогкомпании Opera: my.opera.com/russianБлог компании Opera на Habrahabr.ru:habrahabr.ru/company/opera

Page 39: VR-Online (July 2010)

Обзор HTC Tattoo39

Недавно у меня встал вопрос о приобретениинового телефона. Обычную звонилку покупать нехотелось, поэтому я сразу стал смотреть накоммуникаторы. Устройство с Symbian покупатьне хотелось категорически. Да и хотелосьпосмотреть, что из себя представляет мобильнаяОС от Google. Поэтому мой взор пал в стронукоммуникатора от HTC.Tattoo работает под управлением Android 1.6.Версия не самая свежая, но лучшего за такиеденьги я найти не смог. Сразу скажу, что стоит онне очень много – порядка 10 тысяч рублей. Нопри этом железо в нем очень даже ничего.Процессор 528 Мгц, 256 Мб ОЗУ, а вот экран невелик 2.8“ при разрешении 320х240. Весустройства составляет 113 г. В кармане носитьудобно, почти не чувствуется. Аккумулятордостаточно емкий. 340 часов в режимеожидания, заявленные производителем этоконечно перебор, но дней 5 он протягивает легко,при небольшом использовании.КомплектацияПомимо коммуникатора в коробке лежитаккумулятор, USB кабель, с возможностьюзарядки от ПК, адаптер для зарядки от сети 220вольт, карта памяти на 2 Гб, а также наушники с3,5 мм штекером. Да вы ничего не пропустилистилуса в этом списке нет, да он и не нужен. За 3недели использования он мне ни разу непонадобился, размер всех элементовдостаточен, чтобы спокойно нажимать на нихпальцем, что не скажешь о проводнике в WM, гдебез стилуса просто нечего делать. Привычнойдля WM устройств кнопкивключения/выключения на верхней частиустройства нет. Там лишь гнездо для наушников,и крепление для ремешка.Включение/выключение, как и в старые добрыевремена, осуществляется долгим нажатиемкрасной кнопки, также осуществляетсяпереключение режимов (вибрация, бесшумный ит. д). На нижней панели находится микрофон иUSB гнездо.Единственный минус это чрезвычайно тугая

крышка аккумулятора, ее я открывал минут 5, апотом не смог больше ни разу этого сделать, номожет это и к лучшему – будет хорошо держатся.Дизайн и интерфейсДизайнеры HTC не отличаются разнообразием,поэтому многие их коммуникаторы похожи другна друга, но при этом они смотрятся симпатично.Держать телефон в руке удобно – он не большойи не маленький. Сенсор очень дажечувствительный, все понимает с легкого нажатияи со всей силы давить не надо. Первое что меняпорадовало в интерфейсе это аж целых 7рабочих столов. Центральный и по 3 слева исправа от него. Любой из них настраивается повашему желанию благодаря большомуколичеству виджетов, некоторые из которыхдаже имеют несколько вариантов. Например,часы, они бывают одно­ и двух­циферблатные.Есть встроенный виджет для отображенияпогоды, входящих сообщений, и почты.Но в них есть и свои минусы – лучше не держатьпостоянно интернет включенным, а то деньги насчету быстро будут уменьшатся. Помимовиджетов можно добавлять ярлыки дляпрограмм, а также ярлыки можно помещать впапки, чтобы все это занимало меньше места.Также есть 6 встроенных тем оформления длярабочих столов, но их количество можнопополнять, сохраняя свои варианты. На работевы или на отдыхе у вас всегда все будет подрукой. В ОС уже встроены сервисы от гугл:GTalk, Gmail, YouTube и карты.Программное обеспечениеВот тут я немного разочаровался. Ничего кромевышеперечисленного, а также плеера, FM­радио, калькулятора и средства для просмотраизображений я не обнаружил. Нет встроенногофайлового менеджера, но сразу несколько егореализаций можно найти в интернете. Накачатьпрограмм не является большой проблемой. ВОС встроено приложение для работы с AndroidMarket, да и на 4pda.ru программ много. Так, чтоидем в ближайший макдональдс и начинаемкачать, заодно и вай­фай можно протестировать.

vr­online | июль 2010

Автор

:Крыл

овЕго

рEm

ailkril

ov­ego

r@yan

dex.ru

Обзоры от VR

Page 40: VR-Online (July 2010)

Обзоры от VR40

vr­online | июль 2010

Не думаю, что может не найтись какой­то нужнойпрограммы, а если это все таки случится томожно написать ее самому, начав с прочтениямоей статьи. Нет и диспетчера задач, но это тоженебольшая проблема потому, что нажав пару разна кнопку назад или найдя в меню кнопку, выйтиможно закрыть программу. Для меня это плюс поотношению с WM, где зайдя в диспетчер задачвидишь, что десяток приложений которые тысчитал закрытыми на самом деле висят воперативе. Но отсутствие файлового менеджераникак не сказывается на просмотре изображенийи прослушивании музыки. Плеер распределяетмузыку по нескольким категориям: альбомы,артисты и жанры. Естественно можно создаватьплейлисты, а можно закачивать музыку вместе сними, при правильных путях к файлам они будутработать. Единственное к чему я пока не могупривыкнуть это экранная клавиатура. Порой япопадаю не в ту кнопку или сразу в несколько,даже в горизонтальном режиме.ЗаключениеОсобых багов или зависаний в работе этогоустройства я не заметил. На этом я заканчиваюсвой обзор, хотя сказать можно еще много. Впринципе я считаю это устройство вполнехорошим, и не жалею, что его купил.

Page 41: VR-Online (July 2010)

Желанный андроидОбзор HTC Desire.

41

Вот и сбылась мечта …, хм, моя мечта. Наконец­то в моих руках оказался аппарат подуправлением мега­популярной в последнеевремя операционной системой Google Android.Нескромно названный Desire, что в переводеозначает “желанный”, “вожделенный”, этотаппарат является самым топовым на данныймомент андроид­коммуникатором. Здесь естьчему позавидовать: процессор QualcommSnapdragon с частотой 1 (!) гигагерц, 512 (!)мегабайт оперативной памяти, емкостныйAMOLED дисплей диагональю 3.7 (!) дюйма иразрешением 800*480px, 5­ти мегапиксельнаякамера, GPS, компас, при всем при этомнебольшой вес и неплохой аккумулятор (1400мА/ч). Ну это вкратце. Давайте заглянемпоглубже и определим все его преимущества инедостатки. Так как я являюсь счастливымобладателем Nokia N900 и не имею возможностинайти еще хотя бы один топовый аппарат, вестиобзор я буду объективно сравнивая Desire иN900. Let’s go!Комплектация.

Увидев коробку, ячестное слово, былудивлен. Если описать ееразмеры формулой, этобудет выглядетьпримерно так ­ высотакоробки: толщина Desire+ 7 см/длина: длинаDesire + 5 см/ширина:ширина Desire + 5 см. Да да, габариты коробкисовсем не большие, а совсем наоборот. Изгабаритов коробки соответственно можноописать и комплектацию: сам аппарат, USB,зарядчик, мануал, наушники. Стандартныйнабор. (на N900 мы получаем еще две парырезиночек для наушников, кабель TV­out, платокдля протирки экрана – прим. автора).Внешний вид и эргономика.HTC Desire – моноблок с четырьмяфункциональными клавишами,оптическим трекпадом (непонятнаяи неудобная штука как по моему),

качелькой длярегулировки громкости икнопойблокировкой/включения/выключения. Габаритыаппарата: 12*6*1.2см.Вес: 135г. Как я ужесказал, к трекпаду надодолго привыкать, уж очень непонятный он, а востальном все клавиши легко нажимаются, легкодоступны. Аппарат очень тонкий, что плюс, хотяотсутствие физическойклавиатуры это минус. Но,будь он наделенклавиатурой, пользоватсяим было бы невозможно.Desire очень широкий идлинный(чуть длиннее ишире N900), и комфортно пользоватся им впортретной ориентации возможно толькоблагодаря толщине. Покрытие экранастеклянное, все остальное выполнено изсофттач­пластика, хорошо противостоящемупыли и отпечаткам пальцев. Внизу аппаратарасположен вход micro­USB, вверху, помимокнопки блокировки/включения/выключенияимеется 3.5 разьем для наушников. Зерр гут.Динамик расположен в задней части аппарата,рядом со вспышкой и камерой. Не могу необсудить емкостный экран. По моему мнениюрезистивные экраны куда круче емкостных, иникто меня не переубедит. Почему я так считаю?Емкостный экран исключает возможностьуправления устройствомстилусом/ногтем/брелком, любым предметом вобщем. Только пальцем. А если допустим выдевушка с длинными ногтями? Как тогданабирать текст? Или как рисовать в программах­рисовалках? Пальцем? Не смешите. Я пробовална Desire это сделать. Что что? Емкостныеэкраны лучше реагируют на нажатие пальцемчем резистивные? Есть немного, но, мой N900еще ни разу не вызывал у меня негативныхвысказываний по этому поводу, дело привычки.Что­то я разошелся, извиняюсь, идем дальше.Итого: компания HTC не собирается увольнятьсвоего дизайнера и довольна его однообразнойvr­online | июль 2010

Автор

:Редь

кинДм

итрий

akazah

od5277

E­mail:

zahod5

277@g

mail.c

omОбзоры от VR

Page 42: VR-Online (July 2010)

Обзоры от VR42

vr­online | июль 2010

работой (а уж как он доволен, нифига не делать­то :D). Начиная с HTC Hero все андроид­коммуникаторы имеют практически идентичныйдизайн: слегка подогнутый снизу аппарат, неимеющий физической клавиатуры с огромнымдисплеем, четырьмя функциональнымикнопками и трекбол/трекпад, положение камерыи вспышки тоже почти не меняется. Переходим кдесерту – к ОС и программной начинке.Операционная система и софт.На HTC Desire установлена Google Android 2.1Eclare. По сравнению с предыдущими версиямиандроида нововведений в 2.1 немного, главноеиз них это мультитач. Так что мы имеем вполнесебе обычный андроид, расширить возможностикоторого возможно лишь благодаря маркету. НоHTC относится с заботой и любовью к своимклиентам, поэтому специально к выпуску Desireвыпустила новую версию своей программнойоболочки HTC Sense. Что это такое? HTC Senseэто надстройка над ОС, включающая в себядополнительные виджеты, красивые визуальныеэффекты, собственный плеер, собственныйинтерфейс (получше стандартного гугловского), вновой версии появилось дополненение,позволяющее установить на своем Desire досеми (!) рабочих столов. Единственное, что мнене понравилось при беглом осмотре всякихменюшек и настроечек, это неудобное меню. Каки в Windows Mobile 6.5, при открытии меню намвываливают всю имеющуюся кучу программ иприходится скролить, скролить, скролить. Длясравнения – на N900 такого нет. Хотя в новойпрошивке PR 1.2 все­таки испоганили меню исделали так же, но при установкедополнительной программки его можнонастроить как душе угодно. Каких­то совсемнеобычных программ в почти стандартномнаборе софта нет, все стандартненько, согласномоде. Порадовал GPS. Карты загружаются раз впятнадцать быстрее чем на N900, это еслииспользовать только GPS, без подключения кинтернету. Ну куда Nokia тягатся с Google вкартографии, у гугла Google Maps и десяткиспутников на орбите. Итого: нечего присваиватьАндроиду статус мега­крутой ОС, без доп.приложений и доп. оболочки она ничем не лучшечистых WM и Maemo, все дело в софте ­ где егобольше, та ось и рулит. Кстати о приложениях –прошу прощения, но не имел возможностизаценить Android Market и качество имеющихся внем программ. Так что буду и дальше веритьслухам что софт в маркете – отстой :).Камера.Переходим к моему любимому разделу – тестукамеры. Сколько не читал обзоров N900 – вездепишут мол, камера фигня, сойдет, средненько.Поверьте, камера Nokia N900 крута инепобедима. Камера же Desire заметно уступает.Нет, днем, при солнечной погоде качество

сравнимо, но еще более слабая вспышка (всегоодин светодиод против двух у N900), отстутствиенужных настроек и режимов делаютневозможным использовать камеру HTC Desire вмакро­съемке, вечером, при искусственномосвещении, в помещении. Одно понравилось –можно устанавливать фокус в любом месте,достаточно тапа по экрану. Немногие мобильныекамеры так умеют. Пара фоток для сравенения:Вердикт.HTC Desire – единственный на сегодняшнийдень коммуникатор, имеющий настолькомощные характеристики под управлениемGoogle Android. Ставший уже стандартом дляHTC дизайн не дает возможности выделитсяэтому флагману из линейки своих андроид­собратьев. Большой и яркий дисплей, красивыеэффекты и дополнительные виджеты благодаряHTC Sense делают этот аппарат не толькомощным, но и сногсшибательно красивым.Огорчает средненькая камера, трекпад. Если увас имеется 25­28 тысяч рублей, и вы следуететехнологической моде ( считаете Androidоперационкой будущего), то лучшего устройствапросто не сыскать. Тем более, ходят слухи, чтобывшие пользователи iPhone приобретают себеименно эту модель.

Page 43: VR-Online (July 2010)

Processing:Введение.Интерактивная визуализация.

43

Не так давно, в коллективных блогах Vr­online, яуже упоминал об одном замечательноминструменте, который позволяет вывестипроцесс визуализации на новый уровень,выделив его как отдельное составляющее.Procesing 1.2.1 (на данный момент это последняяверсия) является бесплатным, открытым,кроссплатформенным программнымобеспечением, с большим количествомвозможностей: широкий набор «команд» дляпостроения графических примитивов, 3D­объектов, работа со светом, текстом,инструментами трансформации, возможностьимпортировать файлы аудио/видео/звуковыхформатов, обрабатывать событиямыши/клавиатуры, работать со стороннимибиблиотеками (OpenGL, PDF, DXF), а такжеработать с сетью.Как вы уже, наверное, поняли, нам ничего немешает создавать 3D­аппликации (сюда можноотнести и игры), т.к. имеется средства поддержкиOpenGL, ничуть не хуже тех, чтодемонстрируются на «Chaos Constructions» илидругих демопати. Все эти возможности, вкупе сбольшим количеством функций и оченьлогичным синтаксисом, делают этот языкидеальным для обучения и прививания интересак программированию.Установочный файл данной средыпрограммирования лежит на processing.org(доступны версии для Windows, Mac и Linux). Наэтом же ресурсе есть подробный туториал, но наанглийском языке.Основная «сила» Processing, заключается вкоде, на первый взгляд простое IDE, можетоттолкнуть начинающего кодера, избалованногообъектно­ориентированнымпрограммированием, но если присмотретьсяболее внимательно, то PDE (ProcessingDevelopment Environment) – среда разработки,покажется достаточно удобным инструментом.Кроме того, есть реализация на JavaScript –processingjs.org, и стоит выделить еще одиннемаловажный момент, дело в том, что

Processing позволяет экспортировать ваш скетч(так называется файл проекта – прим. автора)как java­апплет, а его уже можно внедрить влюбую веб­страницу, тем самым, повысив еекрасоту. Я думаю, вы теперь представляете, каклегко можно оживить скучное видео, илинапример, получить изображение неслыханнойкрасоты, которое не просто будет радовать глаз,а приводить в оцепенение и в дикий восторг.Думаю, многим уже не терпится опробоватьспецифику кодинга в Processing, а заодно ипосмотреть, как легко можно создаватьвизуалицию с помощью данного программногообеспечения. Хочу предупредить, моеобъяснение данного материала предполагает,что пользователь знаком с императивнымспособом программирования, а также знаком сосновами языка С/С++. Для первогоознакомления и так сказать, вступительногоурока, я взял, образец примера реализации«шапки» с сайта processingjs.org.

Он достаточно прост в реализации и болеенагляден, на мой взгляд, а также являетсяхорошим примером интерактивности. Нашейдальнейшей целью будет реализацияследующих моментов:1. Создание кругов;2. Возможность собирания кругов воедино, спомощью мыши;3. Соединение ближайших друг к другу кругов,линиями (точкой соединения служит центр круга– прим. автора);4. Возможность кругов «расходиться» в разныестороны, с последующим отсоединением.К данной статье прилагается скетч, который тыможешь скачать вместе с журналом, а пока тыего открываешь, я объясню, поэтапно каждыйшаг. Первое, с его нужно начать – задать

vr­online | июль 2010

Автор

:Jimm

yJone

zze­m

ail:jim

myjon

ezz@b

k.ruБез рамки

Page 44: VR-Online (July 2010)

Без рамки44

vr­online | июль 2010

глобальные переменные и провести ихинициализацию: количество кругов, ихмаксимальный и минимальный размер,определить контейнер (массив) для хранениясвойств круга.// количество круговint count = 20;// определяем максимальный и минимальный// размеры кругаint maxSize = 100;int minSize = 20;// создание массива для хранения свойств кругаfloat[][] e = new float[count][5];// определяем размер точки в центре кругаfloat ds=2;// некий переключательint sel = 0;// запрет возможности «переноса» объектовboolean dragging=false;

Определим две функции, которые понадобятсяпри использовании манипулятора мышь:нажатие кнопки мыши и ее отпускание. Спомощью них будем присваивать значение«истина» или «ложь» переменной dragging,значение которой будет играть главную роль приперетаскивании объектов (кругов).void mouseDragged()// переключаем возможность переноса на «истину»dragging=true;// пользователь отпустил кнопку мышиvoid mouseReleased()dragging=false;

Инициализация «canvas» (холста), а такжезапуск программы, происходит путемиспользования служебной функции void setup().Она используется для определения начальныхсвойств окружающей среды, таких как размерэкрана, цвет фона, загрузка изображения,фреймовый показатель (определяет количествокадров, которое будет отображаться за секундувремени ­ прим. автора) и т.д.Стоит отметить, что при заполнении массиванеобходимо воспользоваться некимиограничителями (размеры холста, радиус круга,скорость), а не ставить первые значения, чтопридут в голову.void setup()

// фреймовый показательframeRate(10);

// размеры холстаsize(900,74);

// толщина линийstrokeWeight(1);

// заполнения массива произвольнымивеличинамиfor(int j=0;j< count;j++)

e[j][0]=random(width); // ширина окнаe[j][1]=random(height); // высота окна

e[j][2]=random(minSize,maxSize); // радиус// случайное значение от -5 до 5e[j][3]=random(-.5,.5); // скоростьпередвижения по X// случайное значение от -5 до 5e[j][4]=random(-.5,.5); // скоростьпередвижения по Y

Следующая, обязательная, служебная функция ­void draw(), вызывается сразу после void setup().Эта функция является основой для построениялюбой анимации. Её особенностью является то,что она автоматически вызывается при каждомобновлении «фреймбуфера», последнеесвязано с позиционированием объектов накоординатной плоскости, но она может бытьостановлена командой ­ noloop(). Рассмотримнаиболее важные функции: fill(64,187,128,100) ­устанавливает цвет для заполнения форм, вданном случае зеленый.Цвет можно указывать как в формате RGB, так иHSB. При использовании шестнадцатеричногоуказания цвета, используйте "#" или "0x" дошестнадцатеричных значений (например, #CCFFAA, 0xFFCCFFAA); background(0) –устанавливает цвет фона, но также можноиспользовать градиент или использованиеизображения. С помощью функции ellipse(),можно нарисовать эллипс (овал) в окошкедисплея, или с помощью этой же функции можнонарисовать круг, задав одинаковую ширину ивысоту. Первые два параметра устанавливаютместонахождение, третий задает ширину, ачетвертая задает высоту. stroke(128,255,0,100) –позволить определить цвет линий и ее обратнаяфункция: noStroke() – отключает преждезаданное окрашивание линий.void draw()

// наполнение фона черным цветомbackground(0);// начинаем циклично заполнять массивкруга

for (int j=0;j< count;j++)// отключаем цвет для линий

noStroke();// сохраняем диаметр и радиус текущегокруга

float radi=e[j][2];float diam=radi/2;

// Если курсор - в пределах 2-xрадиусов текущего круга, то…if( dist(e[j][0],e[j][1],mouseX,mouseY) <radi )

// заполняем зеленым цветомfill(64,187,128,100);

// запоминаем, что пользовательщелкнул на кругsel=1;

// Если пользователь перетаскиваетмышь,// круг перемещаем вслед закурсором

if(dragging)// определяем позицию курсора

e[j][0]=mouseX;e[j][1]=mouseY;

Page 45: VR-Online (July 2010)

Без рамки45

vr­online | июнь 2010

else

// заполняем круг голубым цветомfill(64,128,187,100);// пользователь ничего не выбралsel=0;

// рисуем круги (эллипс)

ellipse(e[j][0],e[j][1],radi,radi);// перемещение кругов

e[j][0]+=e[j][3];e[j][1]+=e[j][4];

// применяем эффект «титров»: если круг уходит// за границу окна вверх, то начнетпоявляться снизу// и наоборотif( e[j][0] < -diam ) e[j][0] =width+diam; if( e[j][0] > width+diam ) e[j][0] =-diam; if( e[j][1] < 0-diam ) e[j][1] =height+diam; if( e[j][1] > height+diam) e[j][1] =-diam;

// если круг был выделенif(sel==1)

// центр точки закрашиваем белым цветомfill(255,255,255,255);// устанавливаем цвет линии на зеленыйstroke(128,255,0,100);

else // в противном случае цвет центра меняемна черный

fill(0,0,0,255);// устанавливаем цвет линии в бирюзовыйstroke(64,128,128,255);

// соединяем соседние круги линией

for(int k=0;k< count;k++)// если соседний круг находитсяблизко

if( dist(e[j][0],e[j][1],e[k][0],e[k][1])< radi)// проводим линию от текущегодо ближайшего круга

line(e[j][0],e[j][1],e[k][0],e[k][1]);

// выключаем закрашивание линий

noStroke();// Рисуем точку (черный квадрат) вцентре круга

rect(e[j][0]-ds,e[j][1]-ds,ds*2,ds*2);

Напоследок, хочу добавить, что внутри функцииsetup() можно использовать команду smooth(),она даст эффект сглаживания объектов.Многое в этой статье не рассмотрено, а также, янамеренно не стал вести подробное объяснение.т.к. надеюсь, данная статья лишь разожжет утебя жгучее любопытство к Processing и ты сам,в дальнейшем, проявишь интерес к егоизучению. В следующем журнале обязательножди продолжения, а если у тебя возникливопросы или предложения, по поводу даннойстатьи, то не стесняйся, присылай мне свои«message» или заходи на наш форум ивыкладывай наболевшее ;).

Дополнительные ссылки:API: http://processing.org/reference/Примеры: http://proxyarch.com/kaizen/#KarigianniТуторил (англ.): http://processing.org/learning/Реализация на JavaScript: http://processingjs.orgGoogle­группа:http://groups.google.com/group/processingjs

Page 46: VR-Online (July 2010)

Операция «Щит и Меч»46

Многие считают, что Windows – это самаядырявая система, туева хуча дырок, черезкоторые проникают вирусы и хакеры. Ихзакрывают, но на месте закрытых дырпоявляются десять новых. Спорить не буду,отчасти это так, но только потому, что Windowsсамая попсовая ОСь. Если бы такое жеколичество пользователей сидело на маках илилинуксе, то и там дыр нашли бы не меньше.Примером тому служит хотя бы то, что в рамкахконференции по вопросам безопасности –CanSecWest, устроенной компанией IndependentSecurity Evaluators, проводилось соревнованиена самый быстрый хак.Хакер Чарли Миллер (Charlie Miller) используяуязвимость Apple Safari 4 получил полный доступнад ноутом Apple всего за десять секунд.Компьютер с Windows продержался поднатиском дольше и это при всей уверенностияблочников о якобы высокой степенизащищенности их продуктов.Отсюда следует вывод, что не существуетабсолютно защищенной системы способнойпротивостоять злоумышленникам. Но к этомунужно стремиться и не надо думать, что у тебябрать нечего и тебя уж точно никто не взломает.А вирусы? Мысли вроде «да и ладно, с моими500 гигами на диске я перекантуюсь с малюткой,файлы он мне не портит, работать с сетью немешает, не перекидывает на XXX­сайты и нетребует отправить sms».Так вот это заблуждение, если внешне вирус и непроявляет себя как­то недоброжелательно, тоэто еще ничего не значит. Такие вирусы поройбывают наиболее опасны. Они, не привлекая ксебе внимания, потихоньку крадут пароли отвсего и вся, создают бот­сети для осуществленияDDoS­атак и рассылки спама. И те люди,которые тупо забивают на защиту от подобногорода угрозам, по моему мнению, способствуютпроцветанию и обогащению разработчиков ивладельцев таких вирусов и бот­сетей.Но что же делать, спросишь ты, продукты дляорганизации системы защиты данных это

дорогое удовольствие, да и систему грузят непо­детски. Тут может быть несколько вариантоврешения проблемы: либо наплевать напроизводительность системы и пользоватьсяпиратским ПО, но это уже статья и к тому же гдедоказательства, что кракер не модифицировалпрограмму таким образом, что бы онапроизводила несанкционированный съеминформации или не совершила крах всейсистемы?Доказательств нет, значит это не выход, идемдальше… Второй вариант не пользоваться этимПО вообще. И опять вопрос: «как же тогдазащитить данные и систему в целом?» Ответпрост – присмотрись к статье Криса Касперски«Защищенная ось без антивирусов и тормозов».В ней очень подробно описываются действия,которые необходимо проделать для получениятребующегося результата. Но что мне там ненравится, так это необходимость созданиянескольких пользователей (для бекапирования,отдельный пользователь для каждойпотенциально опасной софтины, пользовательпод которым производится основная работа), даи вообще очень много телодвижений.Я предлагаю воспользоваться альтернативнымвариантом. На дворе как­никак XXI век иблагодаря минувшему кризису, семимильнымишагами начала развиваться технологиявиртуализации. Так вот благодаря этойтехнологии организуем защищенную систему.Наша цель — безопасная ОСОсновным элементом нашей системы будеткомплекс Comodo Internet Security 4.1. Выбрал яего по тому, что это реальный барьер дляпаразитов и хакеров. К примеру, в тестированииProactive Security Challenge проводимойmatousec.com, он прошел «на ура» все 148тестов и занял первое место. К тому же, он незагружает систему, прост в использовании и, чтонемаловажно – он бесплатный.Комплекс CIS состоит из 3­х компонентов:Comodo Antivirus (защита от вирусов и троянов),Comodo Firewall (защита от интернет­атак) и

vr­online | июль 2010

Автор

:Корча

гинАн

атолий

akaAn

K0r

E­mail:

Anato

liy.Ko

rchagi

n@gm

ail.com

Без рамки

Page 47: VR-Online (July 2010)

Без рамки47

vr­online | июль 2010

модуль защиты Comodo Defense+ (системапредотвращения вторжения уровня хоста).Инсталляция продукта не должна вызватьвопросов, оговорюсь только сразу, что привыборе пакетов для загрузки стоит отказаться отантивируса, просто по тому, что он нам со своейфункцией сканирования на лету не понадобится,только лишняя нагрузка на систему. Ну и пронастройку тоже не будем говорить, сам для себярешишь, какая степень защиты тебе болееприемлема, стоит ли использовать защищенныйDNS сервис, каким приложениям доверять, акакие закрыть напрочь.Единственное, о чем хочу упомянуть, так это оновой возможности CIS – Sendbox. Sendbox или«песочница», представляет собой виртуальнуюфайловую систему и реестр. Нужна нам этарадость для запуска потенциально опасныхприложений.

Рис. 1. Настройка Sendbox в Comodo Internet Security 4.1Добавляем в песочницу приложения и радуемся,теперь если например, серфя инет, юзая браузерв sendbox, напороться на нехороший сайт скоторого тонами обрушатся вирусы, можно непереживать, дальше виртуалки они не уйдут.После того как фаервол и песочница настроенынужно подумать и о человеческом факторе.Остается большая доля вероятности, что можнозаполучить ВПО через почтовые рассылки или сфлешку друга. Чтобы обезопасить себя и тут,воспользуемся версией антивируса ClamAVраспространяемой для окошек – ClamWin FreeAntivirus 0.96.1. ClamAV – антивирус, изначальноразработанный для почтовых серверов,поднятых на Unix Like OS. Антивирус не имеетмонитора, прекрасно справляется с ВПО,распространяемого через почтовые рассылки ивыпускается под лицензией GNU/GPL v.2.

Рис. 2. ClamWin Free Antivirus 0.96.1Конечно, у него есть небольшой недостаток – он

не способен лечить файлы: либо поместить вкарантин, либо удалить совсем, но думаю это некритично.Теперь создадим виртуальный диск воперативной памяти. Использовать его можно идля хранения не долгосрочной информации идля установки тяжелых программ вродеPhotoshop, создавая образ RAM­диска на HDD,при завершении работы, что заметноувеличивает скорость работы с программой. Нос точки зрения безопасности, целесообразнееиспользовать его в первом варианте – в качествеконтейнера для хранения временных файлов.Делается это для того, что бы обезопаситьданные от несанкционированной утечки. Так какОС и программы используют временные файлыдля хранения промежуточных данных во времясвоей работы, в которых нередко заноситсяточная копия открытого программой файла.С одной стороны это дает возможностьвосстановить данные после сбоя, но с другойстороны такие файлы несут прямую угрозусекретам. Инсайдер – внутреннийзлоумышленник, получивший физический доступк компьютеру, может проанализироватьвременные файлы и получить информацию обустановленном ПО, имеющихся документах и ихсодержании, просмотреть какие сайтыпосещались и прочее.Для организации защиты файлов подобногорода, можно конечно воспользоватьсясредствами шифрования, например всемизвестной программой PGP. Но думаю, длязащиты данных на домашнем компьютеревполне хватит RAM­диска. Да и нашей цельюявляется не только сохранность данных, но ибыстродействие системы, а пользованиевиртуального диска, позволит не толькозатруднить доступ инсайдеру к темпам, но инарастить производительность некоторыхприложений, активно работающих с жесткимдиском, сохраняя на нем временные файлы, атак же увеличить срок жизни жесткого диска, т.к.уменьшается количество обращений к нему.

Рис. 3. Настройка RAMDisk EnterpriseИспользуя RAMDisk «Enterprise» можно

Page 48: VR-Online (July 2010)

Без рамки48

vr­online | июль 2010

добиться нужного результата. Созданиевиртуального диска с помощью RAMDisk«Enterprise» осуществляется через добавлениенового оборудования и не вызовет затруднений.Процесс инсталляции и последующая настройкаподробно описанный по адресуhttp://ramdisk.nm.ru/ramdiskent­rus.htm. Хочу лишьотметить, что русифицированная версияпрограммы распространяется бесплатно, что намна руку.БонусСуществует еще одна замечательная программа– KeePass. Используя эту утилиту не придетсязапоминать десятки паролей или записывать вфайл типо passwords.txt. Для шифрования базыпаролей KeePass поддерживает алгоритмыAdvanced Encryption Standard (AES, Rijndael) иTwofish. Так же помимо паролей в базе KeePassможно хранить в шифрованном виде и другиеданные.На данный момент существуют две версиипрограммы: Classic Edition – портативная версияи Professional Edition – более функциональнаяверсия, требующая .NET Framework. Доступ кбазе можно закрыть либо пользуясь обычнымпаролем, либо с помощью USB­накопителя накоторый сохраняется ключ.Так же для полного удовлетворения, можнопользоваться различными плагинами длябраузера. Например, для Firefox, япорекомендовал бы AdBlock Plus – дляблокировки рекламы на сайтах и NoScript –позволяющий блокировать исполнениеJavaScript, апплетов Java, Flash и другихпотенциально опасных компонентов веб­страницдо тех пор, пока не разрешить их исполнение наданном узле или глобально и это далеко неполный перечень.Стоп машина!Итак, результатом проведенной работы являетсясобранная по крупицам система защиты противВПО, хакерских атак и несанкционированногосъема информации, которая, причем не грузитОС и является совершенно бесплатной. Думаюна этом можно, и остановиться, УДАЧИ!!!

Page 49: VR-Online (July 2010)

Меня тошнит!Выплескиваем негатив

49

JimmyJonezz: Я, точно неединственный кого тошнит отпогоды. В связи с тем, чтодождя давно нет и видимо непредвидится, а солнце всежарче и жарче окружающаяатмосфера просто раскаленана столько, что невольноощущаешь себя в бане. Мнеприходится через каждыеполчаса, а то и меньше бегать иумываться, ополаскиватьголову. В кабинете настежьоткрыты окна, работаетвентилятор, но этомероприятие нисколько непомогает, одним словом ­ мукастрашная, а если учесть, что из­за жары усиленно работаюткуллеры в "системниках", плюск этому, как я говорил ивентилятор ­ шум стоитневыносимый. Меня ужетошнит от такой погоды, впрямом смысле этого слова.Va­Bank: Да не тошнит. Проначальство уже говорил. Абольше и не про что.Kastor: Не сказать, что меняпрямо тошнит от этого, но одинне очень приятный случай сомной все же произошел.Катался как­то вечером наскутере. Свернул на однудорогу из города, где обычномало машин и дал газу.Покрытие боле менее ровное,машин нет, по бокам мелькаютгустые деревья, а янаслаждаюсь скоростью иветром, обдувающим в такуюжару. Вдруг, за десяток метровот себя замечаю за деревьямидвижняк какой­то, а следом имашину ГАИшников.

Правильно, это чудоматериализовалось из­за тогоже дерева и махнуло мне своейполосатой дубинкой. Началтормозить и остановилсяметрах в 20­ти от него наобочине (он бы еще вслед мнемахнул). Скорость непревышал, хотя бы потому, чтознаков не было, ехал в шлеме,как положено. Прав на скутерыеще не надо и номеров тоже.Стало интересно, что мнепредъявят. Жду, пока онподойдет ко мне.­ Это что, такой тормознойпуть? Давай сюда!Прикинулся шлангом, ждудальше. Пусть сам подходит.­ Я что ли идти к тебе должен?Решил я его не драконить,встал, откатил задом скутерближе к машине и сел обратно.Он чуть подошел ко мне: «Еслиэто такой тормозной путь, тозначит у тебя проблемы соскутером». Вау! Вот это мастер.Интересно, а он может мнесходу сказать уровенькомпрессии в цилиндре? Я емуответил, что не вижу смысларезко тормозить. Онпродолжал: «Моя фамилия«такая­то», ваши документы наскутер». Я попросил сначалапредъявить его своеудостоверение. И тут началсяцирк. Он сунул руку в груднойкарман и завис: «моеудостоверение при мне,показывайте документы». Ага, сразбегу! Я ему напомнил, чтоон должен первый предъявить.Все же достал, открыл, я

вчитался в его удостоверение идал свой студак и талон наскутер. Втыкая в моидокументы начал задаватьстандартные вопросы куда еду,что везу. В ответ не менеестандартные катаюсь, ничегоне везу.­ Откройте багажник, ­ чувакявно охренел как по мне.Обыск, могут проводить толькона стационарных постах, воттак с «бордюра» они не имеютправа. Я переспрашиваю: «этоосмотр?»­ Да, это осмотр, а не обыск, ­уточник он. Я не стал емуобъяснять, что осмотр невключает вскрытие багажника,в отличие от обыска, ­ что вбагажнике?­ Аптечка и правила дорожногодвижения (которых аж двекнижки валялось).­ Все­таки учат правила, ­кивает он второму, который ужелексус тормознул.­ На кого учишься?­ На программиста.­ Хм, надо было тебе на юристаидти, ­ ну давай, поуказываймне. Он отдал документы ипошел к лексусу.­ Я могу ехать? – спросил явслед. Конечно, я могу, лексуспоинтереснее какого­тоскутера. Метров через двести,остановился за поворотом,записал его ФИО и номермашины. А через пятьсотметров, уже и забыл про него,катаясь дальше.

vr­online | июль 2010

VR­Cr

ewМеня тошнит!

Page 50: VR-Online (July 2010)

Меня тошнит!50

vr­online | июль 2010

zahod5277: Все лето менятошнит от каникул. Отдыхотрицательно сказывается намоей продуктивности. Почему­то не хочется рисовать, писать,кодить. Лень будто полностьюзавладела мной и не отпускает.Все пытаюсь что­нибудьсделать, да никак неполучается. А в учебное времяза неделю я рисовал паруколлажей, мог накодить парускриптов для сайта, которыйуже год не могу запустить, былоогромное желание писать дляVR. Единственное чтоудерживает меня в колее ­верстка журнала. Это занятиетрудоемкое, долгое, нудное, ибросить его никак нельзя.Поскорее бы началась учеба,на занятиях параллельно будурисовать наброски ивыдумывать какие нибудьинтересные темы для статей.wwwnet: В этом месяцевнезапно мой гнев пал наобычных людей. Возникаетвопрос: неужели это нормальнодля наших времен? Гадкиеотношения между людьмиповсюду: охранник спокупателем, сервисная службас клиентом, пассажир сэкипажем транспорта и т.д.Причем неуважение и желаниеобгадить день проявляется собеих сторон.Spider_NET: Уходящий месяцбыл особо не урожайным наидеи для этой рубрики.Сначала из­за отпуска, а потомиз­за болезни я мало читалновости и любимые сайты.Соответственно найти, то отчего может затошнить былокрайне проблематично. НО, мневсе уже удалось это сделать.Как ни странно речь опятьпойдет о нашихдобропорядочных чиновниках, аточнее судей. Помните, всередине июля в своем блоге, ярассказал про то, какКомсомольск­на­Амуре осталсябез YouTube? От такогорешения суда и «понимании»сути проблемы меня конкретноподташнивает (а может япросто еще не выздоровел?).Наша страна собирается

укакаться, но поднять проект«Сколково», а некоторыеумники кошмарят провайдерови требуют закрыть доступ ксайтам вроде YouTube, потомучто там были найденыэкстремистские материалы. Асамое главное, что все просьбыи претензии предъявлены лишьк одному провайдеру.Наверное, у другихкомсомольских провайдеровYouTube выглядит по­другому.

Page 51: VR-Online (July 2010)

Векторная графикаInkscape.Картонная коробка

51

Продолжая очередной экскурс, по векторномуредактору Inkscape, я решил, остановится наодном интересном примере – созданиюреалистичной картонной коробки. На этот раз,мое объяснение будет несколько сжато, но болееиллюстрировано, т.к. с основными «моментами»Inkscape вы уже знакомы, осталось только умелоприменить их на практике. Перейдемнепосредственно к самой теме, данногоматериала, т.е. статьи.В предыдущих выпусках журнала мы усвоилинекоторые моменты при работе с инструментамиInkscape и сегодня продолжим то, что начали –пополняем свои знания и умения работы,непосредственно с векторным редактором ивекторной графикой.Давайте начнем с создания нового документа,выберите инструмент ­ Кривая Безье, и рисуемтри грубые грани куба, в перспективе просмотра(x,y,z).

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

Теперь мы будем «разрезать» верхнюю грань надве части. Выбираем верхнюю грань, нажимаемкнопку «Изменить путь» (F2), выбираем левый

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

Выбираем узлы,которые только что создали и нажимаем накнопку «Контур – Разбить» (Shift+Ctrl+K), чтобыразбить его на два объекта. Теперь вы должныиметь четыре различныхобъекта, как показано нарисунке (я наполнил ихслучайными цветами длялучшего обзора – прим.автора).Следующий этап –изменим сторону левойнижней грани, для тогочтобы сымитироватьстарую картонную коробку.Нажмите клавишу F2 дляредактирования пути.Выберите два узла инажмите кнопку «Добавить узел». Теперь,трансформируйте ее в симметричный узел,поворачивая рычаги (Как их использовать?Читай предыдущие статьи по Inkscape — прим.автора).

Откройте менеджер слоев. Если вы не знаете,как это сделать, даю подсказку ­ выбираем Слой­ Слои... (Shift+Ctrl+L). У вас должен быть одинслой, переименовываем его в «Box». Теперьдублируем его, перейдя в Слой ­Продублировать активный слой.Переименовываем новый слой в "bg_Box" иразмещаем его под слоем «Box». Теперь у васvr­online | июль 2010

Автор

:Jimm

yJone

zzEm

ail:jim

myjon

ezz@b

k.ruКреатиff

Page 52: VR-Online (July 2010)

Креатиff52

vr­online | июль 2010

имеются два одинаковых объекта на двух слоях.Так, на данный момент вы можете спрятать слой«Box».Сейчас мы будем изменять форму "bg_Box" ­создадим только один объект и придадим емувид старой коробки, немного исказив края.Выделить все и применить Контур ­ Объединить.Эта форма будетнаходиться на заднемплане, ииспользоваться длятекстурирования –имитация освещения итени. Теперь блокируем"bg_box" чтобыобезопасить отслучайного измененияэтого слоя, ивозвращаемся на«Box».Теперь мы будем«играть со светом» ­используемградиентную заливкуцвета для имитациисвета, идущего отверхнего левого угла.Открываем диалог ­Заливка и обводкаили нажимаемклавиш «Ctrl» +«Shift» + «F».Выбираемрадиальный градиент,которыйподразумевает использование несколькихцветов, чтобы задать какие будем использоватьжмем: «Изменить», и задаем светло­коричневыйцвет (#c2aa99), выбираем второй пункт из спискаи задаем для него темно­коричневый цвет(#926a4f).Повторите предыдущий шаг для каждой частикартонной коробки. Каждой из них нужнонастраивать особую заливку, т.к. свет падает изверхнего левого угла, что дает не равномерноеосвещение объекта.

Границыосвещениядолжны бытьболее ярче,поэтому создадимэффектосвещения для ихподчеркивания.Для начала нужно создать объект –трехконечную звезду, и задать для нее цвет типа#b4a69e.Чтобы можно было начатьтрансформирование

объекта, нужно преобразовать его в контур:контур – Оконтурировать объект ... (Ctrl + Shift +C). Теперь растяните кончики звезды по тремкраям коробки и премините один из фильтровразмытия, на свое усмотрение.

Следующим этапом будет имитация ударов покоробке, для этого выбираем инструментКривая Безье и рисуем темно­серые фигуры,похожие на уголки, в углу. В диалоге заливки иобводки устанавливаем для них размытиеравное 10,0.По замыслу, у насбудет стараякоробка, а наличиеподтеков и следоввлажности,неизбежно, поэтомупопробуемреализоватьданный замысел,используя стильграндж. Для этого нужно создать эллипс,желательно черного цвета и с помощьюинструмента каллиграфическое перо, сустановленными параметрамиширины 10, и сужения 25,нужно создать шероховатыйэффект на одной из сторонформы эллипса. Не забудьтеполучившиеся два объектаобъединить.

Осталось удалить лишнее. Рисуем большойпрямоугольник, который требуется удалить, инакладываем его на эллипс, оставив незакрытойоду часть, которую мы сделали неровной.Выделяем два объекта и применяем к нимКонтур ­ Разность. Другой способ в созданиигрязных пятен и разводов, состоит виспользовании расширений: рисуем простуюформу, и применяем модификатор Расширения– Изменения контура – Фрактализация. Ясоветую вам самостоятельнопоэкспериментировать с параметрами.Несколько раз продублируйте получившиесяобъекты, по­разному измените их размеры иразместите на коробке.

Page 53: VR-Online (July 2010)

Креатиff53

vr­online | июль 2010

К каждому объекту примените градиентнуюзаливку от черного цвета к прозрачному.

Теперь следует создать ленту на ящике, дляэтого нам понадобятся два прямоугольникаимитирующие ленту.

Выделите нижний сегмент. Для того чтобысоздать имитацию рваной ленты, следуетдобавить несколько узлов и расставить такиобразом, чтобы было похоже на оборванныйконец ленты.Выделите ленту и залейтеее коричневым цветом(#625037). В верхней частиленты используйтевертикальный, линейныйградиент. Добавьте третьюопорную точку в градиент,используя редакторградиента, для достижения нужного эффекта;для среднего цвета выберете светло­коричневый(#a4804a).

Для повышениякачества картинкидобавим текстуру«Ржавчина», этотбесплатныйэкземпляр доступен на TextureZ.com(http://texturez.com/textures/rust/1547). Для того,чтобы создавать маску, при сохранении того жеразмера, что и наш ящик, используем формуфона, которая находится на слое bg_Box.Выбираемслойbg_Box ,дублируемипереносимнаотдельныйслой, приэтом давему имя –Texture.

Теперь меняем цвет этого объекта на белый (этонеобходимо, чтобы использовались альфаканалы). Переносим наше ржавое побитовоеотображение текстуры и устанавливайте егониже объекта.Выделяем текстуру и белую форму маски, жмемна правую кнопку мыши и используем пункт«Применить маску». Теперь в свойствах слояустанавливаем Прозрачность на 25%.

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

Page 54: VR-Online (July 2010)

What is?Разбираемся с фракталами

54

Шляясь по просторам интернета, я наткнулся напрограмму Apophysis, которая помогаетвоплощать самые неуемные и необузданныефантазии воспаленного мозга в фракталах. Язаинтересовался этой программой ифракталами.Перед тем как двигаться дальше, рассмотримтеоретическую часть. Привожу фразу изВикипедии: «Фрактал (лат. fractus — дробленый,сломанный, разбитый) — сложнаягеометрическая фигура, обладающая свойствомсамоподобия, то есть составленная изнескольких частей, каждая из которых подобнавсей фигуре целиком. В более широком смыслепод фракталами понимают множества точек вевклидовом пространстве, имеющие дробнуюметрическую размерность (в смыслеМинковского или Хаусдорфа), либо метрическуюразмерность, строго большую топологической.Фрактал — это бесконечно самоподобнаягеометрическая фигура, каждый фрагменткоторой повторяется при уменьшении масштаба.Фрактал — самоподобное множество нецелойразмерности».Не пугайся если после прочтения такихопределений ты больше запутался, чемразобрался. После первых уроков в программеApophysis все встанет на свои места.Основная частьДля начала познакомимся с интерфейсомAPOPHYSIS.

1. Здесь вы можете выбрать флейм, с которымбудете работать далее.2. Это меню рендера. Когда вы создали свойфрактал, вам нужно сохранить его, задав размеризображения и его качество. Величина окнасамой программы не влияет на величинуконечного изображения. Если у вас медленныйкомпьютер, лучше сделать окно Apophysis'aнебольшим.

3. Здесь вы можете задать качествоизображения фрактала в самом окнепрограммы. Это не влияет на качество конечногоизображения ­ оно задается в меню рендера.4. Это редактор флеймов фрактала. Флеймпредставлен треугольником, с которым вам ипридется работать, если вы того захотите.Любой треугольник вы можете переместить впространстве, изменить его угол, дублировать,поменять его характеристики в меню variations,для чего в программе предусмотрены различные

vr­online | июль 2010

Автор

:phan1

3Креатиff

Page 55: VR-Online (July 2010)

Креатиff55

vr­online | июль 2010

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

6. Подбор цветовой гаммы.

7. Окно мутаций фрактала. Здесь вы меняете еговнешний вид.

8. Редактор скриптов, влияющих на общиепринципы формирования фрактала.9. Лупа, позволяющая вам выделить иприблизить какой­то участок фрактала.10. Список трансформаций фрактала. Этипараметры в первую очередь влияют на внешнийвид фрактала. В окне мутаций вы увидите тольковарианты на тему, заданную в этом меню.11. Меню скриптов. Здесь вы можете

поэкспериментировать со скриптами,отредактировать их, если знаете, как этоделается [я не знаю], выбрать те, которымибудете чаще всего пользоваться, и добавить вfavorites.КонецНа сегодня все. Знакомится с фракталами мыпродолжим в следующий раз. Если возникнутвопросы — пиши, с удовольствием отвечу

Оригинальная статья:http://www.demiart.ru/forum/index.php?showtopic=130703&st=0

Редактор скриптов

Page 56: VR-Online (July 2010)

NuCaptcha.Головоломка для спамеров.

56

Канадский стартап NuCaptcha представил новуюразновидность защиты от роботов­комментаторов — видео­капчу. Разработчикиуверяют, что людьми их видеоголоволомкиразгадываются на раз, а вот программистампридётся потрудиться, чтобы создатьавтоматическую распознавалку.По сути видеокапча представляет собойбегущую по искривлённой линии строкусимволов, из которых человеку предлагаетсяраспознать последние три, выполненных вкрасном цвете. Фон, по которому бегут буквы,настраивается. Количество и цвет ключевых букв— нет; эти параметры контролируются вNuCaptcha и могут быть в любой моментизменены, если разработчики решат, что такнужно для укрепления защиты от роботов, атакже людей, распознающих капчи за плату.Впрочем, кое­какая дополнительная защита всистеме уже существует. Так, если системазаподозрит в пользователе капча ­ "негра"(способ не уточняется, но, скорее всего,анализируется частота ввода ответов навидеокапчи с одного IP­адреса), бег строкисимволов на следующих капчах будетзамедляться всё больше и больше.Соответственно будет задерживаться ипоявление на экране ключевых красных букв, такчто у профессионального капча­распознавателябудет уходить по 15 секунд на каждуювидеокапчу. Очевидно, в NuCaptcha считают, чтоэто сделает работу по распознаванию видеокапчэкономически невыгодной даже для индийцев.NuCaptcha Player предпочитает использоватьAdobe Flash Player для отображения видео. Онпозволяет отображать видео самого высокогокачества.В настоящий момент существуют API дляиспользования видеокапчи на PHP, .NET и Java.Имеется также Wordpress­плагин. Со временемобещают поддержку и других языков иплатформ.О минусах. Бегущая строка состоит изанглийских слов, соответственно красные буквы

выбираются из латинского алфавита.Английский используется и в дополнительныхэлементах видеокапчи. В NuCaptcha сейчасработают над поддержкой других языков, однаконе понятно, будет ли среди этих языков русский.Давайте теперь, для лучшей наглядности,рассмотрим небольшой примерчик. Примербудет на PHP. Он покажет минимальный код,необходимый для применения NuCaptcha навашем сайте. Это минимальный пример, и непредназначен для полного обозрения.

Общая настройка// Include the Leap Client library

require_once("./../leapmarketingclient.php");// Your ClientKey is supplied by Leap andcan be downloaded from the publisher dashboard

Leap::SetClientKey("YOUR_CLIENT_KEY_HERE");// The session is used in this example tostore persistent data on the server

session_start();

Шаг 1 ­ Инициализация NuCaptcha сделки// initialize the transaction

$t = Leap::InitializeTransaction();

Шаг 2 ­ Показать NuCaptcha Виджет// and display the actual player code

echo $t->GetWidget();

Вот и все!Это все, что вам нужно, чтобы NuCaptchaработала на вашем сайте. Ну а теперь, конечноже, готовый пример. Прежде чем начать писатьпример, набросаем маленький алгоритм.1. Иницианализация NuCaptcha2. Отображение виджетов NuCaptcha на

vr­online | июнь 2010

Автор

:Ами

рханХ

ачабег

овaka

aka_G

radБезопасность

Page 57: VR-Online (July 2010)

Безопасность57

vr­online | июнь 2010

веб­странице3. Проверка пользовательского ввода ввиджете NuCaptchaПример ниже делает два пункта, инициализацияотображения виджетов для пользователей, атакже проверку.Общая настройка

// Include the Leap Client libraryrequire_once("./../leapmarketingclient.php");

// Your ClientKey is supplied by Leap and canbe downloaded from the publisher dashboardLeap::SetClientKey("YOUR_CLIENT_KEY_HERE");

// The session is used in this example tostore persistent data on the serversession_start();

Шаг 1:// Check if the persistent data was stored,and if the user actually submitted an answerif(true === array_key_exists('leap',$_SESSION) && true === Leap::WasSubmitted())

// validate the transaction$valid =Leap::ValidateTransaction($_SESSION['leap']);

// check the resultif (true === $valid)

// We have a valid captcha$transaction_status = "Answer wascorrect.";

// This is where you'd most likely redirect tothe next page, or submit the results// of what you were trying tovalidate (forum post, picture submission, etc)

else

// validation failed; find out why.switch (Leap::GetErrorCode())

case LMEC_WRONG:case LMEC_EMPTY:

$transaction_status ="Answer was incorrect.";break;default:

$transaction_status =sprintf('Error Code: %s Error Message: %s',Leap::GetErrorCode(),

Leap::GetErrorString());break;

Шаг 2: Отображение виджетов NuCaptcha /HTML.<html>

<head><title>

NuCaptcha Minimal Demo Page</title>

</head><body><!-- Form must use post method -->

<form method="post"><?php echo $player_output; ?>

<br><!-- must supply your ownsubmit button --><button>Test YourAnswer!</button>

</form><!-- Tell the user what happened last timethrough -->

Transaction Status: <?php echo$transaction_status; ?></body>

</html>

Page 58: VR-Online (July 2010)

Tor.Защита передачи данных

58

Как мы знаем, любой наш шаг в сети,отслеживается ­ будь то обычный серфингинтернета в поисках «сладкого» или простойразбор электронной почты. Подключаясь кглобальной сети интернет, мы получаем особый,уникальный идентификатор, который вдальнейшем играет большую роль, напротяжении всей сессии. Не трудно догадаться,что таким идентификатором служит обычный IP­адрес (кроме этого, есть и другиеидентификаторы – прим. автора). Каждое нашеоткрытие того ли иного ресурса, записывается; иэтот адрес оседает в логах, хотим мы того илинет. Если этот момент, можно решить, товозникает вопрос другом – анализ передачиданных. Вот об этом, мы и поговорим.Я не хотел бы повторяться, но мне следуетнапомнить еще раз, про ситуацию вокруг ThePirate Bay. Этот torrent­трекер, которыйнаходился на краю от полного и окончательногоуничтожения, все еще жив, и это благодаряпиринговым сетям, которые гарантируютпрактически 99% анонимность в сети (100%уверенность никто не даст!), и это подтверждаеттот факт, что количество пользователей трекера,не смотря на недавно вышедший закон «трехзапретов», лишь увеличивается.Есть и другие нюансы этого громкого дела, но вэти подробности мы вдаваться не будет, т.к. темаданной статьи не включает смакование всякогорода подобной информации. Единственноеотмечу, что благодаря способам, позволяющимнаходиться в сети анонимно, можно непереживать о том, что «жандармы» не придут квам домой и не заберут твой сервер, биткомнабитый вареза (интересно, это слово еще вобиходе? =D – прим. автора).В предыдущем выпуске журнала, за июнь 2010года, в статье «I2P: Анонимность в сети», мызатронули тему анономности в сети, рассмотреввозможность использования бесплатногопрограммного обеспечения I2P, и посредствомего настройки анонимно находиться в сети. Какоказалось, здесь имеются свои нюансы, аименно – среди русскоязычного населения I2P,

пока не особо распространено, поэтомунасладиться ею в полной мере непредставляется возможным, но я надеюсь, чтоI2P вскоре будет уделяться большее внимание(успех этого мероприятия зависит от Вас,дорогой читатель – прим. автора). На данныймомент тема анонимности в сети, стоит не такостро, но все, же чувствуется некотороенапряжение, которое немного настораживает.Надеюсь, ты не сливал варез или не скачивалтонны не лицензионного видео­, аудиоконтента,который бы мог тебя скомпрометировать, аможет ты общаешься с диссидентами илиначинающий варезник и ведешь свою активнуюдеятельность через интернет, при этом, незаботясь о безопасности передаваемых данных?Конечно, не хочется, чтобы кто­то свободно смогпроанализировать твой трафик, и, увидев что­то,противозаконное в них, настучать тебе поголове. Вот и подумаешь, после этого, а стоилоли относиться к теме безопасности спренебрежением (которое как мы знаем русскимсвойственно – прим. автора).На примере использования системы Tor, мырассмотрим, как максимально приблизиться кидеальной защите данных.Tor, является бесплатным программнымобеспечением и открытой сетью, котораяпозволит защититься от различного родасетевой слежки, угрожающей личной свободе ичастной жизни, конфиденциальнойпрофессиональной деятельности и отношениям,а так же обезопаситься от деятельности органовгосударственной безопасности и анализатрафика. Вся суть данной сети, заключается втом, что все коммуникации переадресовываютсяв распределенную сеть ретрансляторов,предоставляемых добровольцами по всему миру(кстати, и ты можешь стать одним из них!): это неоставляет возможности, отслеживающему вашеинтернет соединение, узнать какие сайты выпосещали, а посещаемым вами сайтам ­ узнатьваше физическое местоположение. Отсюдаполучаем вывод, что чем больше людейиспользуют Tor, тем больше повышается процент

vr­online | июнь 2010

Автор

:Jimm

yJone

zzEm

ail:jim

myjon

ezz@b

k.ruБезопасность

Page 59: VR-Online (July 2010)

Безопасность59

vr­online | июль 2010

безопасности.Сервис Tor работает с множествомиспользуемых приложений: веб­браузеры(FireFox, IE8, Opera), клиенты служб обменамгновенными сообщениями (ICQ, Jabber),программы удаленного входа в систему (RAdmin,Carbon Copy), а также всеми другимипрограммами, использующими протокол TCP.Tor ­ это сеть виртуальных туннелей, которыепозволяют отдельным пользователям и группамлюдей повысить свою конфиденциальность ибезопасность в сети Интернет. Дляразработчиков/программистов, Torпредоставляет возможность разрабатыватьновые инструменты коммуникации со встроеннойзащитой конфиденциальности, благодаряоткрытости, данной системы. Tor обеспечиваетоснову для определенного спектра приложений,которая позволяет организациями ииндивидуальным пользователям делитьсяинформацией через публичные сети, неподвергая опасности свою конфиденциальность.Рассмотрим пример работы сети Tor. Ее идеязаключается в использовании запутанного исложно­прослеживаемого пути, чтобы сбить столку преследователя, а затем ­ периодическоеуничтожение следов, позволяя свести кминимуму все попытки анализа трафика. Вместотого чтобы идти по прямому пути от отправителяк получателю, пакеты данных в сети Torвыбирают случайные маршруты через несколькосерверов, которые скрывают ваши следы так, чтони один наблюдатель в любой точке не можетсказать откуда или куда направляются данные.Кроме этого, Tor может служить заменойобычного VPN, который не скрывает отзлоумышленника точное количество ивременные промежутки сеанса связи.Итак, мы уяснили, что сервис Tor, проводит нашиоперации связи через некоторое количествоузлов в сети интернет, и ни одна из точек, несвязывает нас с запрашиваемым нами сервером.

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

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

После выбора цепочки узлов, приложения могутиспользовать сеть Tor и можно передаватьразличные данные по сети. Благодаря тому, чтокаждый сервер в цепочке видит не большеодного шага, то ни сторонний наблюдатель, никакой­либо «левый» сервер не смогут связатьполучателя и отправителя. Как упоминалосьранее, сеть Tor поддерживает работу только сTCP потоками и может быть использованалюбым приложением, поддерживающим SOCKS.Может возникнуть вопрос, что данная сеть будетработать медленно, т.к. скорость уменьшаетсяпропорционально количеству узлов в цепочке, ввиду этого, для повышения скорости Torиспользует одну и ту же цепочку для соединенийв примерно десять минут (+/­ 5 минут). Послеэтого рассчитывается новая цепочка, чтобы несвязывать ваши предыдущие действия споследующими узлами

Функционал системы Tor предполагаетвозможность использования скрытых сервисов.Будь то веб­доступ или сервер системы обменамгновенными сообщениями, но и это еще не все­ используя "rendezvous"(http://www.torproject.org/hidden­services.html.ru)точки пользователи системы Tor могутсоединяться с этими скрытыми сервисами,причём ни одна из сторон не сможет узнать, ктонаходится на другом конце связи, это можноиспользовать, если мы хотим, например,разместить сайт, при этом, не беспокоясь оцензуре.Нельзя не затронуть и минусы данной системы.

Page 60: VR-Online (July 2010)

Безопасность60

vr­online | июль 2010

Tor не решает проблем анонимности, егофункционал таков, что акцент ставится только назащите передачи данных, поэтому еслииспользуются отличные от TCP протоколы, то ужтут не обойтись без вспомогательных средств.Следует запомнить, что, как и любаяанонимизирующая сеть, которая достаточнобыстро работает, Tor не защищает от сквозныхтайминг­атак: если атакующий видит трафик,исходящий из вашего компьютера, и видит какой­то трафик, входящий на выбранный ресурс, онможет использовать статистический анализчтобы определить что эти два трафика связаны.Что ж, попробуем настроить Tor и на своей«тачке». В качестве наглядности, я взял системуUbuntu 10.4, поэтому без терминала не обойтись.Следует учесть, что для установки необходимыправа суперпользователя, которые можнополучить посредством выполнения команды:sudo su. Следующий этап действий таков —запрашиваем пакет для добавления его врепозиторий, добавляем ключ (это необходимодля идентификации), обновляем репозиторий.echo 'deb http://deb.torproject.org/torproject.orgkarmic main'&gt;&gt;/etc/apt/sources.list# Добавление репозитарияapt­key adv ­­keyserver keys.gnupg.net ­­recv886DDD89# Добавление gpg­ключаapt­get update# Обновление репозиториевapt­get install tor tor­geoipdb privoxy

Выполним настройки: открываем файлконфигурации Privoxy “/etc/privoxy/config” идобавляем строку: "forward­socks4a /127.0.0.1:9050 .". Перезапускам Privoxy, лезем внастройки веб­браузера и в поле Socks4­прокси,вбиваем адрес: 127.0.0.1:9050. Теперь, вбиваемв адресную строку адрес вида:https://check.torproject.org/ и смотрим, работаетли Tor или нет.В этой статье я многое не затронул, какнапример, выступить в роли ретранслятора истать частью цепочки для передачи трафика или,например, предоставлять пользователямскрытые сервисы, но я надеюсь, ты предпочтешьсамостоятельно продолжить изучение даннойтемы, а я в свою очередь могу пожелать тебелишь удачи. Если что­то не понятно, яспециально приготовил несколько полезныхссылок, которые ты можешь увидеть в концестатьи, но кроме того ты всегда можешь спроситьсовет или задать свой вопрос на сайте vr­online.ru.

Дополнительные ссылки:Дополнение для FireFox:https://addons.mozilla.org/ru/firefox/addon/2275/Официальный сайт: https://www.torproject.org/Настройка Tor (I2P): http://www.mr­h1z.com/linux/171Скрытые сервисы: https://www.torproject.org/docs/tor­hidden­service.html.ruНастройка ретранслятора:https://www.torproject.org/docs/tor­doc­relay.html.ru

Page 61: VR-Online (July 2010)

Мнение VRСколково

61

JimmyJonezz: Сколково ­будущее. Определеннобудущее, но вот светлое лионо? Я полагаю, это основнойвопрос. Дело в том, что я несогласен, с его будущимрасположением. Строительствоэтого городка должно быть ввосточной или в центральнойполосе России. Европейскаячасть России и так уже хорошоразвита, зачем скапливать все водном месте ­ с экономическойточки зрения это не правильнои стратегически тем более,последнее на мой взгляд кудаважнее. По большому счету,Россия не дружит с высокимитехнологиями, и мы еще неготовы к таким масштабнымпроектам, т.к. у нас нет основы.Столковое ­ это проект длягалочки, пародия наСиликоновую долину, но нужнооптимистически смотреть вбудущее и верить, что это неочередное отмывание денег.Глядишь, что нибудь из этого ивыйдет, полагаясь на старыйдобрый "авось".Kastor: Каюсь, только сегодняузнал, что у нас планируетсясвоя кремниевая долина.Критики я достаточно прочитал,мол, строиться она будет надорогой земле, слишком многонадежд на нее возлагают ивообще в России все черезодно место. Но меня этановость порадовала. А почемубы и нет? Я уверен, что затехнологиями будущее и будетвдвойне приятнее, если этобудут наши технологии! Судитесами, сколько гениальных умовуехало за границу только

потому, что у нас негдереализоваться. Очень надеюсь,что проект будет доведен доконца и принесет свои плоды.Может быть, он хоть как­тоостановит утечку мозгов, инаши специалисты будутработать на свою родину, а нена чужую компанию.zahod5277: В принципе я непротив этого города будущего.Однако на данный момент вРоссии есть проблемы кудасерьезнее научного центра:строительство дорог, жилья,помощь ветеранам ималоимущим, медицина,образование... Мне не нравитсянынешняя политика страны ­все делать сразу, а когда денегни на что не хватит так всебросят. И, как мне кажется,будет у нас недоделанныйпоисковик, недостроенныйгород будущего, а главное небудет ни жилья, ни дорог,ничего.wwwnet: Много в интернетахнаписано про мега­проектСколково. Очень малоположительных отзывов. Я тожепо данному поводупридерживаюсь скептическоговзгляда. Сколково ­"Кремниевая долина" в Росиии.Бред. Отличий столько же, какмежду павлином и подъемнымкраном. Возможно, мы увидимотчеты об успешнойдеятельности этого русского IT­центра, но будет ли этадеятельность на самом делеуспешной? Хочется верить, нонадежда мала.Spider_NET: Проект,

безусловно, интересный итеоретически полезный, да иоднозначно может помочьпополнить без того пустуюгосударственную казну. Однако,пока я отношусь к немускептически. В России всегдабыли и останутся двепроблемы: дураки и дороги.Государство будет выделять нехилое количество денег нафинансирование проекта, ночасть этих бабосовобязательно кто­нибудьзахапает себе. Я даже несомневаюсь, что этопроизойдет. В результате,придется экономить и как­товыкручиваться. При такихусловиях, о качествеисполнения проекта ужепомнить никто не будет. Такпроект имеет все шансы сразуродиться «больным» и с однойлишь мыслью: «Авось, всебудет хорошо!».Если честно, то мне кажется,что пока России не нуженпроект такого масштаба какСколково. Да, на бумаге у негомного преимуществ ивкусностей, но не стоитзабывать, что это только набумаге. В реале обязательновсе будет по­другому. Лучше бы«башкавитые» люди сверхусначала разобрались бы сболее мелкими проблемами (вобласти IT), а потом уженачинали бы сворачивать горы.

vr­online | июль 2010

VR­Cr

ewМнение VR