Дни разработчика 2013

Post on 25-Feb-2016

72 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Дни разработчика 2013. Программа конференции. 09:30 – 09:35 Открытие конференции. Анонс программы 09:35 – 09:45 Программа BizSpark для разработчиков 09:45 – 10:00 Анонс курсов и конкурсов для разработчиков 10:00 – 11:00 Новые возможности при разработке Windows 8.1 приложений - PowerPoint PPT Presentation

TRANSCRIPT

Дни разработчика 2013

Программа конференции• 09:30 – 09:35 Открытие конференции. Анонс программы• 09:35 – 09:45 Программа BizSpark для разработчиков• 09:45 – 10:00 Анонс курсов и конкурсов для разработчиков• 10:00 – 11:00 Новые возможности при разработке Windows 8.1 приложений• 11:00 – 12:00 Управление процессом разработки программного обеспечения с

помощью Team Foundation Server 2013• 12:00 – 12:30 Кофе• 12:30 – 13:30 Разработка игр для Windows 8• 13:30 – 14:30 Активируй возможности Windows Azure• 14:30 – 15:30 Обед• 15:30 – 16:30 Новые возможности С++

Наша команда

Виктор Цикунов, DPE Lead

Татьяна Зубец, AMM

Евгений Вакульчик, Win8&WP Top Apps

Сергей Байдачный, Win8&WP Total Apps и многое другое …

Сергей Поплавский,Главный по Azure

Елена Харченко,Помощник DPE Lead

Андрей Шоханов, IT Pro

BizSpark

BizSpark• Программа, ориентированная на стартапы:• Все программное обеспечение Microsoft, бесплатно, на три года• Специализированные события• Покрытие команды до 10 человек• Windows Azure• Дополнительное visability

BizSpark• Требования и условия:• Компания или индивидуальный разработчик должны разрабатывать

собственный продукт• Иметь оборот менее 1 миллиона в год• Компания не должна быть старше 3 лет• Нет необходимости выпускать продукт • Плата не взымается

Анонсы событий и конкурсов

http://www.microsoft.ua/nebotan

http://www.microsoftvirtualacademy.com• Язык программирования C#• Разработка Windows 8 приложений• Разработка Windows Phone приложений• Windows Azure

Курсы для участников BizSpark• Разработка приложений с использованием Windows Azure

Новые возможности при разработке Windows 8.1

приложенийСергей Байдачный

Sergiy.Baydachnyy@Microsoft.com

Windows 8 APIsUser interface

Fundamentals

Devices Graphics and media Communications and data Services

Geo-location

Proximity

Direct3D Direct2D Direct Write

PlayTo

Contracts

Bing

Azure Mobile

HTML5/CSS XAMLInput Controls

Authentication

Portable

Sensors Playback Capture

Printing

SVGCanvas

Local storage SMS

Streams Background transfer

Syndication Networking

XML and JSON

Skydrive

Live tiles and toastAccessibility Data binding

Application services Threading/timers Memory

management Globalization Cryptography

Xbox Live

Windows 8.1 APIsUser interface

Fundamentals

Devices Graphics and media Communications and data Services

Geo-location

Proximity

Direct3D Direct2D Direct Write

PlayTo

Contracts

Bing

Azure Mobile

HTML5/CSS XAMLInput Controls

Authentication

Portable

Sensors Playback Capture

Printing

SVGCanvas

Local storage SMS

Streams Background transfer

Syndication Networking

XML and JSON

Skydrive

Live tiles and toastAccessibility Data binding

Application services Threading/timers Memory

management Globalization Cryptography

Xbox Live

Windows 8.1 APIsUser interface

Fundamentals

Devices Graphics and media Communications and data Services

Geo-location

Proximity

Direct3D Direct2D Direct Write

PlayTo

Contracts

Bing

Azure Mobile

HTML5/CSS XAMLInput Controls

Authentication

Bluetooth

USB

HID WiFi direct

Point of service

3Dprinting Scanning

WebGL

HTTP

Contacts

Appoint-ments

PDF

Speech synthesis

Diagnostics

Portable

Sensors Playback Capture

Printing

SVGCanvas

Local storage SMS

Streams Background transfer

Syndication Networking

XML and JSON

Skydrive

Live tiles and toastAccessibility Data binding

Application services Threading/timers Memory

management Globalization Cryptography

Xbox Live

WebView• Корректная работа с XAML UI• Поддержка Opacity и RenderTransform• Поддержка механизмов навигации (Back, Forward,…)• NavigateToLocalStreamUri• Поддержка загрузки контента из локальной директории• Поддержка внешнего resolver

• И многое другое

ДемонстрацияWebView

DatePicker и TimePicker• Рассуждения об индусах• Немного о контролах:• Поддерживаются два разных элемента управления DatePicker и

TimePicker • Различные форматы• Поддерживается объект типа Calendar• Форматирование осуществляется с помощью DateTimeFormatter

ДемонстрацияDatePicker и TimePicker

RichTextBlock<RichTextBlock Width="200" Style="{StaticResource BasicRichTextStyle}"> <Paragraph>Hyperlinks let you give readers a visual hint that certain text links to other content. <Hyperlink NavigateUri="http://dev.windows.com">Read more on the Windows Dev Center</Hyperlink> ... Text in a Hyperlink element is treated like the rest of the text and participates in line breaking. </Paragraph></RichTextBlock>

ДемонстрацияRichTextBlock

Дерево в XAML в изображениеvar renderTargetBitmap = new RenderTargetBitmap();await renderTargetBitmap.Render(myElementTree);var pixels = await renderTargetBitmap.GetPixelsAsync();

var picker = new FileSavePicker();// Picker setupvar file = await picker.PickSaveFileAsync();// File validation

using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite){ var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.BmpEncoderId, stream); encoder.SetPixelData(BitmapPixelFormat.Rgba8, 100, 0, 96, 96, await renderTargetBitmap.GetPixelsAsync()); await encoder.FlushAsync();}

Flyout• SettingsFlyout – элемент для ленивых• Flyout• Всплывающее окошко, которое связано с

одним из элементов интерфейса

• MenuFlyout• Обычный пункт• Сепаратор• Переключатель

• Зачем оно нужно?

ДемонстрацияSetting Flyout

Hub• Создание главного хаба приложения в соответствии с дизайном• Поддержка семантического зума• Последовательное размещение элементов с помощью HubSection

ДемонстрацияHub

AppBar• Поддержка свойств Label и Icon• Иконки могут быть одного из типов: Font, Bitmap, Path, Symbol

• Поддержка компактного размера• AppBarButton можно использовать вне AppBar• Поддержка кнопок, переключателей и разделителей• Интеграция с элементом управления CommandBar

Другие изменения в элементах управления• Заголовки для ComboBox, TextBox, PasswordBox и др.• PlaceholderText для текстовых элементов управления• Поддержка RequestTheme на уровне элемента• Событие на вставку текста из буфера• И многое другое

Новые режимы отображения• 500 пикселей – новая минимальная ширина приложения• 320 пикселей – старая ширина, но может поддерживаться• Может быть несколько окон, открытых из одного приложения• Более чем два приложения на экране• Работает ли оно?

Поддержка устройств• HID• PoS• Bluetooth• USB• 3D Printers

Новые типы тайлов• 70 на 70• 310 на 310

Синтез голоса// The media object for controlling and playing audio.MediaElement mediaElement = this.media;

// The object for controlling the speech-synthesis engine (voice).var synth = new Windows.Media.SpeechSynthesis.SpeechSynthesizer();

// Generate the audio stream from plain text.SpeechSynthesisStream stream = await synth.SynthesizeTextToStreamAsync("Hello World");

// Send the stream to the media object.mediaElement.SetSource(stream, stream.ContentType);mediaElement.Play();

DirectX• Динамические шейдера:• Unity• Marmalade• Ogre• И др.

Windows Game Developer Features• Windows 8• Direct3D 11.1• XAudio2• PointerPoint• MouseLook• XInput• C++

• Windows 8.1• Direct3D11.2• Tiled Resources• Scalers & Overlays• HLSL Shader linker• 8-25GB packages• Multi-mon• Wi-Fi Direct

И многое другое• Поддержка PDF• Wi-Fi Direct• Smart Card security• …

Вопросы?

Разработка игр для Windows 8

Сергей БайдачныйSergiy.Baydachnyy@Microsoft.com

Communication and data

Devices and printing

WinRT APIsDirectX

graphics and media

Desktop apps

CC++

Win32

C#VB

.NET Silverlight

HTMLJavaScript

Internet Explorer

Windows Store apps

Application model

JavaScriptCC++

Windows kernel services

Syst

em se

rvic

esVi

ewM

odel

co

ntro

ller

Kern

elXAML

C#VB

HTML/CSS

Где тут

DirectX?

2D graphics 3D graphics

Segoe UIFonts, text analysis, layout Image & video decoding

HTML5, CSS3 & Direct2D Direct3D

Segoe UIHTML5, CSS3 & DirectWrite HTML5, Direct2D effects,

WIC & Media Foundation

DirectCompute & C++AMP

Архитектура графической подсистемы в Windows 8

DXGI

VideoDirect3DDirectCompute

Direct2DC++ AMP Media Foundation

HTML, CSS, and XAML graphics

Graphics Processing Unit (GPU)

Немного о DirectX

Версии DirectX• Windows XP DirectX 9 hardware DirectX 9 API• Windows Vista DirectX 10 hardware DirectX 10 API• Windows 7 DirectX 11 hardware DirectX 11 API

Feature levels• DirectX11 API предлагает унифицированный механизм разработки

приложений• Feature levels по отношению к оборудованию

• Feature level 9 DirectX 9 hardware (ARM/power efficient machines)• Feature level 10 DirectX 10 hardware (many laptops)• Feature level 11 DirectX 11 hardware (high end gaming machines)

DirectX 11.1• DirectX11.1 это DirectX 11 для Windows 8• Интеграция в стек технологий платформы

C++

C++ Component Extensions (C++/CX)Key Bindings Feature Summary

1. Data Types ref class Reference type

value class Value type

interface class Interface

property Property with get/set

event “Delegate property” with add/remove/raise

delegate Type-safe function pointer

generic Type-safe generics

2. Allocation gcnew Garbage-collected allocation

ref new Reference-counted allocation

3. Pointer & Reference

^ Strong pointer (“hat” or “handle”)

% Strong reference

Поговорим о фреймворках

Open Source Technologies

ANGLE

Box2D

• Physics of objects in a 2-D plane• Ballistics, collisions, rotation, friction, joints,

constraints, motors, ray-queries, etc. of• Circles, rects, polygons, chains, ropes, etc.

•Used in:• Angry Birds, Tiny Wings, Cut The Rope, Crayon Physics

Deluxe, Limbo, Rolando, Fantastic Contraption, Incredibots, Transformice, Happy Wheels, Cocos2D, etc.

Box2D

• Physics of 3D objects• Ballistics, collisions, rotation, friction, joints,

constraints, motors, ray-queries, etc.

•Used in: Hydro Thunder: Hurricane, Trials HD

•Has had GPU-accelerated fabric simulation using DirectCompute for years

Bullet Physics

•Open source OpenGL ES2 API wrapper• Enables easy transition from iOS or Android•Used by many popular products•Originally built on Direct3D9, •Now updated to Direct3D11 for Windows Store•Runtime shader compiles work in Windows 8.1• http://code.google.com/p/angleproject

ANGLE – Almost Native GL Engine

• Popular engine for sprite games on phones• 1000s of games already shipped

•Runs on Windows 8 phone, Windows RT, Windows 8, etc.

• http://www.cocos2d-x.org

Cocos2D-x

• Full 3D rendering engine•Rich shader capabilities for photorealism• Includes native Direct3D module since starting

•Used in: Ankh by Deck13, and Torchlight by Runic, etc.

•Runs on Windows Phone and Windows 8

OGRE - OO Graphics Rendering Engine

• SharpDX• Efficient C# bindings to DirectX APIs• Low-level Direct3D access for best C# performance• Includes basic input, audio, file loading, etc.

Using C#?

•MonoGame• OSS implementation of the full XNA 4.0 API spec• which Microsoft contributed to the community• Used in Armed, Skulls of the Shogun, Galactic Reign

• http://channel9.msdn.com/posts/From-XNA-game-to-Windows-8

Using C#?

Коммерческие решения

Commercial Middleware

•Authentication & Identity• Friends List• Player Stats, Leaderboards, Achievements•Matchmaking -Real-time and Asynchronous• Synchronous (real-time) Multiplayer• Supports Windows Phone too• http://hydra.agoragames.com/windows

Agora Hydra

• Popular physics library•Now includes Vision 3D rendering engine,

destruction, AI, and cloth modules

• Supports the whole Microsoft ecosystem

•Havok for Windows 8 and Windows Phone 8

Havok

• Commercial implementation of OpenGL ES on Direct3D

• Includes a full native C++ game API set

•Runs on Windows Phone too

• https://www.madewithmarmalade.com/windows8

Marmalade

• Full IDE for game creation•Asset marketplace

• http://gamesalad.com/creator/windows-8

Game Salad

Вопросы?

Новые возможности С++

Сергей БайдачныйSergiy.Baydachnyy@Microsoft.com

С++ настолько сложный для изучения, что мы расширили его

дополнительными командами

You arehere

http://isocpp.org

98 99 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18

C++98(major)

Library TR1 (aka TS) Performance TR

C++03(TC, bug fixes only)

C++11(major)

C++17(major)

C++14(minor)

FileSysTSNetTS1Concepts

TS

14

C++ и Visual Studio 2013• Некоторые возможности С++ 11 (C++0x) уже были в Visual Studio

2010• Многие возможности С++ 11 были реализованы в Visual Studio

2012• В Visual Studio 2013 продолжена работа над реализацией С++ 11 и

некоторых возможностей С++ 14• С++ 14 дополняет и завершает С++ 11

Перейдем к возможностям C++

Инициализация: раньше• Инициализация массива возможна с помощью {}• Но инициализация других типов отличается между собой• int i=0;• int k(2);• Person p;• Person p();• Person p(“Sergey”, “Baydachnyy”);

Инициализация: сейчас• int i{2};• Person p{};• Person p{“Sergiy”,”Baydachnyy”};• std::vector<int> v{1,2,3,4};

ДемонстрацияИнициализация

Конструкторы• Компилятор способен генерировать конструкторы «по

умолчанию»• Default, Copy, Move• Как только Вы пишите хотя бы один конструктор, то теряете все «по

умолчанию»

• Невозможность вызова одного конструктора из другого приводит к дублированию кода• С++ 11 позволяет вызывать один конструктор из другого

=default• Возвращает авто сгенерированный конструктор по умолчаниюclass Person

{

public:

Person()=default;

Person(char* firstname, char* lastname);

~Person();

};

=delete• Применимо к методам и конструкторам• Позволяет запретить перегрузку метода

class type {public: type( const type& ) = delete; type& operator=( const type& ) = delete; type() = default; // restore suppressed default constructor};void bar( long long ); // accept long long…void bar( long ) = delete; // … but nothing elseclass custom_regex_iterator {// stores a pointer to its regexpublic: // … custom_regex_iterator( const regex& ); // lvalues only please custom_regex_iterator( const regex&& ) = delete; // no rvalues need apply};

ДемонстрацияКонструкторы

usingC++98 кодtemplate<class T> struct Vec { typedef vector<T, MyAlloc<T>> type; };Vec<int>::type v; // sample usagetemplate<class T> void f( typename Vec<T>::type& ); // non-deduciblef<int>( v );

C++11 codetemplate<class T> using Vec = vector<T, MyAlloc<T>>;Vec<int> v; // sample usagetemplate<class T> void f( Vec<T>& ); // deduciblef( v );

Draft C++14 Алиасы для стандартных типов• remove_reference_t<T> vs. typename remove_reference<T>::type• make_unsigned_t<T> vs. typename make_unsigned<T>::type

Демонстрацияusing

Умные указатели• Что такое delete?• std::shared_ptr• std::unique_ptr• Использовать заголовочный файл memory

• C++ 11 представляет make_shared• C++ 14 представляет make_unique• Ключевое слово auto еще больше упрощает процесс создания

умных указателей• Помним о nullptr

ДемонстрацияУмные указатели

Строковые литералы• В С++ два вида строк: std::string, char *• Любые спецсимволы нужно задавать с помощью обратной косой

черты (\”, \\, \n, \r,…)• С++ 11 позволяет упростить запись строковых литералов• R”(все, что \Вы “ хотите )”• Сохраняются все разделители в строке (включая переход на другую

строку)• В случае, если строка содержит круглые скобки, то можно использовать

свой разделитель• Имеет смысл только для )”• R”MyS(…………….)MyS”

ДемонстрацияСтроковые литералы

Изменения в шаблонных функциях• Параметры по умолчанию могли присутствовать в шаблонных

классах• В шаблонных функциях параметров по умолчанию не было• С++ 11 позволяет писать что-то подобное• template <typename T, int n=1> T& increment (T& val)

ДемонстрацияПараметры шаблонных функций

Явное приведение типов• Ключевое слово explicit доступно:• При создании конструкторов• При создании функций приведения типов

• Явное приведение типов можно выполнить с помощью static_cast<>

ДемонстрацияЯвное преобразование

Variadic templates• Рассмотрим make_shared• auto p = make_shared<Person>(“Sergiy”,”Baydachnyy”);

• Количество параметров не определено заранее• Типы могут быть совершенно разные• Примером может служит std::tuple

Variadic template• Создание классаtemplate <class… Ts> class MyClass{ //class declaration};

• Создание функцииtemplate <class… Ts> void f(Ts… vals){//method definition }

Вопросы?

top related