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

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

Upload: cosmo

Post on 25-Feb-2016

72 views

Category:

Documents


0 download

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

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

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

Page 2: Дни разработчика 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 Новые возможности С++

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

Наша команда

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

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

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

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

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

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

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

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

BizSpark

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

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

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

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

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

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

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

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

http://www.microsoft.ua/nebotan

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

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

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

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

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

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

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

[email protected]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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>

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

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

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

Дерево в 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();}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Синтез голоса// 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();

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

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

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

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

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

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

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

Вопросы?

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

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

Сергей Байдачный[email protected]

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

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?

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

2D graphics 3D graphics

Segoe UIFonts, text analysis, layout Image & video decoding

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

HTML5, CSS3 & Direct2D Direct3D

Segoe UIHTML5, CSS3 & DirectWrite HTML5, Direct2D effects,

WIC & Media Foundation

DirectCompute & C++AMP

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

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

DXGI

VideoDirect3DDirectCompute

Direct2DC++ AMP Media Foundation

HTML, CSS, and XAML graphics

Graphics Processing Unit (GPU)

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

Немного о DirectX

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

Версии 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

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

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)

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

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

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

C++

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

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

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

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

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

Open Source Technologies

ANGLE

Box2D

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

• 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

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

• 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

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

•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

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

• 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

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

• 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

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

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

Using C#?

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

•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#?

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

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

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

Commercial Middleware

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

•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

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

• 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

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

• 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

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

• Full IDE for game creation•Asset marketplace

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

Game Salad

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

Вопросы?

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

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

Сергей Байдачный[email protected]

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

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

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

Page 66: Дни разработчика 2013
Page 67: Дни разработчика 2013
Page 68: Дни разработчика 2013

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

умолчанию»

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

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

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

{

public:

Person()=default;

Person(char* firstname, char* lastname);

~Person();

};

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

=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};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вопросы?