Карта сайта Хакер в RSS Энциклопедия Хакера PDA версия сайта Почтовые рассылки Хакера    Хакер в Twitter Хакер в ВКонтакте Приложение Хакер для Facebook Хакер на Formspring.me
Журнал Новости Форум Видео Life Xakep Live (блоги)
Bugtrack Статьи Блог Поиск English
Трюки с phpinfo Трюки с phpinfo
Совсем недавно в паблике появилась информация о новом интересном подходе к эксплуатации уязвимостей класса LFI с помощью бесполезной на первый взгляд функции phpinfo() и временных загрузочных файлов. Берем на вооружение этот полезный прием....
Интервью с создателем NGINX Игорем Сысоевым Интервью с создателем NGINX Игорем Сысоевым
Легкий веб-сервер NGINX буквально только что вышел на 2 место по популярности в интернете. А незадолго до этого создатель NGINX привлек 3 млн. долларов инвестиций и основал одноименную компанию. В общем, поводов для общения с Игорем Сысоевым у нас была масса....

XAML: умерщвление flash-а

Bookmark and Share

Введение

Грядёт эра новой ОС от Microsoft - Windows Vista. Ни для кого не секрет, что в ней множество новшеств, фич и наворотов. Одна из самых важных и значимых для программера - это новомодная технология .NET. Что она из себя представляет? Это, по сути дела, виртуальная машина, подобно SUNовской, которая призвана решить множество проблем, с которыми сталкивается большинство программеров. В эту новую платформу вошли несколько языков, и каждый может найти для себя то, что ему по душе. Я не буду перечислять их названия, а расскажу об одном из них - это XAML. Вообще, весь этот замес вокруг языка назвали Windows Presentation Foundation (WPF). Всё это реализовано в третьей версии пакета Microsoft Framework (не путать с Metasploit Framework от H D Moore) и, проще говоря, представляет собой мега-улучшенный HTML+XML, если можно так выразиться. С его помощью теперь легко и просто можно создавать динамичные объекты, не прибегая к всякого рода графическим функциям. Многие обвиняют Microsoft, что, мол, опять создают свои собственные гибриды популярных технологий и пытаются навязать своё. Я скажу вот что - Microsoft, проделав громадную работу, совершенствует старые технологии и существенно тем самым облегчает жизнь программерам и дизайнерам. Использовать её либо нет, решать только тебе, и скажу сразу, игра стоит свеч. Чтобы не быть многословным, предложу посетить следующий урлик http://channel9.msdn.com/playground/wpfe/PageTurn/default.html.

Не поленись и загрузи метровый рантайм, для того чтобы увидеть лишь ту малу часть, на что способна WPF. Кстати, некоторые уже называют WPF "убийцей Flash'а". Честно говоря, технологии настолько разные в реализации, что я бы не стал их сравнивать, но с виду действительно можно подумать, что это флеш. Итак, я заинтересовал тебя, и мы едем дальше.

Что нужно?

В Windows Vista все необходимые компоненты для работы (но не разработки) уже присутствуют, но если ты, как и я, не любишь быстро перебираться на сырые и непроверенные продукты, то мы всё будем настраивать под ХР. Хотя сама Microsoft настоятельно рекомендует всё проектировать именно из-под Висты и, если это веб-ориентированное приложение, то непременно использовать седьмого осла. Но не во всём же потакать мелкомягким. Для того чтобы WPF приложения успешно работали у тебя на машине, необходимо установить Microsoft Framework 3. После установки должна появиться новая служба Windows Presentation Foundation Font Cache 3.0.0.0, так что не пугайся при виде нового процесса PresentationFontCache.exe в диспетчере задач :). Но для разработки приложений этого будет недостаточно. Если же у тебя уже стоит Microsoft Visual Studio 2005 Team Suit, то достаточно поставить Visual Studio 2005 extensions for .NET Framework 3.0 (WCF & WPF), November 2006 CTP, и при создании нового проекта в ветках дотнетовских языков (С#, VB) можно увидеть новый компонент Framework 3. Как раз в нём и будут доступны приложения WPF. Если же Microsoft Visual Studio 2005 не наблюдается у тебя на компе и ты не хочешь её ставить, могу предложить Microsoft Expression Web, Expression Blend, Expression Design, либо Expression Media (http://www.microsoft.com/products/expression/en/default.mspx). Каждая из них заточена под определённые задачи. Что интересно, сами эти продукты написаны с использованием технологии WPF. Но я бы рекомендовал использовать именно студию. Для полноценной проверки работоспособности приложения не помешало бы в самом начале установить IIS и сделать это перед установкой студии (это важно, иначе потом могут возникнуть трудности с регистрацией веб-сервера в студии), но это необязательно, всё будет работать посредством броузера.

Создаём проект

Итак, у тебя всё установлено, и ты готов приступить. Я буду использовать студию, так что запускаем её, создаём новый проект, выбираем язык программирования по вкусу (поддерживающий платформу .NET), в нём ветку .NET Framework 3 и тип проекта - XAML Browser Application (WPF). У нас будет веб-приложение, т.е. оно будет исполняться в броузере. Кстати говоря, в большинстве случаев написанный код на XAML можно приспособить и для Desktop-приложений. Портирование нашего проекта на Windows Application (WPF) будет твоим домашним заданием, к тому же это не так уж и сложно. Так, что там ещё? Ах да, даём имя своему проекту, указываем произвольный путь, где он будет храниться, и давим ОК.

Студия сгенерит кучу всяких файликов, но нам пока будет необходим только Page1.xaml-файл. В файле Page1.xaml.cs (если ты выбрал C#) будет размещаться шарповый сопроводительный код - его пока не трогаем. В самом начале будет открыт только readme.txt, смело закрывай его и открывай Page1.xaml. Это можно сделать во вкладке справа - Solution Explorer, двойной клик по нему. Откроется окно, разделённое на две части. Вверху будет превью нашего проекта, внизу сам XAML-код, собственно. Если сделать какое-либо изменение в коде и нажать кнопку "Design", то студия моментально протранслирует код, и в случае ошибки непременно сообщит :).

Так что корректность кода можно определить без компиляции. Тем, кто программировал на ASP.NET, знакомо такое положение дел. Итак, вместо тегов (нодов, кому как удобней) <Grid> </Grid> помещаем следующий код:

<TextBlock TextAlignment="Center" FontSize="16pt" Foreground="#CCCCFF"
RenderTransformOrigin="0.5,0.5">
<TextBlock.RenderTransform>
<RotateTransform x:Name="MyAnimatedRotateTransform" Angle="0" />
</TextBlock.RenderTransform>
Hello World!
</TextBlock>

Очень напоминает XML, не так ли? Но возможности будут намного круче, хотя пока это - не более чем статическая строка. Чтобы получше понять, что к чему, просто поэкспериментируй со значениями в блоке TextBlock. Далее переходим в режим "Design", убеждаемся, что нет серьёзных нарушений в грамматике, т.е. выкрика "Whoops!" не наблюдается, и компилируем (F5). Запуститься браузер и отобразит нам нашу строку. Обрати внимание, что просмотреть исходный код через браузер нельзя. Почему? Думаю будет понятно после публикации проекта. Теперь придадим нашей паге простенькую динамику. Ниже, между нашим кодом и закрывающим тегом </Page> , добавляем следующий код:

<Page.Triggers>
<EventTrigger RoutedEvent="Page.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="MyAnimatedRotateTransform"
Storyboard.TargetProperty="Angle"
From="0" To="360" Duration="0:0:5" RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Page.Triggers>

Снова компилим. Ну вот, уже кое-что. Всё простенько_ и ничего сложного. Если ты уже проектировал веб-приложения, то подумай, сколько бы понадобилось HTML- и JavaScript-кода, чтобы создать такое. На флеше тоже быстро, но сколько он сожрёт трафа? А наши либы и обработчики графики уже на винте. И не нужно ставить никакие плагины-плееры к браузеру, он тесно координирует свои действия с фреймвёрком. Кстати, игры, просмотр видео и создание мультов - всё это подвластно WPF.

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

<StackPanel>
<Canvas Width="700" Height="400" HorizontalAlignment="Center">
<TextBlock Canvas.Top="100" Canvas.Left="50"
TextAlignment="Center" FontSize="30pt" Foreground="#CCCCFF"
RenderTransformOrigin="0.5,0.5">
<TextBlock.RenderTransform>
<RotateTransform x:Name="MyAnimatedRotateTransform" Angle="0" />
</TextBlock.RenderTransform>
По кругу
</TextBlock>

<TextBlock Canvas.Top="100" Canvas.Left="300" Name="scaledText"
TextAlignment="Center" FontSize="30pt" Foreground="Gray"
RenderTransformOrigin="0.5,0.5">
<TextBlock.RenderTransform>
<ScaleTransform x:Name="MyAnimatedScaleTransform" ScaleX="1" ScaleY="1" />
</TextBlock.RenderTransform>
Ближе - Дальше
</TextBlock>

<TextBlock Canvas.Top="250" Canvas.Left="150"
TextAlignment="Center" FontSize="30pt" Foreground="Orange"
RenderTransformOrigin="0.5,0.5">
<TextBlock.RenderTransform>
<SkewTransform x:Name="MyAnimatedSkewTransform" AngleX="0" AngleY="0" />
</TextBlock.RenderTransform>
Вращение
</TextBlock>

<TextBlock Canvas.Top="30" Canvas.Left="300" Name="translatedText"
FontSize="30pt">
<TextBlock.RenderTransform>
<TranslateTransform x:Name="MyAnimatedTranslateTransform" X="0" Y="0" />
</TextBlock.RenderTransform>
Движение
</TextBlock>

</Canvas>
</StackPanel>


<Page.Triggers>
<EventTrigger RoutedEvent="Page.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="MyAnimatedRotateTransform"
Storyboard.TargetProperty="Angle"
From="0" To="360" Duration="0:0:5" RepeatBehavior="Forever" />
<ParallelTimeline RepeatBehavior="Forever" AutoReverse="True">
<DoubleAnimation
Storyboard.TargetName="MyAnimatedScaleTransform"
Storyboard.TargetProperty="ScaleX"
From="0" To="3" Duration="0:0:7" />
<DoubleAnimation
Storyboard.TargetName="MyAnimatedScaleTransform"
Storyboard.TargetProperty="ScaleY"
From="0" To="3" Duration="0:0:7" />
</ParallelTimeline>
<ParallelTimeline RepeatBehavior="Forever" AutoReverse="True">
<DoubleAnimation
Storyboard.TargetName="MyAnimatedSkewTransform"
Storyboard.TargetProperty="AngleX"
From="-45" To="70" Duration="0:0:10" />
<DoubleAnimation
Storyboard.TargetName="MyAnimatedSkewTransform"
Storyboard.TargetProperty="AngleY"
From="-45" To="70" Duration="0:0:10" />
</ParallelTimeline>
<ParallelTimeline RepeatBehavior="Forever" AutoReverse="True">
<DoubleAnimation
Storyboard.TargetName="MyAnimatedTranslateTransform"
Storyboard.TargetProperty="X"
From="0" To="100" Duration="0:0:5" />
<DoubleAnimation
Storyboard.TargetName="MyAnimatedTranslateTransform"
Storyboard.TargetProperty="Y"
From="0" To="200" Duration="0:0:5" />
</ParallelTimeline>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Page.Triggers>

Компилим, и теперь в браузере уже несколько динамичных объектов. Если ты всё же не поленился и установил IIS, то теперь можно сделать публикацию, и уже через него лицезреть плоды творчества. Лезем в Build -> Publish имя_проекта, в открывшемся окне давим на кнопку "Brose" и в новом окне выбираем Local IIS, давим на кнопку "Create New Web Application" и в созданную папочку помещаем наш проект. Next->Next->Finish. Всё, теперь наше приложение доступно через веб-сервер. Также его можно залить и на удалённый веб-сервант, FTP-сервер, либо просто сохранить на файловой системе, в том числе и на удалённой машине. Обрати внимание, что если посмотреть, что получилось в результате публикации, то можно заметить, что от XAML-инструкций и следов не осталось :) , тем самым в некотором роде защищаются исходники, но это не основная цель, главное, что программить паги стало намного легче и мы получили неплохую возможность этим пользоваться.

ЗЫ. Подробнее о технологии на сайте Microsoft: http://msdn2.microsoft.com/en-us/asp.net/bb187401.aspx



Теги: Microsoft , программирование





СЛЕДУЮЩИЕ СТАТЬИ
Ударь копирайтом по работодателю: возвращаем финансы, честно заработанные на служебных произведениях
Руткит в сетевухе: фантазии программиста о создании непобедимого руткита
Чемпионаты по программированию и не только
Алгоритмическая симфония из одной строчки кода
Kinect: разбираемся с новым девайсом и учимся писать для него приложения
Программное обеспечение: поглощая мир
SMS-похититель для Android: Sсriрting Layer for Android - интересная среда разработки для мобильного телефона
13 утилит для безопасной разработки: инструменты от Microsoft для написания надежного кода
Silverlight: защита и нападение
Кроссплатформенный кодинг для мобильных платформ: покоряем iOS, Android, Bada, Symbian и WM с помощью AirPlaySDK
ПРЕДЫДУЩИЕ СТАТЬИ
История пропавшей DLL
ASProtect: практическое использование
Хардкорная отладка с Linice: учимся работать в консольном отладчике ядра
Оптимизация вложенных циклов №1
Спам-боты: вскрытие и борьба
Выполнение разделяемых библиотек в Linux
Джентльменский набор сюрпризов
Технология AJAX для создания современных веб-сайтов
Библия программиста
Визуальные среды программирования для Linux
ОБСУЖДЕНИЕ СТАТЬИ
Логин:
Пароль:
Если у вас есть форумный логин - вы можете использовать его, иначе анонимный гостевой доступ.

Для оставления комментария вы можете зарегистрироваться по упрощенной процедуре.

Обсуждение этой статьи на forum.xakep.ru
Для отправки сообщения введите код, указанный на картинке
Сообщение

UserГость
15.02.2007 12:11:56
Ответить Ссылка
мастдай
UserГость
15.02.2007 23:51:20
Ответить Ссылка
Нет - вроде здорово все.Толька при загрузке урлика http://channel9.msdn.com/playground/wpfe/PageTurn/default.html
Белая и чистая как слеза страничка.Или это так и должно быть?В принципе... черный квадрат есть а чем белый хуже?
Похоже ее могут видеть только разработчики WPF и возможно!автор статьи  :( А это уже большооой минус
UserГость
16.02.2007 0:26:14
Ответить Ссылка
У меня при загрузке на эту страничку (http://channel9.msdn.com/playground/wpfe/PageTurn/default.html) появляется сообщение "Install WPF/E", но не белая страничка.

PS
виндовс может и мастдай, но эта технология мне несколько даже нравится, хотя и не все =)
UserГость
16.02.2007 0:29:11
Ответить Ссылка
Немножко поправлюсь: Я погорячился :( приношу извинения.Там нужно установить WPF/E ?
Иксы его знают что это такое....Но после этого
вашему взру представится -"Красный квадрат" с "ругательной" табличкой Что чего-то нехватет и надо качнуть - хере.После нажатия на хере -"Красный квадрат" станет абсолютно красным и чистым.Немного ожиданий и.....Ваш firefox падает! с сообщением об ошибке.Настоящий эксплойт! :) Это чудо!Они стали эксплойтить браузеры!И еще не известно что там впарили.После рестарта страничка стала грузиться минут 7 прошло после этого оказалось что все висит намертво и страничка так не загрузилась.
UserГость
16.02.2007 0:31:15
Ответить Ссылка
Про масдай -это не я!И не использую его в лексике
UserГость
16.02.2007 0:52:41
Ответить Ссылка
Так кто бы спорил - технология даже очень нужная.
А я как раз интересуюсь ВебТехно для странички.И вот статья кстати.Но каков эффект!Это только отпугнет потенциальных пользователей.
Нее явно рано еще такую использовать.
Да и как видишь неудачная "пользовательская"попытка.
И про масдай - это не я!
Мои два поста после..
UserГость
16.02.2007 16:21:28
Ответить Ссылка
Страници когда их переварачивал, у меня лагали. А так ничего .. вроде понравилось .. тока с флешь при такой загрузке проца им не тегаться..
UserГость
18.02.2007 23:59:25
Ответить Ссылка
этот замес только под винду. в реальной жизни он бесполезен.
UserГость
19.02.2007 10:34:49
Ответить Ссылка
хорошая технология.. имхо скоро она станет такой же привычной как и все остальные.
UserГость
19.02.2007 16:56:54
Ответить Ссылка
У меня в опере показывает только ругательную табличку, даже после установки этого метрового ништячка, в ослике все замечательно, красиво, мне одноначно нравится, но клас юзеров инета, которые прибывают в среднем возрасте это имхо напугает до инфаркта.
AvatarShred
20.02.2007 13:13:05
Ответить Ссылка
Действительно, эта технология пока коректно работает только в осле и как уже упоминалось, необходим Framwork 3. В висте в всё это уже предустановлено, так что там забот меньше. Вообще изначально она писалась под висту, это патом в микрософте решили и портировать её для хрюши, для того чтоб разработчики уже сейчас начали обращать внимание на неё. А вообще на счёт совместимости, это долгий разговор, флеш тоже сначала не на всех браузерах работал, это после того когда он завоевал популярность всем стало хорошо. Вобщем, время покажет.
UserГость
20.02.2007 20:07:34
Ответить Ссылка
Фигня, опять какой-то полусырой, работающий только у пользователей майкрософта продукт...
Будет активно продвигатся, но популярности не завоюет...
UserГость
24.02.2007 21:11:44
Ответить Ссылка
Идея, положенная в основу XAML, не нова, похожий подход уже достаточно давно применяет в своих продуктах Borland, разделяя программный код и код ... бла бла бла...
её идеолог Андерс Хейсберг уже реализовал подобное в формах delphi.... Ну может не сам конечно, а в переносном смысле...

так что это наше с вами будущее без всяких...
и к mono её тож прикрутят, уж будте уверены
UserГость
25.02.2007 17:35:24
Ответить Ссылка
Интересно, легко ли это декомпилить - по идее, не сложнее чем флеш и по-любому проще, чем ЕХЕ. Вообще, тупая это идея - такая "защита", тем более во времена Web 2.0. Да и флеш уже четко съехал в развлекалово - популярные сайты на нем не делаются.
AvatarShred
06.03.2007 16:05:23
Ответить Ссылка
>Интересно, легко ли это декомпилить

Человек вообще не понимает о чём одёт речь, XAML интерпретируется виртуальной машиной без промежуточного бинарного кода. Всё равно что декомпилить скрипт на пхп.
UserГость
19.03.2007 20:06:37
Ответить Ссылка
до тех пор пока вся эта прелесть поддерживается тока ослом - шло бы оно коридорами. а мне почему-то не верится, что скоро ситуация резко изменится...
UserГость
19.03.2007 20:32:48
Ответить Ссылка
Что значит "напоминает XML"? Это и есть XML, может, автору почитать о тм что такое XML?
UserГость
05.04.2007 23:46:34
Ответить Ссылка
Мдяяяя )
Я уж было испугался когда прочитал про "убийцу флеша", ибо я этим зарабатываю на жизнь. Но не тут то было! Сыро это всё ещё. Тот пример с книгой в FireFox2 не был похож на книгу практически ничем. Единственное что нормально там работает, так это превьюшки снизу.
Короче можно спать спокойно )
UserГость
06.04.2007 12:10:19
Ответить Ссылка
по поводу 'умерщвление flash-а' большие сомнения
UserГость
10.04.2007 3:25:15
Ответить Ссылка
Похоже аффтар не совсем хорошо разбирается, что такое WPF, что такое WPF/E и чем они друг от друга отличаются, поэтому решил "слепить" обе технологии в одной статье и писать то что знает.
UserГость
26.04.2007 0:47:09
Ответить Ссылка
To: Guest Отправлено: 10.04.2007 3:25:15

А коль ты у нас умный? то нипиши статью в более открытой форме, что бы мы убогии разобрались.
Обосрать человека любой урод сможет. Прям как ты ;)
UserГость
18.09.2007 15:47:39
Ответить Ссылка
Кроме этой штуки есть и другие, например, flex. У adobe есть буилдр. всё делается элементарно и также просто как здесь, но комплится в итоге флешка. Простая и привычная. Я на своей работе уже её использовался www.forma.1solo.ru
UserГость
16.02.2008 13:23:19
Ответить Ссылка
Flash можно запускать из под любой оси, а это большой плюс, который эта технология не скоро получит. Так что Flash - Forever. WPF в топку
UserГость
18.03.2008 17:42:35
Ответить Ссылка
Фишка ксамла не тольок в вебе. с его помощью можно делать обычные приложения, с легкостью разделяя работу дизайнера и програмиста. причем те же веб приложения элементарно портируются в обычные. это будущее разработки ПО под винду, которой в мире 90%.
AvatarДен Шварц
20.03.2008 20:12:09
Ответить Ссылка
Flash очень скоро умрет, безусловно, но более вероятный его убийца - это SVG. Открытый формат, основанный на XML, реализован на множестве платформ и браузеров. Начиная с 7-й версии, поддерживается и в IE. WPF, как и .NET, только-только появилось, а SVG имеет долгую историю создания и развития, и в настоящее время практически не уступает Flash, даже превосходит - попробуйте-ка сделать трехмерную анимацию на Flash! Единственная проблема - нет такого мощного интрумента, как Flash MX, но это лишь вопрос времени. Являясь открытым форматом, SVG поддерживается многими производителями, в том числе и Adobe, владеющей правами на Flash после банкротства Macromedia.
Так что будущее векторной анимации - за SVG.
AvatarДен Шварц
20.03.2008 20:25:48
Ответить Ссылка
2k0d.biz:
"Flash можно запускать из под любой оси"
ЛОЛ. Ты хоть знаешь, что Flash - это проприетарный коммерческий формат? Запускать флешки можно только на тех платформах, под которые адобовцы написали плеер или плагин. А единственный инструмент для создания флешек - вообще только для Винды. Чем ты будешь делать флешки в Линуксе? В FreeBSD? В MacOS X?
И вообще, любой закрытый формат рано или поздно умирает. Так было со старыми форматами Microsoft Office (до OOXML и ODF), так будет и с Flash.
UserГость
14.07.2008 14:43:32
Ответить Ссылка
Вам хоть за рекламу этого убожества заплатили?




Keywords: zPOSTz zSOFTz, zHOWz, zINFOz, zYANDEXz z36719z
Для Авторов: edit Lock delete Lock



    Rambler's Top100