Quantcast
Channel: TechNet Technology News
Viewing all 13502 articles
Browse latest View live

Work Folders does not work on iOS 10 when using Digest authentication

$
0
0

Hi all,

I’m Jeff Patterson, Program Manager for Work Folders.

I wanted to let you know that Digest authentication does not work on iOS 10. Please review the issue details below if you’re currently using the Work Folders iOS client in your environment.

Symptom

After upgrading to iOS 10, Work Folders fails with the following error after user credentials are provided:

Check your user name and password

Cause

There’s a bug in iOS 10 which causes Digest authentication to fail.

Status

We’re working with Apple to resolve the issue.

Workarounds
  • Do not install iOS 10. If iOS 10 is already installed, roll back to iOS 9.
  • Use Active Directory Federation Services (ADFS) authentication.
    • Note: If ADFS is not configured in your environment, you’re using Digest authentication.

I will provide an update once this issue is resolved.

Thanks,

Jeff


The Office Small Business Academy October webcast—“How to Keep Your Business Safe from Cyber Attacks”

$
0
0

the-office-small-business-academy-october

For any entrepreneur, cybersecurity is a necessary part of doing business these days. But with an increase in phishing attacks, data breaches and ransomware, how secure is your business?

Join us for the next episode of Office Small Business Academy, “How to Keep Your Business Safe from Cyber Attacks,” airing October 25, 2016, at 9 a.m. PT / 12 p.m. ET. In this episode, learn the cybersecurity must-haves for your small business.

Watch this preview:

  • Senior fellow at the NYU Center for Cybersecurity and founder of Germano Law LLC, Judith Germano, establishes the criteria to determine your business’s risk and vulnerabilities and discusses how to minimize the reputational damage from a cyber-attack.
  • Founder and CEO of Kalki Consulting, Vikas Bhatia, provides an easy-to-implement cybersecurity plan and shares the one mistake small business owners need to avoid when it comes to security.

Plus, see a demonstration of Office 365 security features and how they can enhance small business security, limit risk and help defend against cyber-attacks.

Sign up for free!

For more information, visit the Office Small Business Academy home page.

Related content

The post The Office Small Business Academy October webcast—“How to Keep Your Business Safe from Cyber Attacks” appeared first on Office Blogs.

Shorter Solution Load Time in Visual Studio “15”

$
0
0

This is the 2nd post in a five-part series covering performance improvements for Visual Studio “15”.

Yesterday Selma shared some of the ways we have made Visual Studio “15” startup quicker than ever. Today, I will talk about a new feature in Visual Studio “15” called lightweight Solution load. This feature significantly reduces Solution load time so you can be more productive, faster in the IDE.

Lightweight Solution Load

At a high level, when lightweight Solution load is enabled, Visual Studio will not fully load projects until you start working with them. Many common tasks, such as navigating through your codebase, editing code, and building your projects will not require any projects to be loaded at all.

We released lightweight Solution load in a limited capacity in Visual Studio “15” Preview 4, to gain some real world insight about how it works with your projects. So far, these performance improvements have been promising:

In our limited roll out of this feature, we have seen Solution load time cut as much as two to four times.

The end goal of this feature is all about allowing you to get productive in the IDE as quickly as possible. Developers using lightweight Solution load were able to begin navigating through and building their code one to two minutes faster. We expect similar results in Preview 5 with the broader release of the feature.

Try it Out

Lightweight Solution load is not enabled by default in Preview 5, but we would like to encourage any developers with medium to large, managed Solutions to try the feature out and give feedback. To turn on lightweight Solution load, navigate to Tools->Options, Projects and Solutions->General and check the “Lightweight Solution load” setting at the bottom of the page:

Once lightweight Solution load is enabled, you can open and work with your projects and Solutions as usual. The setting will take effect the next time you load a Solution; restarting the IDE is not necessary.

Lightweight Solution load focuses on managed projects in Preview 5. If you work with medium to large C# or VB Solutions, we strongly encourage you to try out this feature. You can open mixed Solutions with C++ or other project types too – but keep in mind, not all of the performance enhancements are available yet for other types of projects (more details below*).

Once lightweight Solution is turned on, you can more or less go about your business as usual – just a little faster. A few things in particular to try out:

  • Navigate across your codebase with Navigate To (Ctrl+,), Go to Definition (F12), Find in Files, or Find all References.
  • Refactor or inline rename.
  • Build or debug your Solution.

You may notice that some operations take a brief moment to load project data in the background:

Keep in mind, lightweight Solution load is still experimental, so there are still a few rough edges:

  • If a feature related to a project seems to be missing from the IDE, try expanding that project in the Solution Explorer. Please let us know if anything doesn’t seem to be working as expected.
  • NuGet package restore isn’t yet integrated with lightweight Solution load. We recommend restoring packages before turning on the feature or using the command line.
  • The Test Explorer will not see tests unless a project is fully loaded.
  • If you need to retarget or upgrade all projects in a Solution, disable Lightweight Solution load for best results.

*Even though the focus of lightweight Solution load is managed projects in Preview 5, don’t worry if you are a C++ developer. There are plenty of performance improvements coming your way in Preview 5 as well – check out part four of this series on Thursday for more details. These improvements will be integrated into lightweight Solution load in a future release.

Send Us Feedback!

We would love to hear feedback about your experiences using lightweight Solution load. If you run into any issues you can use the “Report a Problem” tool in the upper right hand corner of the IDE to let us know. For performance issues, such as the IDE loading slowly or becoming non-responsive, please report issues to us using the Report-a-problem tool. This guide links to a tool that will automatically collect the traces and other assets we need to diagnose performance issues.

If you work with large codebases and are interested in sharing feedback with us about your experiences, please consider filling out this brief survey with your contact information and a few details about the type of development you do. Your feedback helps us deliver the best development experience possible.

Will Buik– Program Manager, Visual Studio IDE Project and Build

Will is a long time user of Visual Studio. Since his foray into programing with Visual Basic 4, he has loved programming, software development, and hardware hacking.  He loves working on the development tools that he has leveraged for many years.

The Microsoft security update for October 2016 has been released

$
0
0

The October 2016 Microsoft security updates have been released to provide additional protections against malicious attackers. As a best practice, Microsoft encourages all customers to apply security updates as soon as they are released. More information about this month’s security updates and advisories can be found in the Security TechNet Library.

J.C. Hornbeck, Solution Asset PM
Microsoft Enterprise Cloud Group

C++14/17 Features and STL Fixes in VS “15” Preview 5

$
0
0

Visual Studio “15” Preview 5 is now available.  (As our previous changelog explained, VS “15” is an IDE version number, not a year.  It’s the next major version after VS 2015, which was IDE version 14.  VS has different numbers for its year branding, IDE version, and C++ compiler version.)

 

Preview 5 adds support for C++14 extended constexpr, unconditional support for generalized range-for (it’s a C++17 change that’s been determined to fix a defect in C++14), and support for C++17’s terse static_assert, shared_ptr::weak_type, , and .  As usual, we’ve fixed many compiler bugs and library bugs, and we’ve resolved 10 more Library Issues.

 

Additionally, the VS “15” Release Candidate will add support for C++17’s , , apply(), and make_from_tuple().  It will also contain a major overhaul of std::vector for correctness and performance.  While we’re still working on releasing VS “15” RC, you can try our daily toolset builds right now.  Please report any bugs you find, in either Preview 5 or the daily toolset builds.

 

Compiler Features

 

C++03/11 Core Language Features

VS “15”

Notes

[Everything else]

Yes

[A]

Two-phase name lookup

No

 

Expression SFINAE

Partial

[B]

C99 preprocessor

Partial

[C]

Extended integer types

N/A

[D]

C++14 Core Language Features

VS “15”

Notes

Avoiding/fusing allocations

N/A

[E]

Tweaked wording for contextual conversions

Yes

 

Binary literals

Yes

 

auto and decltype(auto) return types

Yes

 

init-captures

Yes

 

Generic lambdas

Yes

 

Variable templates

Yes

 

Extended constexpr

Yes

[P5]

NSDMIs for aggregates

Yes

[P4]

[[deprecated]] attribute

Yes

 

Sized deallocation

Yes

 

Digit separators

Yes

 

C++17 Core Language Features

VS “15”

Notes

New rules for auto with braced-init-lists

Yes

 

Terse static_assert

Yes

[P5] [*]

typename in template template-parameters

Yes

 

Removing trigraphs

Yes

 

Nested namespace definitions

Yes

[*]

Fixing qualification conversions

No

 

Attributes for namespaces and enumerators

Yes

 

u8 character literals

Yes

 

Allowing more non-type template args

No

 

Fold expressions

No

 

Removing some empty unary folds

No

 

Removing the register keyword

No

 

Removing operator++ for bool

No

 

Adding noexcept to the type system

No

 

Extended aggregate initialization

No

 

Capturing *this by value

No

 

__has_include

No

 

Rewording inheriting constructors

No

 

Direct-list-init of fixed enums from integers

No

 

constexpr lambdas

No

 

Generalized range-based for-loops

Yes

[P5]

[[fallthrough]] attribute

Yes

[P4] [*]

[[nodiscard]] attribute

No

 

[[maybe_unused]] attribute

No

 

Hexfloat literals

No

 

Using attribute namespaces without repetition

No

 

Over-aligned dynamic memory allocation

No

 

Template argument deduction for class templates

No

 

Declaring non-type template parameters with auto

No

 

Guaranteed copy elision

No

 

Replacement of class objects containing reference members

No

 

Refining expression evaluation order

No

 

Structured bindings

No

 

Ignoring unrecognized attributes

No

 

constexpr if-statements

No

 

Selection statements with initializers

No

 

Inline variables

No

 

Explicit default constructors and copy-list-initialization

No

 

 

[A] This is deliberately ignoring C++03’s dynamic exception specifications, which were deprecated in C++11.  We aren’t planning to implement them, and hopefully they’ll be removed from a future C++ Standard.

 

[B] The compiler’s support for Expression SFINAE is continuing to improve (and has been sufficient for the STL since VS 2015 Update 2), but remains Partial.  We’ll publish a detailed blog post about this in the near future.

 

[C] The compiler’s support for C99 Preprocessor rules remains Partial.  Variadic macros are supported, but there are many bugs in the preprocessor’s behavior.  We’ll overhaul the preprocessor before marking this as Yes.

 

[D] This is marked as Not Applicable because compilers are permitted, but not required, to support extended integer types.  Like GCC and Clang, we’ve chosen not to support them.

 

[E] Similarly, this is marked as Not Applicable because compilers are permitted, but not required, to implement this optimization.

 

[P4] Implemented in VS “15” Preview 4.

 

[P5] Implemented in VS “15” Preview 5.

 

[*] These features are guarded by the /std:c++latest compiler option.

 

STL Features

 

Status

Std

Paper

Title

missing

C++17

P0258R2

has_unique_object_representations

missing

C++17

P0063R3

C11 Standard Library

missing

C++17

P0030R1

hypot(x, y, z)

missing

C++17

P0033R1

Rewording enable_shared_from_this

C++17

P0220R1

Library Fundamentals V1

missing

C++17

shared_ptr, shared_ptr

missing

C++17

P0084R2

Emplace Return Type

missing

C++17

P0083R3

Splicing Maps And Sets

missing

C++17

P0031R0

constexpr For (Again) And

missing

C++17

P0152R1

atomic::is_always_lock_free

missing

C++17

P0005R4

not_fn()

patch

C++17

P0358R1

Fixes For not_fn()

missing

C++17

P0295R0

gcd(), lcm()

missing

C++17

P0154R1

hardware_destructive_interference_size, etc.

missing

C++17

P0067R3

Elementary String Conversions

missing

C++17

/ Boyer-Moore search()

patch

C++17

P0253R1

Fixing Searcher Return Types

missing

C++17

P0174R2

Deprecating Vestigial Library Parts

missing

C++17

P0302R1

Removing Allocator Support In std::function

missing

C++17

P0040R3

Extending Memory Management Tools

missing

C++17

patch

C++17

P0337R0

Deleting polymorphic_allocator Assignment

missing

C++17

P0024R2

Parallel Algorithms

patch

C++17

P0336R1

Renaming Parallel Execution Policies

patch

C++17

P0394R4

Parallel Algorithms Should terminate() For Exceptions

missing

C++17

P0226R1

Mathematical Special Functions

missing

C++17

P0218R1

patch

C++17

P0219R1

Relative Paths For Filesystem

patch

C++17

P0392R0

Supporting string_view In Filesystem Paths

doomed

C++17

P0181R1

Ordered By Default

RC

C++17

RC

C++17

RC

C++17

apply()

RC

C++17

P0209R2

make_from_tuple()

RC

C++17

P0254R2

Integrating string_view And std::string

Preview 5

C++17

Preview 5

C++17

P0032R3

Homogeneous Interface For variant/any/optional

Preview 5

C++17

P0088R3

Preview 5

C++17

P0163R0

shared_ptr::weak_type

Preview 5

C++17

P0307R2

Making Optional Greater Equal Again

Preview 5

C++17

P0393R3

Making Variant Greater Equal

Preview 4

C++17

sample()

Preview 4

C++17

P0077R2

is_callable, is_nothrow_callable

Update 3

C++17

P0025R1

clamp()

Update 3

C++17

P0185R1

is_swappable, is_nothrow_swappable

Update 3

C++17

P0272R1

Non-const basic_string::data()

Update 2

C++14

N3462

SFINAE-Friendly result_of

Update 2

C++17

N4387

Improving pair And tuple

Up2 Win7+

C++17

N4508

shared_mutex (Untimed)

Up2 opt-in

C++17

P0004R1

Removing Deprecated Iostreams Aliases

Update 2

C++17

P0006R0

Variable Templates For Type Traits (is_same_v, etc.)

Update 2

C++17

P0007R1

as_const()

Update 2

C++17

P0013R1

Logical Operator Type Traits (conjunction, etc.)

Update 2

C++17

P0074R0

owner_less<>

Update 2

C++17

P0092R1

floor(), ceil(), round(), abs()

Update 2

C++17

P0156R0

Variadic lock_guard

VS 2015

C++14

N3302

constexpr For

VS 2015

C++14

N3469

constexpr For

VS 2015

C++14

N3470

constexpr For

VS 2015

C++14

N3471

constexpr For , ,

VS 2015

C++14

N3545

integral_constant::operator()()

VS 2015

C++14

N3642

UDLs For , (1729ms, “meow”s, etc.)

VS 2015

C++14

N3644

Null Forward Iterators

VS 2015

C++14

N3654

quoted()

VS 2015

C++14

N3657

Heterogeneous Associative Lookup

VS 2015

C++14

N3658

integer_sequence

VS 2015

C++14

N3659

shared_mutex (Timed)

VS 2015

C++14

N3668

exchange()

VS 2015

C++14

N3669

Fixing constexpr Member Functions Without const

VS 2015

C++14

N3670

get()

VS 2015

C++14

N3671

Dual-Range equal(), is_permutation(), mismatch()

VS 2015

C++14

N3778

Sized Deallocation

VS 2015

C++14

N3779

UDLs For (3.14i, etc.)

VS 2015

C++14

N3789

constexpr For

VS 2015

C++14

N3887

tuple_element_t

VS 2015

C++14

N3891

Renaming shared_mutex (Timed) To shared_timed_mutex

VS 2015

C++17

N3911

void_t

VS 2015

C++17

N4089

Safe Conversions In unique_ptr

VS 2015

C++17

N4169

invoke()

2015 opt-in

C++17

N4190

Removing auto_ptr, random_shuffle(), And Old Stuff

VS 2015

C++17

N4258

noexcept Cleanups

VS 2015

C++17

N4259

uncaught_exceptions()

VS 2015

C++17

N4277

Trivially Copyable reference_wrapper

VS 2015

C++17

N4279

insert_or_assign()/try_emplace() For map/unordered_map

VS 2015

C++17

N4280

size(), empty(), data()

VS 2015

C++17

N4366

Precisely Constraining unique_ptr Assignment

VS 2015

C++17

N4389

bool_constant

VS 2013

C++14

N3346

Minimal Container Element Requirements

VS 2013

C++14

N3421

Transparent Operator Functors (less<>, etc.)

VS 2013

C++14

N3655

Alias Templates For (decay_t, etc.)

VS 2013

C++14

N3656

make_unique()

VS 2013

C++17

N4510

Supporting Incomplete Types In vector/list/forward_list

N/A

C++14

N3924

Discouraging rand()

N/A

C++17

N4284

Contiguous Iterators

N/A

C++17

P0175R1

Synopses For The C Library

N/A

C++17

P0180R2

Reserving Namespaces For Future Standardization

N/A

C++17

P0346R1

A Nomenclature Tweak

N/A

C++17

P0371R1

Discouraging memory_order_consume

 

This table is somewhat complicated; we use it to track our work, so it has to be detailed enough to tell us what to do.

 

“…” indicates where the Library Fundamentals V1 paper has been decomposed into its individual features.

 

“missing” means not yet implemented.  We’re working on it!  We were fully caught up in January, but then more features got voted in.

 

“patch” indicates where a feature was voted in, and then a paper fixing that feature somehow was also voted in.  We’ll implement them together, so they don’t really represent any additional work for us to do.  (Each patch is grouped below its affected feature.)

 

“doomed” indicates that the Ordered By Default feature has been found to break ABI compatibility (in other compilers), will not be implemented by any vendor, and will be removed from C++17.

 

“N/A” papers aren’t actually features – they altered Standardese, but didn’t create any work for implementers.  They’re listed for completeness.

 

“VS 2013” indicates features that were supported long, long ago, in a compiler far, far away.

 

“VS 2015” indicates features that were supported in VS 2015 RTM.

 

“Update 2” and “Update 3” refer to VS 2015.

 

“Preview 4” and “Preview 5” refer to VS “15”.

 

“RC” indicates features that have been checked into VS “15”, but not in time for the Preview 5 build.  They’ll be available in the Release Candidate build.

 

Note that while we’ve implemented the Filesystem TS (and for historical reasons we’re providing it as both and ), we need to overhaul its implementation before moving around its namespace and marking the Standard feature as implemented.

 

STL Fixes in VS “15” Preview 5

 

Fixed silent bad codegen for stateful user-defined allocators requesting propagate_on_container_copy_assignment and propagate_on_container_move_assignment.

 

Added .

 

Improved weak_ptr::lock() performance.

 

Fixed std::promise’s move assignment operator, which previously could cause code to block forever (VSO#243880/Connect#2972781).

 

Fixed compiler errors with atomic’s implicit conversion to T * (VSO#257598).

 

pointer_traits now correctly detects Ptr::rebind.

 

Fixed a missing const qualifier in move_iterator’s subtraction operator.

 

atomic now tolerates overloaded operator&() (VSO#198738).

 

Slightly improved compiler diagnostics for incorrect bind() calls (VSO#246001, reddit)

 

Simplified unique_ptr::operator->() (VSO#239517/Connect#2918170).

 

Changed the container adaptors to have implicitly defined copy/move constructors (VSO#234651).

 

To increase compiler throughput, STL headers now avoid including declarations for unnecessary compiler intrinsics (VSO#221287, requested by Clang and Chromium devs).  This is inherently a source breaking change.  If your code was assuming that or other STL headers drag in , the mega-header providing declarations of compiler intrinsics, this assumption has been broken.  Now we include a sub-header with just the intrinsics that we need to make shared_ptr and atomic work.  If you encounter compiler errors, the fix is simple: include directly.

 

Library Issues

 

Status

Std

Issue

Title

missing

C++17

LWG 1169

num_get not fully compatible with strto*

missing

C++17

LWG 2059

C++0x ambiguity problem with map::erase

missing

C++17

LWG 2156

Unordered containers’ reserve(n) reserves for n-1 elements

missing

C++17

LWG 2408

SFINAE-friendly common_type / iterator_traits is missing in C++14

missing

C++17

LWG 2415

Inconsistency between unique_ptr and shared_ptr

missing

C++17

LWG 2422

std::numeric_limits::is_modulo description: “most machines” errata

missing

C++17

LWG 2436

Comparators for associative containers should always be CopyConstructible

missing

C++17

LWG 2724

The protected virtual member functions of memory_resource should be private

filesystem

C++17

LWG 2667

path::root_directory() description is confusing

filesystem

C++17

LWG 2669

recursive_directory_iterator effects refers to non-existent functions

filesystem

C++17

LWG 2670

system_complete refers to undefined variable ‘base’

filesystem

C++17

LWG 2671

Errors in Copy

filesystem

C++17

LWG 2673

status() effects cannot be implemented as specified

filesystem

C++17

LWG 2674

Bidirectional iterator requirement on path::iterator is very expensive

filesystem

C++17

LWG 2683

filesystem::copy() says “no effects”

filesystem

C++17

LWG 2704

recursive_directory_iterator’s members should require ‘*this is dereferenceable’

filesystem

C++17

LWG 2706

Error reporting for recursive_directory_iterator::pop() is under-specified

filesystem

C++17

LWG 2707

path construction and assignment should have “string_type&&” overloads

filesystem

C++17

LWG 2711

path is convertible from approximately everything under the sun

filesystem

C++17

LWG 2720

permissions function incorrectly specified for symlinks

filesystem

C++17

LWG 2721

remove_all has incorrect post conditions

filesystem

C++17

LWG 2723

Do directory_iterator and recursive_directory_iterator become the end iterator upon error?

filesystem

C++17

LWG 2725

filesystem::exists(const path&, error_code&) error reporting

filesystem

C++17

LWG 2726

[recursive_]directory_iterator::increment(error_code&) is underspecified

filesystem

C++17

LWG 2728

status(p).permissions() and symlink_status(p).permissions() are not specified

parallel

C++17

LWG 2687

{inclusive,exclusive}_scan misspecified

parallel

C++17

LWG 2689

Parallel versions of std::copy and std::move shouldn’t be in order

parallel

C++17

LWG 2727

Parallel algorithms with constexpr specifier

WCFB02

C++14

LWG 2140

notify_all_at_thread_exit synchronization

WCFB02

C++17

LWG 2309

mutex::lock() should not throw device_or_resource_busy

RTM

New

LWG 2769

Redundant const in the return type of any_cast(const any&)

RC

C++14

LWG 2252

Strong guarantee on vector::push_back() still broken with C++11?

RC

New

LWG 2509

[fund.ts.v2] any_cast doesn’t work with rvalue reference targets and cannot move with a value target

RC

New

LWG 2744

any’s in_place constructors

RC

New

LWG 2746

Inconsistency between requirements for emplace between optional and variant

RC

New

LWG 2754

The in_place constructors and emplace functions added by P0032R3 don’t require CopyConstructible

Preview 5

C++14

LWG 2350

min, max, and minmax should be constexpr

Preview 5

C++17

LWG 2192

Validity and return type of std::abs(0u) is unclear

Preview 5

C++17

LWG 2276

Missing requirement on std::promise::set_exception

Preview 5

C++17

LWG 2328

Rvalue stream extraction should use perfect forwarding

Preview 5

C++17

LWG 2369

constexpr max(initializer_list) vs max_element

Preview 5

C++17

LWG 2485

get() should be overloaded for const tuple&&

Preview 5

C++17

LWG 2520

N4089 broke initializing unique_ptr from a nullptr

Preview 5

C++17

LWG 2719

permissions function should not be noexcept due to narrow contract

Preview 5

New

LWG 2713

More missing allocator-extended constructors for unordered containers

Preview 5

New

LWG 2756

C++ WP optional should ‘forward’ T’s implicit conversions

Preview 4

C++14

LWG 2135

Unclear requirement for exceptions thrown in condition_variable::wait()

Preview 4

C++14

LWG 2203

scoped_allocator_adaptor uses wrong argument types for piecewise construction

Preview 4

C++14

LWG 2210

Missing allocator-extended constructor for allocator-aware containers

Preview 4

C++17

LWG 2063

Contradictory requirements for string move assignment

Preview 4

C++17

LWG 2219

INVOKE-ing a pointer to member with a reference_wrapper as the object expression

Preview 4

C++17

LWG 2439

unique_copy() sometimes can’t fall back to reading its output

Preview 4

C++17

LWG 2476

scoped_allocator_adaptor is not assignable

Preview 4

C++17

LWG 2566

Requirements on the first template parameter of container adaptors

Preview 4

C++17

LWG 2576

istream_iterator and ostream_iterator should use std::addressof

Preview 4

C++17

LWG 2577

{shared,unique}_lock should use std::addressof

Preview 4

C++17

LWG 2579

Inconsistency wrt Allocators in basic_string assignment vs. basic_string::assign

Preview 4

C++17

LWG 2583

There is no way to supply an allocator for basic_string(str, pos)

Preview 4

C++17

LWG 2586

Wrong value category used in scoped_allocator_adaptor::construct()

Preview 4

C++17

LWG 2684

priority_queue lacking comparator typedef

Preview 4

C++17

LWG 2716

Specification of shuffle and sample disallows lvalue URNGs

Update 3

C++14

LWG 2064

More noexcept issues in basic_string

Update 3

C++17

LWG 2296

std::addressof should be constexpr

Update 3

C++17

LWG 2596

vector::data() should use addressof

Update 3

C++17

LWG 2688

clamp misses preconditions and has extraneous condition on result

Update 2

C++14

LWG 2005

unordered_map::insert(T&&) protection should apply to map too

Update 2

C++14

LWG 2021

Further incorrect usages of result_of

Update 2

C++14

LWG 2132

std::function ambiguity

Update 2

C++14

LWG 2196

Specification of is_*[copy/move]_[constructible/assignable] unclear for non-referencable types

Update 2

C++17

LWG 2101

Some transformation types can produce impossible types

Update 2

C++17

LWG 2106

move_iterator wrapping iterators returning prvalues

Update 2

C++17

LWG 2127

Move-construction with raw_storage_iterator

Update 2

C++17

LWG 2217

operator==(sub_match, string) slices on embedded ‘\0’s

Update 2

C++17

LWG 2312

tuple’s constructor constraints need to be phrased more precisely

Update 2

C++17

LWG 2353

std::next is over-constrained

Update 2

C++17

LWG 2354

Unnecessary copying when inserting into maps with braced-init syntax

Update 2

C++17

LWG 2367

pair and tuple are not correctly implemented for is_constructible with no args

Up2 opt-in

C++17

LWG 2385

function::assign allocator argument doesn’t make sense

Update 2

C++17

LWG 2393

std::function’s Callable definition is broken

Update 2

C++17

LWG 2455

Allocator default construction should be allowed to throw

Update 2

C++17

LWG 2466

allocator_traits::max_size() default behavior is incorrect

Update 2

C++17

LWG 2469

Wrong specification of Requires clause of operator[] for map and unordered_map

Update 2

C++17

LWG 2549

Tuple EXPLICIT constructor templates […] will create dangling references

VS 2015

C++14

GB 9

Remove gets from C++14

VS 2015

C++14

LWG 2009

Reporting out-of-bound values on numeric string conversions

VS 2015

C++14

LWG 2078

Throw specification of async() incomplete

VS 2015

C++14

LWG 2094

duration conversion overflow shouldn’t participate in overload resolution

VS 2015

C++14

LWG 2097

packaged_task constructors should be constrained

VS 2015

C++14

LWG 2103

std::allocator_traits>::propagate_on_container_move_assignment

VS 2015

C++14

LWG 2104

unique_lock move-assignment should not be noexcept

VS 2015

C++14

LWG 2112

User-defined classes that cannot be derived from

VS 2015

C++14

LWG 2144

Missing noexcept specification in type_index

VS 2015

C++14

LWG 2145

error_category default constructor

VS 2015

C++14

LWG 2162

allocator_traits::max_size missing noexcept

VS 2015

C++14

LWG 2174

wstring_convert::converted() should be noexcept

VS 2015

C++14

LWG 2176

Special members for wstring_convert and wbuffer_convert

VS 2015

C++14

LWG 2187

vector is missing emplace and emplace_back member functions

VS 2015

C++14

LWG 2193

Default constructors for standard library containers are explicit

VS 2015

C++14

LWG 2247

Type traits and std::nullptr_t

VS 2015

C++14

LWG 2268

Setting a default argument in the declaration of a member function assign of std::basic_string

VS 2015

C++14

LWG 2272

quoted should use char_traits::eq for character comparison

VS 2015

C++14

LWG 2275

Why is forward_as_tuple not constexpr?

VS 2015

C++14

LWG 2278

User-defined literals for Standard Library types

VS 2015

C++14

LWG 2280

begin / end for arrays should be constexpr and noexcept

VS 2015

C++14

LWG 2285

make_reverse_iterator

VS 2015

C++14

LWG 2301

Why is std::tie not constexpr?

VS 2015

C++14

LWG 2306

match_results::reference should be value_type&, not const value_type&

VS 2015

C++14

LWG 2315

weak_ptr should be movable

VS 2015

C++14

LWG 2324

Insert iterator constructors should use addressof()

VS 2015

C++14

LWG 2329

regex_match()/regex_search() with match_results should forbid temporary strings

VS 2015

C++14

LWG 2332

regex_iterator/regex_token_iterator should forbid temporary regexes

VS 2015

C++14

LWG 2339

Wording issue in nth_element

VS 2015

C++14

LWG 2344

quoted()’s interaction with padding is unclear

VS 2015

C++14

LWG 2346

integral_constant’s member functions should be marked noexcept

VS 2015

C++17

LWG 2129

User specializations of std::initializer_list

VS 2015

C++17

LWG 2133

Attitude to overloaded comma for iterators

VS 2015

C++17

LWG 2212

tuple_size for const pair request header

VS 2015

C++17

LWG 2234

assert() should allow usage in constant expressions

VS 2015

C++17

LWG 2365

Missing noexcept in shared_ptr::shared_ptr(nullptr_t)

VS 2015

C++17

LWG 2399

shared_ptr’s constructor from unique_ptr should be constrained

VS 2015

C++17

LWG 2400

shared_ptr’s get_deleter() should use addressof()

VS 2015

C++17

LWG 2401

std::function needs more noexcept

VS 2015

C++17

LWG 2403

stof() should call strtof() and wcstof()

VS 2015

C++17

LWG 2407

packaged_task(allocator_arg_t, const Allocator&, F&&) should neither be constrained nor explicit

VS 2015

C++17

LWG 2420

function does not discard the return value of the target object

VS 2015

C++17

LWG 2426

Issue about compare_exchange

VS 2015

C++17

LWG 2433

uninitialized_copy()/etc. should tolerate overloaded operator&

VS 2015

C++17

LWG 2440

seed_seq::size() should be noexcept

VS 2015

C++17

LWG 2442

call_once() shouldn’t DECAY_COPY()

VS 2015

C++17

LWG 2454

Add raw_storage_iterator::base() member

VS 2015

C++17

LWG 2458

N3778 and new library deallocation signatures

VS 2015

C++17

LWG 2464

try_emplace and insert_or_assign misspecified

VS 2015

C++17

LWG 2467

is_always_equal has slightly inconsistent default

VS 2015

C++17

LWG 2483

throw_with_nested() should use is_final

VS 2015

C++17

LWG 2484

rethrow_if_nested() is doubly unimplementable

VS 2015

C++17

LWG 2486

mem_fn() should be required to use perfect forwarding

VS 2015

C++17

LWG 2487

bind() should be const-overloaded, not cv-overloaded

VS 2015

C++17

LWG 2488

Placeholders should be allowed and encouraged to be constexpr

VS 2015

C++17

LWG 2489

mem_fn() should be noexcept

VS 2013

C++14

LWG 1214

Insufficient/inconsistent key immutability requirements for associative containers

VS 2013

C++14

LWG 2011

Unexpected output required of strings

VS 2013

C++14

LWG 2018

regex_traits::isctype Returns clause is wrong

VS 2013

C++14

LWG 2033

Preconditions of reserve, shrink_to_fit, and resize functions

VS 2013

C++14

LWG 2039

Issues with std::reverse and std::copy_if

VS 2013

C++14

LWG 2047

Incorrect “mixed” move-assignment semantics of unique_ptr

VS 2013

C++14

LWG 2049

is_destructible is underspecified

VS 2013

C++14

LWG 2050

Unordered associative containers do not use allocator_traits to define member types

VS 2013

C++14

LWG 2056

future_errc enums start with value 0 (invalid value for broken_promise)

VS 2013

C++14

LWG 2061

make_move_iterator and arrays

VS 2013

C++14

LWG 2067

packaged_task should have deleted copy c’tor with const parameter

VS 2013

C++14

LWG 2074

Off by one error in std::reverse_copy

VS 2013

C++14

LWG 2083

const-qualification on weak_ptr::owner_before

VS 2013

C++14

LWG 2087

iostream_category() and noexcept

VS 2013

C++14

LWG 2096

Incorrect constraints of future::get in regard to MoveAssignable

VS 2013

C++14

LWG 2128

Absence of global functions cbegin/cend

VS 2013

C++14

LWG 2138

atomic_flag::clear ordering constraints

VS 2013

C++14

LWG 2141

common_type trait produces reference types

VS 2013

C++14

LWG 2143

ios_base::xalloc should be thread-safe

VS 2013

C++14

LWG 2148

Hashing enums should be supported directly by std::hash

VS 2013

C++14

LWG 2188

Reverse iterator does not fully support targets that overload operator&

VS 2013

C++14

LWG 2197

Specification of is_[un]signed unclear for non-arithmetic types

VS 2013

C++14

LWG 2213

Return value of std::regex_replace

VS 2013

C++14

LWG 2229

Standard code conversion facets underspecified

VS 2013

C++14

LWG 2284

Inconsistency in allocator_traits::max_size

VS 2013

C++14

LWG 2293

Wrong facet used by num_put::do_put

VS 2013

C++14

LWG 2313

tuple_size should always derive from integral_constant

VS 2013

C++14

LWG 2317

The type property queries should be UnaryTypeTraits returning size_t

VS 2013

C++14

LWG 2330

regex(“meow”, regex::icase) is technically forbidden but should be permitted

VS 2013

C++14

LWG 2341

Inconsistency between basic_ostream::seekp(pos) and basic_ostream::seekp(off, dir)

VS 2013

C++14

LWG 2359

How does regex_constants::nosubs affect basic_regex::mark_count()?

VS 2013

C++14

LWG 2360

reverse_iterator::operator*() is unimplementable

VS 2013

C++17

LWG 2244

Issue on basic_istream::seekg

VS 2013

C++17

LWG 2273

regex_match ambiguity

VS 2013

C++17

LWG 2441

Exact-width atomic typedefs should be provided

VS 2013

C++17

LWG 2473

basic_filebuf’s relation to C FILE semantics

VS 2013

C++17

LWG 2537

Constructors for priority_queue taking allocators should call make_heap

VS 2013

C++17

LWG 2560

is_constructible underspecified when applied to a function type

 

This table is enormous, even after omitting 146 N/A issues.  The Library Working Group fixes a lot of bugs in the Standard.

 

“New” indicates issues which haven’t actually been resolved in C++17 yet.  We felt that these issues had to be dealt with before shipping the affected feature, and we expect that our implemented resolution will be accepted.

 

“RTM” indicates an issue which has been fixed for the official release of VS “15”, but not in time for the Release Candidate build.

 

“WCFB02” indicates issues that will be fixed in a future, binary-incompatible release of the STL (but not the STL shipping in VS “15”).

 

“filesystem” indicates issues affecting , which we’ll be analyzing when we overhaul that feature’s implementation.

 

“parallel” indicates issues affecting the Parallel Algorithms feature, which we haven’t yet implemented.

 

Note that we’ve implemented all C++14 STL features (result_of SFINAE in VS 2015 Update 2 was the last one) and all C++14 Library Issues.  Excluding LWG 2140 (which had to be fixed outside of VS “15” due to bincompat), the last Library Issue was LWG 2252, fixed by a major overhaul of std::vector in VS “15” RC.  We’ll publish more details about that in the near future.

 

Two issues here are notable.  LWG 2350 and LWG 2369, implemented in Preview 5, mean that we’ve enabled C++14 constexpr in min/max/minmax(initializer_list) and min_element/max_element/minmax_element().  However, while this is supported by our codegen compilers (C1XX and Clang), this is not yet supported by our Intellisense compiler (EDG).  We’re working on fixing this.

 

Billy Robert O’Neal III – @MalwareMinigunbion@microsoft.com

Casey Carter – @CoderCaseycacarter@microsoft.com

Stephan T. Lavavej – @StephanTLavavejstl@microsoft.com

.NET Framework Monthly Rollups Explained

$
0
0

We recently introduced the .NET Framework Monthly Rollup, a new and simplier way for you to install all applicable .NET Framework updates in a single step.

This post describes the three monthly update types that you can install. It shows you what the install process looks like and addresses some common questions that we have heard since introducing the new model.

The introduction of these new monthly releases aligns with a similar set of monthly Windows releases that you can also learn more about.

Monthly Releases

There are three kinds of updates that you can choose from. You can read the descriptions below to help you pick the best one for your situation.

Security and Quality Rollup

The Security and Quality Rollup is recommended for consumer and developer machines. It includes both security and quality improvements and is cumulative, meaning that it contains all of the updates from previous rollups. This makes it easy to catch up if you have missed any of the previous updates. The Security and Quality Rollup update will be made available on Windows Update and Windows Update Catalog.

  • When: Second Tuesday of the month (Patch Tuesday).
  • Where: Windows Update, Windows Server Update Services and Microsoft Update Catalog.
  • Cumulative: Yes.
  • Contents: Security and/or quality improvements.

Security-Only Update

The Security-Only Update is recommended for production machines. It contains only the security updates that are new for that month. This enables you to fine-tune the security updates that are applied. If you have installed the Security and Quality Rollup for the month, then you are up to date and do not need to install the Security-Only Update. The Security-Only Update will be made available on Windows Server Update Services and Microsoft Update Catalog.

  • When: Second Tuesday of the month (Patch Tuesday).
  • Where: Windows Server Update Services, Microsoft Update Catalog.
  • Cumulative: No.
  • Contents: Security improvements.

Quality Rollup

The Quality Rollup is recommended for large businesses that want to use and/or preview quality improvements as soon as they become available. These same quality improvements will typically be included in the following Security and Quality Rollup, approxiately three weeks later. The Quality Rollup will be made available on Windows Update, Windows Server Update Services and Microsoft Update Catalog.

  • When: Typically the Third Tuesday of the Month (one week after Patch Tuesday).
  • Where: Windows Update, Windows Server Update Services and Microsoft Update Catalog.
  • Cumulative: Yes.
  • Contents: Quality improvements.

More Information

The following information answers common questions.

Supersedence

The Security and Quality Rollup and Quality Rollup will contain all of the past updates for .NET Framework 4.5.x and 4.6.x that were released prior to this new model. They will not contain all past updates for .NET Framework 3.5 as those will be introduced naturally if/when new changes are necessary for those components.

Supported .NET Framework Versions

These new releases apply to supported .NET Framework versions. This means that you need to install a supported version of the .NET Framework to get these updates. At the time of writing, the supported versions are:

  • .NET Framework 3.5 SP1
  • .NET Framework 4.5.2 or later

Supported OS Versions

These new releases apply to Windows Vista SP2, Windows 7 SP1, Windows 8.1, Windows Server 2008 SP2, Windows Server 2008 R2, Windows Server 2012 and Windows Server 2012 R2.

On Windows 10, these same .NET Framework security and quality updates are included in Monthly Windows Updates.

Cadence

We intend to ship updates monthly, however, we will only release updates if we have made changes. Also, some changes only apply to a subset of .NET Framework versions and/or Windows versions.

Updating to a later .NET Framework

These updates include patch-level changes. They will not upgrade the .NET Framework that is currently installed on your computer to a newer version. For example, if you have .NET Framework 4.5.2 but do not have 4.6.2, you will still not have .NET Framework 4.6.2 after installing one of these updates. If you want to upgrade to a later .NET Framework version, you must install it separately.

Installation

You will see a single item for each operating system:

qualitysecurityrollup

Security and Quality Rollup on Windows Server 2008 SP2

securityonlyupdate

Security-Only Update on Windows Server 2008 SP2

Even though the Security and Quality Rollup appears as a single installation, it is possible to remove the rollup or security-only update for a specific version of the .NET Framework after the update has been applied. For example, if you installed the Security and Quality Rollup and you have .NET Framework 3.5 and 4.5.2 installed, you can uninstall the .NET Framework 3.5 Security and Quality Rollup, leaving only the .NET Framework 4.5.2 Security and Quality Rollup on your computer. This can be done by removing the Security and Quality Rollup that appears in Add or Remove Programs (ARP):

SecurityOnlyARP

Installed Security-Only Update on Windows Server 2008 SP2

Waiting for VMs to restart in a complex configuration script with PowerShell Direct

$
0
0

Have you ever tried to automate the setup of a complex environment including the base OS, AD, SQL, Hyper-V and other components?

For my demo at Ignite 2016 I did just that.  I would like to share a few things I learned while writing a single PowerShell script that builds the demo environment from scratch. The script heavily uses PowerShell Direct and just requires the installation sources put into specific folders.

In this blog post I’d like to provide solutions for two challenges that I came across:

  • Determining when a virtual machine is ready for customization using PowerShell Direct, and – as a variation of that theme –
  • Determining when Active Directory is fully up and running in a fully virtualized PoC/demo environment.

Solution #1 Determining when a virtual machine is ready for customization using PowerShell Direct

Some guest OS operations require multiple restarts. If you’re using a simple approach to automate everything from a single script and check for the guest OS to be ready, things might go wrong. For example, with a naïve PowerShell Direct call using Invoke-Command, the script might resume while the virtual machine is restarting multiple times to finish up role installation. This can lead to unpredictable behavior and break scripts.

One solution is using a wrapper function like this:

This wrapper function first makes sure that the virtual machine is running, if not, the VM is started. If the heartbeat integration component is enabled for the VM, it will also wait for a proper heartbeat status – this resolves the multiple-reboot issue mentioned above. Afterwards, it waits for a proper PowerShell Direct connection. Both wait operations have time-outs to make sure script execution is not blocked perpetually. Finally, the provided script block is run passing through arguments.

Solution #2 Determining when Active Directory is fully up and running

Whenever a Domain Controller is restarted, it takes some time until the full AD functionality is available.  If you use a VMConnect session to look at the machine during this time, you will see the status message “Applying Computer Settings”.  Even with the Invoke-CommandWithPSDirect wrapper function above, I noticed some calls, like creating a new user or group, will fail during this time.

In my script, I am therefore waiting for AD to be ready before continuing:

This function leverages the Invoke-CommandWithPSDirect function to ensure the VM is up and running. To make sure that Active Directory works properly, it then requests the local computer’s AD object until this call succeeds.

Using these two functions has saved me quite some headache. For additional tips, you can also take a look at Ben’s tips around variables and functions.

Cheers,

Lars

PS: The full script for building the guarded fabric demo environment for Ignite 2016’s session BRK3124: Dive into Shielded VMs with Windows Server 2016 Hyper-V will be shared through our Virtualization Documentation GitHub.

MSRT October 2016 release: Adding more unwanted software detections

$
0
0

Unwanted software often piggy-backs on program downloads, delivered by software bundlers. These bundles, which you might have downloaded, can include software that you do not want, and some that are harmful.

The bundled or “extra” software can perform actions on your device that run the gambit from unwanted to annoying to malicious. The threat that comes with it can go beyond changing your browser settings without your consent, or affecting your productivity and computing experience. The nuisance can run as deep as putting your PC’s security at risk (for example, installing malware in your PC, or preventing your PC from running your antivirus tools properly).

This month, we are adding detections for the families BrowserModifier:Win32/Sasquor, BrowserModifier:Win32/SupTab, and Trojan:Win32/Ghokswa to Microsoft Malicious Software Removal Tool (MSRT) release.

In combination with the families Trojan:Win32/Xadupi and Trojan:Win32/Suweezy added last month, these cover a suite of malware that can hijack browser settings, exclude entire drives from being scanning by Windows Defender and some other anti-malware apps, and install potentially unwanted or malicious software without your consent.

Entry point

In most cases, these malware families initially arrive as offers installed by software bundlers such as SoftwareBundler:Win32/Mizenota, SoftwareBundler:Win32/ICLoader and SoftwareBundler:Win32/InstallMonster.

SupTab and Sasquor have been offered by bundlers under many names, including:

  • Istartpageing
  • Omniboxes
  • Yoursearching
  • iStart123
  • Hohosearch
  • Yessearches
  • Youndoo
  • Trotux

 

Screenshot SoftwareBundler:Win32/InstallMonster being downloaded with details of its offering SupTab under the name

Figure 1: SoftwareBundler:Win32/InstallMonster offers SupTab under the name “Yoursearching”

Some bundlers show SupTab or Sasquor offers not as an app they will install, but simply as a change to your browser search and homepage settings.

 

Screenshot of the SoftwareBundler:Win32/SquareNet licensing agreement offering SupTab under the name

Figure 2: SoftwareBundler:Win32/SquareNet offering SupTab under the name “iStart123”. Note: While the bundler claims that agreeing to this offer will change your browser settings, if you click “Agree & Install” it will also install SupTab services that perform other actions.

 

The Xadupi malware family comes in three different forms, which go by the names CornserSunshine, WinZipper, and QKSee.

Like Sasquor and SupTab, Xadupi can be delivered by software bundlers, but it is also often downloaded silently by Sasquor or SupTab themselves. This silent installation technique is common to most of the families in this group – Sasquor, SupTab and Xadupi all install services and/or scheduled tasks that regularly query remote servers for instructions, and are occasionally instructed to download and install additional apps. This download and installation happens without your consent or even notice. For example, weeks after Sasquor has been installed through a bundler, you may suddenly find WinZipper and QKSee on your machine, with .ZIP, .RAR, and other archive files suddenly associated with WinZipper. A few days after that, you may find your browser settings silently changed by SupTab or Ghokswa.

These diagrams illustrate some of the most common ways these families interact:

A relational diagram indicating how the unwanted software and malware are being installed by each other

 

MSRToct4

In addition to these common installation chains, Sasquor, SupTab, and Xadupi can be instructed by its malware hosts to install each other at any point. Such behavior can help keep the malware alive on a machine longer – if one component is left behind, it can reinstall the others.

What does all this malware do in addition to installing other bits of malware?

Each family can serve multiple purposes and change over time, but here’s a summary:

BrowserModifier:Win32/Sasquor: Changes browser search and homepage settings to circumvent the browser’s supported methods and bypass your consent. It generally targets Google Chrome and Mozilla Firefox users. It also installs services and scheduled tasks that regularly install other malware like Trojan:Win32/Xadupi. It also sometimes installs Trojan:Win32/Suweezy.

BrowserModifier:Win32/SupTab: Changes browser search and homepage settings, circumventing the browser’s supported methods and bypass your consent. It usually targets Internet Explorer, Microsoft Edge, Google Chrome and Mozilla Firefox. It also installs services and scheduled tasks that regularly install additional or another type of malware.

Trojan:Win32/Suweezy: Attempts to modify settings for Windows Defender, Microsoft Security Essentials, AVG Antivirus, Avast Antivirus and Avira Antivirus, to exclude certain folders from being scanned. This can prevent detection and removal of the related malware like Sasquor and SupTab, as well as any other malware or unwanted software the machine might encounter. Suweezy usually adds C:\ to the exclusion list, which includes everything under that path, hence creating a significant and imminent danger to your computer’s overall security, by making that path unprotected by your antimalware software.

Trojan:Win32/Xadupi: Installs a service that regularly installs other apps, including Ghokswa and SupTab. This service is ostensibly an update service for an app that has some user-facing functionality – CornerSunshine displays weather information on the taskbar, WinZipper can open and extract archive files, and QKSee can be used to view image files.

Trojan:Win32/Ghokswa: Installs a customized version of Chrome or Firefox browsers. The Chrome version represents itself as Google Chrome, but is modified to use a different home page and search engine front-end. If Google Chrome is already installed when Ghokswa is downloaded by Xadupi, the Ghokswa installer will silently stop any running Google Chrome processes, and replace all shortcuts and associations for the real Google Chrome with ones pointing to its own version.

Together, these malware families can greatly harm your Windows user experience, and in many cases seriously reduce your computer’s security by tampering with anti-virus apps and introducing new harmful software over time.

Prevention, detection, and recovery

To help stay protected:

  • Keep your Windows Operating System and antivirus up-to-date and, if you haven’t already, upgrade to Windows 10.
  • Use Microsoft Edge. It can:
    • Help warn you about sites that are known to be hosting exploits
    • Help protect you from socially-engineered attacks such as phishing and malware downloads
    • Automatically detect bad changes and protects settings
  • Use the Settings app to reset to Microsoft recommended defaults if your default apps were changed.
    • Launch the Settings app.
    • Navigate to the Default apps page.
      • From Home go to System > Default apps.
      • Click Reset.
  • Avoid browsing web sites that are likely to host malware (such as illegal music, movies and TV, and pirated software download sites)
  • Ensure your antimalware protection (such as Windows Defender and Microsoft Malicious Software Removal Tool) is up-to-date.
    • If you are using Windows Defender, you can check your exclusion settings to see whether the malware (for example, Trojan:Win32/Suweezy) added some entries in an attempt to exclude folders from being scanned.
      • To check and remove excluded items in Windows Defender:
        1. Navigate to Settings>Update & security>Windows Defender>Add an exclusion.
        2. Go through the lists under Files and File locations, select the excluded item that you want to remove, and click Remove.
        3. Click OK to confirm.
  • Enable Microsoft Active Protection Service (MAPS) to get the latest cloud-based unwanted software detection and blocking.

Related information

See How Microsoft antimalware products identify malware: unwanted software and malicious software for the objective criteria details.

For additional information about what Browser Extensibility Models are, and why we require programs to use them, see our previous blogs:

 

MMPC


Watch the Windows Server 2016 webcast on October 13

$
0
0

Now that Windows Server 2016 is generally available, you will want to join Jeffrey Snover, Jeff Woolsey, Erin Chapple, and the team behind Windows Server as they discuss and demo the new security, application, and datacenter innovations found in Windows Server 2016.

  • Watch some great demos by Jeff Woolsey.
  • Hear about customers who are already deploying Windows Server 2016.
  • Get your questions answered with live Q&A throughout the event.

Add it to your calendar now.

Cross-device experience with Project Rome

$
0
0

Overview

Today we live in a multi-device world, and the way we use them spans different platforms and form factors: We read the morning news on our tablets, check email during the morning commute on our phones and at work on our desktop PCs. And at night, we watch movies on our home media consoles.

The Windows platform targets devices ranging from desktop PCs, laptops and smartphones, to large-screen hubs, HoloLens, wearable devices, IoT and Xbox. The device landscape is further diversified with Android and iOS devices, emerging VR/AR solutions, and new IoT products. This heterogeneous environment provides the average user with many choices and device options.

However, the tasks we perform on a daily basis (whether at home with family, or at work with colleagues) are not inherently device-centric, but rather human-centric. As we increase our device count and rely more on apps to run our lives, it is becoming more complicated to get things done.

image1

Project Rome is a platform for creating experiences that transcend a single device so they can harmonize across devices – empowering a developer to create human-centric scenarios that move with the user and blur the lines between their devices regardless of form factor or platform. This vision is beginning to take shape in the Windows 10 Anniversary Update (Windows 10, Version 1607) with the Remote Systems API, enabling developers to extend their app experiences across Windows devices connected proximally or through the cloud.

This blog post covers the functionality of the Remote Systems API by walking through an example app experience built on Project Rome, and encourages developers to break down the barriers between devices to reduce friction and better serve your users’ needs.

Contoso Music App

Paul is a developer who has built a UWP app for streaming music. He has a growing user base and observes usage across a variety of Windows 10 devices. His telemetry shows installs occurring on phones, PCs and even Xbox. Identifying an opportunity, Paul sets out to a) reduce the friction of listening to music across these different devices and b) make it easier to get his app on other devices. Overall, he wants to ensure that his users can enjoy their great tunes all day, no matter where they are.

Paul decides to create a scenario where users can transfer the current song they are streaming over to a new device. Sample scenarios include listening to music on your phone then after arriving home, transferring to your Xbox; listening on your work PC then transferring to your phone to go for a walk, etc. All the tools he needs are available from Project Rome, namely, the Remote Systems API.

image2

Discovering Devices

The first step for Paul to introduce an effective cross-device experience is the discovery of other devices from the host device, and subsequent connection to the target device.

Paul can implement device discovery over Wi-Fi and Bluetooth Low Energy (BLE) when the target device is in proximity, or via the Cloud. This discovery is provided by the RemoteSystemWatcher class, which selects the optimal transport given the scenario; the target devices do not require any special code implemented in order to be discoverable. Should he desire some advanced features for more targeted discovery, Paul can implement filters on RemoteSystemWatcher for discovery type, device type and availability status of the discovered devices. He can also connect to a device directly by IP address.

Wrapping this functionality in a simple control within his app, the watcher is started when a user opens the control. RemoteSystemAdded events are fired when new devices are discovered (given they meet the filter conditions) and Paul can build a device list to populate the control with friendly device names for the user to select.

image3

Before connecting to a device, Paul must call the RequestAccessAsync() method to ensure his app is allowed to access remote devices (this is satisfied by declaring the “remoteSystem” capability in the application manifest). Once all conditions are met, connection is one click away and the doors are open for Paul to take his music experience across device barriers.

image4

Connecting and Launching an Experience

Launching an app experience to a remote device is done using the RemoteLauncher.LaunchUriAsyncAPI (an existing API that has been extended to work across devices). Prior to launching, a connection is established by passing a RemoteSystem object into RemoteSystemConnectionRequest(). Paul leverages these APIs to specify the device the user has selected for connection, as well as to provide the payload required to launch the current song that was playing (using his “contosoapp:” protocol activation, also defined in the app’s manifest).

image5

He also provides a URI of his website, promoting the installation of his app to use as a fallback should the target device not have his app installed. Less than an hour after getting started, Paul wraps up his coding and starts preparing the update for shipping to his users.

Messaging Between Connected Devices

Several months later and pleased with both the user feedback on his app as well as the growing engagement and installs, Paul decides to further augment the user experience by implementing the ability to message between connected devices, enabling remote control experience for his music app. With Remote Systems already enabled, he can do this easily by leveraging app services on remote devices. Remote app services enable a foreground app on a host device to invoke application functionality on the target device (given the app is installed on the target).

Paul already has a local app service in his app that allows other applications to control music playback; to enable remote functionality for his service, he simply adds <SupportsRemoteSystems=”true”> to his AppService element in the appx manifest. Next, in his app code that connects and launches to remote devices, he instantiates an AppServiceConnection object and creates a RemoteSystemConnectionRequest object for the target device, thereby opening a connection to an app service on the remote target device.

After that, Paul is done with the heavy lifting and he now has a channel for sending and receiving messages to and from the app service – enabling him to create a companion experience for controlling music playback on the host device.

image6

image7

Wrapping Up

Project Rome breaks down barriers across all Windows devices and creates experiences that are no longer constrained to a single device. The Remote Systems API available in Windows 10 is a key piece of Project Rome that provides exposure of the device graph and the ability to connect and command – this is fundamental for driving user engagement and productivity for applications across all devices.

Going forward, we are excited to continue building on our vision and collaborating with the developer community – our aim is to empower developers to enable compelling and productive experiences for users — no matter what device they are using.

To learn more and browse sample code, including the snippets shown above, please check out the following articles and blog posts:

Download Visual Studio to get started.

The Windows team would love to hear your feedback.  Please keep the feedback coming using our Windows Developer UserVoice site. If you have a direct bug, please use the Windows Feedback tool built directly into Windows 10.

 

1,000,000 predictions per second

$
0
0

This post is by Joseph Sirosh, Corporate Vice President of the Data Group at Microsoft.

Transactional Workloads + Intelligence

Online transaction processing (OLTP) database applications have powered many enterprise use-cases in recent decades, with numerous implementations in banking, e-commerce, manufacturing and many other domains. Today, I’d like to highlight a new breed of applications that marry the latest OLTP advancements with advanced insights and machine learning. In particular, I’d like to describe how companies can predict a million events per secondwith the very latest algorithms, using readily available software. We have shown this demo at the Microsoft Machine Learning and Data Science Summit and my General Session at Ignite in Atlanta, Georgia. You can watch both online. The predictive model was based on a boosted decision tree algorithm with 50 trees and 33 features.

Machine Learning at 1M PPP

Take credit card transactions, for instance. These can trigger a set of decisions that are best handled with predictive models. Financial services companies need to determine whether a particular transaction is fraudulent or legitimate.

As the number of transactions per second (TPS) increase, so does the number of predictions per second (PPS) that organizations need to make. The Visa network, for instance, was capable of handling 56,000 TPS last year and managed over 100 billion yearly transactions. With each transaction triggering a set of predictions and decisions, modern organizations have a need for a powerful platform that combines OLTP with a high-speed prediction engine. We expect that an increasing number of companies will need to hit 1 million predictions per second (PPS) or more in coming years.

What kind of architecture would enable such use cases? At Microsoft, we believe that computing needs to take place where data lives. This minimizes data movement, eliminates the costs and security risks associated with data movement and the prediction engine sits close to the database (i.e., in-database analytics). Moreover, the predictive models can be shared by multiple applications. That’s precisely how SQL Server 2016 was designed.

Take the credit card fraud detection example I mentioned above – one can handle it in the following manner:

  • A data scientist creates a predictive model for credit-card fraud detection based on historical transaction data. This model is stored as a standard database object inside a database.
  • New credit-card transactions are ingested and stored in high-speed in-memory columnstores.
  • The data is likely to require some preparation for advanced analytics. This includes operations such as joining data across multiple tables, cleansing, creating aggregations and more. SQL shines at this, because these steps execute much faster in production when done at the database layer.
  • The new transaction data and the predictive model are sent (using T-SQL) to an in-database predictive engine. Predictions can then be done in batch or at the single transaction level. In SQL Server 2016 you can build on the power of R, with its extensive set of packages and the built-in high scale algorithmic library (ScaleR) provided by Microsoft.
  • Predictions can be retuned immediately to an application via T-SQL and/or stored in the database for further use.

This is shown visually below:

Fraud Predictions Visual

The above architecture is very versatile. In addition to using it in fraud detection, we’ve applied this architecture to perform what-if analysis on an auto loan dataset.

Analytical Workloads + Intelligence

Imagine a loan application where a financial services company needs to determine if a loan will be repaid on time. Similarly to predicting fraudulent transactions, you can leverage SQL Server 2016 as a Scoring Engine to predict “bad” loans. Loans that indicate good repayment behavior are considered “good” and loans that indicate less than perfect repayment behavior are considered “bad”. Imagine scanning through millions of loan applications and being able to predict – within seconds – which loans will default. Now imagine a business analyst launching the same exercise while modeling a scenario where the Federal Reserve increases interest rates. Our loan default prediction model was able to reach and exceed a staggering 1,250,000 predictions per second, completing the what-if analysis within 15-18 seconds. This capability now enables our customers to have near real-time predictive analytics. The architecture is shown visually below:

Loan Default Prediction Visual

One of the common tasks from customers is to provide an intelligent method of predicting how changing factors like interest rates, loan terms or even a member’s credit score would affect the charge-off probability. You can specify a what-if input for an increased interest rate and score the open loans with the new proposed interest rate using parallel threads which call a SQL Server stored procedure to invoke the scoring model on the open loans. You can take these predictions and compare the base predictions with the what-if predictions. Then you can study the probability of HIGH charge-offs increasing with an increase in interest rate and how it may effect various branches of your business. Such near real-time predictive analytics capabilities minimize research bias, dramatically increase business flexibility and focus on attributes that matter which results in higher profitability.

At Ignite, we had Jack Henry & Associates on the stage with me. They provide more than 300 products and services to over 10,000 credit unions and enable them to process financial transactions plus automate their services. Using SQL Server as a Scoring Engine, enabled their vision of building an intelligent enterprise data warehouse which would help their customers increase their productivity. They have been working with Microsoft to leverage SQL Server with built-in R capability to build intelligence into their current data warehousing service portfolio. Such an intelligent data warehouse helps credit unions and financial services become more flexible and react to situations in a data-driven manner. We see opportunities in applying such models within the database to customer churn predictions, predicting loan portfolio changes and a host of other scenarios. Several banking and insurance companies rely on very complex architectures to do predictive analytics and scoring today. Using the architecture outlined in this blog, businesses can do this in a dramatically simpler and faster manner.

The possibilities are endless.

SQL Server as a Scoring Engine

We’ve posted several samples on GitHub. The available templates are listed below.

  • Predictive Maintenance. Predict machine failures.
  • Customer Churn Prediction. Predict when a customer churn happens.
  • Online Purchase Fraud Detection. Predict if an online purchase transactions is fraudulent.
  • Energy Demand Forecasting. Forecast electricity demand of multiple regions.
  • Retail Forecasting. Forecast the product sales for a retail store.
  • Campaign Management. Predict when and how to contact potential customers.
  • Predicting Riskon Consumer Loans is posted here.

This is how companies are predicting at the speed of data, today.

Joseph
@josephsirosh

Test & Feedback – Capture your findings

$
0
0

Test & Feedback extension allows everyone in team, be it developers, testers, product owners, user experience, leads/managers etc. to contribute to quality of the application, thus making it a “team sport”. It enables you to perform exploratory tests or drive your bug bashes, without requiring predefined test cases or test steps. This extension simplifies the exploratory testing in 3 easy steps – capture, create & collaborate. An overview of this extension is captured in this overview blog of Test & Feedback extension.

In this blog, we will drill into the “Capture” aspect. There are two ways in which this extension captures the data:

  1. Explicit capture – With “explicit” capture, actions are required to be taken. All these actions are exposed on extension tool bar. We will cover – Capture Screenshot, Capture Notes and Capture Screen Recording in details below.
    Test & Feedback - Toolbar
  2. Implicit capture– With “implicit” capture, you are not required to do anything special. Actions triggered by you are automatically capturing required data with basic annotation added. These capture actions include – Image Action Log, Page Load Data and System Information.

Capture Screenshot

As you are exploring the web-app, you can capture the entire screen or part of screen as your screenshot. Click on [Test & Feedback - Capture Screenshot] to trigger screen capture. Take a “Fullscreen” or capture part of web page as required. Once it is selected, you can annotate the captured screenshot.

Test & Feedback - Annotated Screenshot

You can select the name of the screenshot you like, and also can use shapes from annotation toolbar to draw on cropped image area to show/highlight part of the page. Annotation toolbar provides – drawing, circles/ovals, rectangles, arrows, and add text annotations. It also provides way to “blur” part of image that has some confidential/sensitive information. You can customize the color for all shapes. Save the screenshot by clicking on [Test & Feedback - Save screenshot]. Saving a screenshot will add it automatically to the session and also shows up on the session timeline.

NoteAll floating elements like tooltips, and dynamic UI components that show up on mouse hover and go-away when mouse is moved away, are not captured using the “screenshot” option. You could instead use the “screen recording” option mentioned below.

Capture Notes

Notes can be taken or made as you explore your web-app. Click on [Test & Feedback - Capture notes] to open notes area where notes can be added and saved. Notes are saved with the session timeline. You can even paste “text” from your clipboard into notes area. Notes taken are automatically saved, and are persisted even if browser window closes, or the extension pop-up closes. “Save” the note to add it to the ongoing session.

Test & Feedback - Capture notes screenshot

Screen Recording

Screen recording allows you to capture more continuous activity of web-page navigation. It is only “video” capture, and “audio” capture is not supported. It also addresses scenario where capturing more events than what image action log can capture or capturing floating elements in web-page (like tooltips) is required. Screen recording can also record the data for all desktop (non-browser) applications as well. This is extremely useful if you are testing a desktop app, but still use the extension to report issues using the screen recording.
Click on [Test & Feedback - Record Screen] to start the recoding, and stop recording.

  1. Start recording
    Test & Feedback - Start screen recording
  2. Select screen or application to record
    Test & Feedback - Select screen to record
  3. Ongoing screen recording status will appear
  4. Stop the recording when done
    Test & Feedback - Stop screen recording

Capture Image action log

As you are navigating the web-app, all your mouse clicks, keyboard typing events and touch gestures are captured automatically in the form of “image action log” to give you more context of repro-steps or actions that lead to some specific part of the web-app. Image action log data tracks last 15 events in the context of the ongoing session. Information about captured image action log events is made available during bug and task creation, as well as test case creation. This helps in knowing the steps that led to the bug with just one click at the time of filing it.

Test & Feedback - Image action log screenshot while filing bug

A check-box option allows to include or exclude image action log data during bug filing/task creation. Image action log capture is turned on with the install of extension. Extension “Options” page enables configuration of the image action log option.

In work item form, all image action log images are shown in compact form, but also a full resolution image is added with bug or task for getting complete context. These images are accessible via quick links added in bug repro steps or task description.

Test & Feedback - Image action log view in work item
Image action view in work item

They can be seen by clicking on attachment as well.
Test & Feedback - Image action attachments in work item
Image action attachments in work item

Capture Page Load Data

Just like the “image action log” captured your actions performed on a web-app being explored, in form of images in the background, the “page load” functionality automatically captures details for a web page to complete the load operation. Instead of relying on subjective/perceived slowness of web page load, you can objectively quantify the slowness in the bug now. Web page load data provides high level snapshot while filing the bug and a more detailed drilldown with timeline graphs added at navigation and resource level in filed bug/task.

Test & Feedback - Page load data

Snapshot provides high level information on where the maximum time is spent while loading the page. A detailed report is attached with bug which comprises of Navigation Chart and Resource Chart. A developer will find this information very useful to get started with deeper investigations about performance issues about web-app.

Test & Feedback - Page load data - developer view

Option exists with bug and task form to exclude adding page load data when not needed. Also, see extension “Options” to enable or disable this option across of sessions.

System Information

With every bug, task and test case filed, “System information” about the browser and machine is added. It captures browser, OS, memory and display information. This helps developer know the config of machine, display properties and OS info to debug issues. This additional diagnostics information is always sent and cannot be turned off.

Test & Feedback - System Information

Options

Settings are exposed for all of the above capture sources to enable or disable them at extension level across of all sessions.

Test & Feedback - Options

Now that you are familiar with all capture ways in Test & Feedback extension, we will explore next on how can captured data be used in various “Create” [coming soon] options to create artifacts like bugs, tasks, and test cases.

Here’s a look at HP’s holiday lineup of new Windows 10 PCs

$
0
0

Today, HP Inc. unveiled an awesome updated lineup of Windows 10 PCs for the holiday season, including new Windows 10 laptops, an all-in-one and a 4K display. With these new devices, you can draw and markup webpages in Microsoft Edge, talk to your own personal digital assistant in Cortana and enjoy their overall design excellence, quality and performance, whether you’re at home or on-the-go. Let’s take a look at HP’s new devices:

HP Spectre x360 with Windows 10 delivers powerful performance in sleek package

HP has taken its most successful premium laptop PC and made it even better. By optimizing the PC for the latest 7th Generation Intel Core processors, and adding a larger 57.8W battery in the thinner design, the Spectre x360 now achieves 25 percent more hours of battery life with up to 15 hours. The touchscreen is perfect for drawing with Windows Ink or drawing on and marking up webpages in Microsoft Edge. The new micro-edge display bezel design reduces the overall footprint by eliminating almost 10mm from each side of the screen. With a new hinge design, it is 13.8 mm thin, more than 2 mm thinner than the previous generation and is lighter at 2.85lbs compared to 3.2lbs. The PC now includes quad speakers instead of two to deliver crisp audio thanks to tuning by Bang & Olufsen plus HP Audio Boost for superior sound in every mode.

Click to view slideshow.

The new Spectre x360 features great connectivity with two USB-Type C ports with Thunderbolt support and a USB-Type A 3.0 port allowing users to connect the latest peripherals both today and tomorrow. The bright display boasts a 13.3-inch diagonal FHD IPS panel delivers great viewing experiences.

Other features include:

  • Powered by Windows 10
  • The new dual fan design optimizes thermals to ensure the device runs cool.
  • 7th Generation Intel Core i5 or i7 processors
  • Options with up to a 1TB PCIe SSD for fast performance and plenty of space to store high resolution videos and photos
  • Windows Hello facial login is supported by HP TrueVision FHD IR Camera for added security.
  • Improved Wi-Fi connectivity with optimized placement at the top of the PC for faster downloads of movies, pictures and videos
  • HP Fast Charge to power the device up to 90 percent in just 90 minutes

Pricing and Availability: The HP Spectre x360 is expected to be available October 12, 2016. HP.com starting price is $1,049.99 and BestBuy.com starting price is $1159.

HP ENVY Laptop with Windows 10 is powerful in a thin and light design

For people who want a premium laptop at an affordable price, the HP ENVY combines beauty and power with refined metal materials and slim lines offered in Natural Silver. The new 13.3” diagonal HP ENVY laptop packs four more hours of battery life – up to 14 hours – compared to last year’s model.

Click to view slideshow.

An elevated hinge design provides a more comfortable typing experience coupled with a backlit keyboard for working in low light and an extra-wide glass touchpad for less resistance. The optional edge-to-edge flush glass display offers vivid visuals for movies and games with a QHD+ and UHD panels. Customers can also choose a FHD panel or add touch with the QHD+ display option. Dual firing speakers, with audio expertly tuned by Bang & Olufsen plus HP Audio Boost Technology, offer amazing sound to amplify movies and music.

Other features include:

  • Powered by Windows 10
  • Two USB 3.0 ports, including one dedicated to sleep and charge, and one USB Type-C port
  • 7th Generation Intel Core i5 and i7 processors
  • Up to a 1TB SSD PCIe provides fast response times when opening or moving large files
  • Up to 16GB RAM
  • HP Fast Charge up to 12 hours in 90 minutes

Pricing and Availability: The HP ENVY Laptop is expected to be available on HP.com and select retailers on October 26, 2016 starting at $849.99.

HP ENVY All-in-One 27 with Windows 10 looks great in any room, delivers cinematic experiences

The HP ENVY All-in-One 27 offers a simple yet sophisticated design that makes it look great in any room in the house. By moving the computing power into the base, the two-volume design reduces the display thickness by 44 percent for a thin, beautiful 27-inch diagonal QHD display. The base includes an innovative sound bar with four speakers expertly tuned by Bang & Olufsen to provide theatre-like sound quality and an audio dial allows for easy touch control. To safeguard privacy, the ENVY AIO 27 offers a HP Privacy Camera with IR support — which you can use to login securely and conveniently with Windows Hello— and a microphone that pops up only when in use.

Click to view slideshow.

The 3.6 million pixel screen resolution with Technicolor Color Certification ensures high accuracy colors when watching videos or creating and editing content. This is HP’s first all-in-one display to feature low blue light mode for improved eye comfort and a better night’s sleep.

Other features include:

  • Powered by Windows 10
  • USB Type-C port with Thunderbolt 3 support
  • HDMI-out to connect to a second monitor or to project to a TV
  • HDMI-in port for connecting a laptop to take advantage of the ENYV AIO 27’s beautiful display
  • Powerful processing options available, including 6th Generation Intel Core i5 and i7 quad-core desktop processors
  • Optional discrete NVIDIA GTX 950M graphics card with 2GB GDDR5 video for blazing fast 3D gaming performance
  • Hybrid storage options include up to a 256GB SSD and 2TB HDD to give customers faster performance and plenty of storage for digital media collections

Pricing and Availability: The HP ENVY All-In-One 27 is expected to be available on HP.com and select retailers in October 2016, starting at $1,299.99.

HP ENVY Display offers vibrant, 4K images

Click to view slideshow.

The HP ENVY 27 Display leverages a contemporary design featuring a thin aluminum stand that enhances the floating display experience of the 27-inch diagonal 4K IPS panel with a micro-edge bezel. AMD FreeSyncTM support reduces the image tears and stutters that can appear on lesser displays. Its sRGB color accuracy exceeds 99 percent, making sure today’s 4K content look breathtaking. The versatile connectivity includes Display Port, HDMI and USB-C, which can also charge your PC or mobile device with up to 60 watts of power.

Pricing and Availability: The HP ENVY 27 Display is expected to be available on HP.com and select retailers on Dec. 4, 2016, starting at $499.99.

Head over to HP.com to learn more about these new devices, and look for them on shelves as soon as this month!

*Cortana available in select markets.
**Windows Hello requires specialized hardware, including fingerprint reader, illuminated IR sensor or other biometric sensors and capable devices.
***Touch-capable tablet or PC required. Pen accessory may be sold separately.

Azure Stream Analytics query testing now available in the new portal

$
0
0

Azure Stream Analytics is a fully managed service allowing you to gain insights and run analytics in near real-time on your big data streaming workloads. The service was first deployed more than 2 years ago, long before the “new” Azure management portal, http://portal.azure.com, even existed.

For the past few months we’ve been hard at work adding exciting new features to the service as well as transitioning the management user interface from the old https://manage.windowsazure.com to the new portal

Today we want to announce that we’ve just added the ability to test queries in the “new” portal without needing to start or stop a job. Here’s a quick look at how this works.

Setup

You can setup a Stream Analytics by following this simple tutorial - How to create a Stream Analytics job

Once you have created a new Stream Analytics job you would typically Create Inputs and then Create Outputs. Or you can just skip ahead to building the query and once your query is working then go back and define the Inputs and Outputs to match those used in the query. Both ways work, giving you the flexibility to decide how you wish to work.

For the purposes of this blog post I have defined a job with 1 data stream input, called StreamInput and 1 output, called Output. You can see these in the query editor blade above.

0

Open the Query editor blade from the job details screen by clicking on the query in the “Query” lens. Or in our case the <> placeholder because there is no query yet.

1

You will be presented with the rich editor as before where you create your query. This blade has now been enhanced with a new pane on the left. This new pane shows the Inputs and Outputs used by the Query, and those defined for this job.

2

There is also 1 additional Input and Output shown which I did not define. These come from the new query template that we start off with. These will change, or even disappear all together, as we edit the query. You can safely ignore them for now.

A key requirement and a common ask from our customers while writing a query is being able to test, and test often, to ensure that the output is what it is expected to be, given some input data. Having to save the query after every edit, start the job, wait for incoming data, check the results, and then stop the job again each time you make a small change to the query would be slow and is sometimes not even possible. A way to test changes to a query quickly was needed.

I am happy to announce that with today’s latest release in the portal you can now test the query without going through this stop/start process. Here's how ...

Sample data and testing queries

To test with sample input data, right click on any of your Inputs and choose to Upload sample data from file.

3

Once the upload has completes you can then use the Test button to test this query against the sample data you have just provided.

4

The output of your query is displayed in the browser, with a link to Download results should you wish to save the test output for later use. You can now easily and iteratively modify your query, and test repeatedly to see how the output changes.

5

In the diagram above you can see how I have changed the query inline to have a 2nd output, called HighAvgTempOutput where I am only writing a subset of the data being received.
With multiple outputs used in a query you can see the results for both outputs separately and easily toggle between them.
Once you are happy with the results in the browser, then you can save your query, start your job, sit back and watch the magic of Stream Analytics happen for you.

Feature Parity and the road ahead

With the long awaited addition of sample data and query testing in the new portal we are happy to announce that we have reached feature parity between the portals. Everything you could do before, and more, is now in the new portal. Going forward all new development efforts will be concentrated on the new portal. The old portal will continue to work and existing functionality will remain until end of the calendar year when we place to completely retire support for Stream Analytics in the old portal.
If you have not tried Stream Analytics in the new portal we encourage you to head over and give it a try.

Next Steps

We’re really excited to bring local testing to the new portal and take this final step to reaching feature parity across the two portals. We hope this makes your life much easier as you go about developing (and testing) your queries.

We invite you to provide feedback on our User Voice page about what you want added next to the service!

If you are new to either Microsoft Azure or Stream Analytics, try it out by signing up for a free Azure trial account and create your first Stream Analytics job.

If you need help or have questions, please reach out to us through the MSDN or Stackoverflow forums, email the product team directly.

Temporal Tables are generally available in Azure SQL Database

$
0
0

Temporal Tables allow you to track the full history of data changes directly in Azure SQL Database, without the need for custom coding. With Temporal Tables you can see your data as of any point in time in the past and use declarative cleanup policy to control retention for the historical data.

When to use Temporal Tables?

Quite often you may be in the situation to ask yourself fundamental questions: How did important information look yesterday, a month ago, a year ago, etc. What changes have been made since the beginning of the year? What were the dominant trends during a specific period of time?  Without proper support in the database, however, questions like these have never been easy to answer.
Temporal Tables are designed to improve your productivity when you develop applications that work with ever-changing data and when you want to derive important insights from the changes.
Use Temporal Tables to:

  1. Support data auditing in your applications
  2. Analyze trends or detect anomalies over time
  3. Easily implement slowly changing dimension pattern
  4. Perform fine-grained row repairs in case of accidental data errors made by humans or applications

Manage historical data with easy-to-use retention policy

Keeping history of changes tends to increase database size, especially if historical data is retained for a longer period of time. Hence, retention policy for historical data is an important aspect of planning and managing the lifecycle of every temporal table.  Temporal Tables in Azure SQL Database come with an extremely easy-to-use retention mechanism. Applying retention policy is very simple: it requires users to set single parameter during the table creation or table schema change, like shown in the following example.

ALTER TABLE [WebSiteClicks]
SET 
(
	SYSTEM_VERSIONING = ON 
	(
		HISTORY_TABLE = dbo. WebSiteClicks_History, 
                HISTORY_RETENTION_PERIOD = 3 MONTHS  
	)
);

You can alter retention policy at any moment and your change will be effective immediately.

Why you should consider Temporal Tables?

If you have requirements for tracking data changes, using Temporal Tables will give you multiple benefits over any custom solution. Temporal Tables will simplify every phase in the development lifecycle: object creation, schema evolution, data modification, point-in-time analysis and data aging.

Temporal Benefits

Next steps

To learn how to integrate Temporal Tables in your application, read the following article with the step-by-step instructions. To utilize temporal retention, check out  Manage temporal history with retention policy article on Azure.com.
Visit Channel 9 to hear a real customer story and watch a live presentation with the demo. For more information, check out MSDN documentation.


Explore your JIRA Data with Power BI

$
0
0
JIRA Software provides bug tracking, issue tracking, and project management capabilities for teams and organizations. The JIRA content pack for Power BI helps you quickly import JIRA data so you can get an instant dashboard to analyze workloads, see how quickly you're resolving issues, visualize velocity over time, and more. Power BI helps you quickly filter by project or component to generate new insights into your JIRA data.

Simpler Azure management libraries for .NET

$
0
0

One C# statement to authenticate. One statement to create a virtual machine. One statement to modify an existing virtual network, etc. No more guessing about what is required vs. optional vs. non-modifiable.

https://github.com/Azure/azure-sdk-for-net/tree/Fluent

We are announcing the first developer preview release of the new, simplified Azure management libraries for .NET. Our goal is to improve the developer experience by providing a higher-level, object-oriented API, optimized for readability and writability. These libraries are built on the lower-level, request-response style auto generated clients and can run side-by-side with auto generated clients.

Azure Authentication

One statement to authenticate and choose a subscription. The Azure class is the simplest entry point for creating and interacting with Azure resources.

Azure azure = Azure.Authenticate(credFile).WithDefaultSubscription();

Create a Virtual Machine

You can create a virtual machine instance by using a Define() … Create() method chain.

Console.WriteLine("Creating a Windows VM");

var windowsVM = azure.VirtualMachines.Define("myWindowsVM")
    .WithRegion(Region.US_EAST)
    .WithNewResourceGroup(rgName)
    .WithNewPrimaryNetwork("10.0.0.0/28")
    .WithPrimaryPrivateIpAddressDynamic()
    .WithNewPrimaryPublicIpAddress("mywindowsvmdns")
    .WithPopularWindowsImage(KnownWindowsVirtualMachineImage.WINDOWS_SERVER_2012_R2_DATACENTER)
    .WithAdminUserName("tirekicker")
    .WithPassword(password)
    .WithSize(VirtualMachineSizeTypes.StandardD3V2)
    .Create();

Console.WriteLine("Created a Windows VM: " + windowsVM.Id);

Update a Virtual Machine

You can update a virtual machine instance by using an Update() … Apply() method chain.

windowsVM.Update()
     .WithNewDataDisk(10)
     .DefineNewDataDisk(dataDiskName)
          .WithSizeInGB(20)
          .WithCaching(CachingTypes.ReadWrite)
          .Attach()
     .Apply();

Management libraries unleash the power of IntelliSense in Visual Studio

Fluent interface-inspired method chains in combination with IntelliSense deliver a wizard-like developer experience by presenting required and optional methods in the right sequence. For example, once you choose a Windows virtual machine image, IntelliSense will prompt for an admin password and nothing else.

create-vm

Then, IntelliSense will prompt for a password and nothing else. This will continue until you reach the minimum required to call create().

create-vm-create

As another example, if you were to choose a Linux virtual machine image, IntelliSense would prompt for a root user name and then SSH key.

Samples

You can find plenty of sample code that illustrates key management scenarios in Azure Virtual Machines, Virtual Machine Scale Sets, Storage, Networking, Resource Manager, Key Vault and Batch …

Service

Management Scenario

Virtual Machines

Virtual Machines - parallel execution

Virtual Machine Scale Sets

Storage

Network

Resource Groups

Key Vault

Batch

Give it a try

This is a developer preview that supports major parts of Azure Virtual Machines, Virtual Machine Scale Sets, Storage, Networking, Resource Manager, Key Vault and Batch. You can run the samples above or go straight to our GitHub repo.

Give it a try and let us know what do you think (via e-mail or comments below), particularly -

  • Usability and effectiveness of the new management libraries for .NET?
  • What Azure services you would like to see supported soon?
  • What additional scenarios should be illustrated as sample code?

The next preview version of the Azure Management Libraries for .NET is a work in-progress. We will be adding support for more Azure services and tweaking the API over the next few months.

Office 365 Groups update at Ignite 2016

$
0
0

It was an exciting time for Office 365 Groups at Ignite 2016 in Atlanta last month. We had some great sessions, which are now available online to all of you that could not attend. These sessions cover top of mind questions you asked us to discuss, ranging from our collaboration product strategy, use cases, administration and governance, extensibility and key innovations on our product roadmap.

Office 365 Groups is a group membership service that provides a single identity for teams in Office 365 and equips them with a set of group collaboration assets such as a calendar, a OneNote notebook, a Plan to manage tasks and conversations powered by Outlook or Yammer.

Our key Ignite session, Discover Office 365 Groups—overview, administration and roadmap, presented a comprehensive overview and update on Office 365 Groups. We first discussed how group collaboration in the enterprise has evolved to be multi-faceted and how Office 365 addresses the unique needs and workstyle of different groups.

groups-update-1

We presented three common use cases, (a project group, an organization group and an interest group) observed from the millions of users using Groups in different Office 365 applications every month to get work done. We highlighted recent innovations such as the ability to add external team members, a modern SharePoint team site for every group and the new Outlook Groups iPad app to name a few. We then discussed and demoed key administration updates to help you manage and govern groups; features presented included data classification and usage guidelines, dynamic membership, audit log and usage reports and the ability to upgrade a distribution group (DL) with one click via the Exchange admin center.

Attendees asked if we support hybrid scenario with on-premises mailbox and multiple domains and the answer is YES to both. Read “Configure Office 365 Groups with on-premises Exchange hybrid” and “Multi-domain support for Office 365 Groups” to get started.

Last but not least, we showed how Yammer is integrating with Office 365 Groups and recapped key investments across experiences and administration going forward. One popular item we announced is our upcoming work on group preservation and deletion policies. Please see our FastTrack Roadmap for a full list of innovations.

groups-update-2

In addition to the above overview session, watch the following session—targeted at administrators—for an in-depth look at key governance investments available today and in the future:

In addition to the above two sessions mentioned, a dozen others related to Office 365 Groups are listed below:

Overview and use cases

Administration and governance

Partner teams: SharePoint, Planner and Yammer

Thank you all that came to Ignite 2016, attended our sessions and dropped by our booth. We have already announced that Ignite 2017 is going to be in Orlando; in fact, you can already pre-register. See you next year, and until then, please continue to engage with us via our technical community.

—Christophe Fiessinger, @cfiessinger, senior program manager for the Office 365 Groups team

The post Office 365 Groups update at Ignite 2016 appeared first on Office Blogs.

C++ Core Check code analysis is included with VS “15”

$
0
0

Visual Studio “15” Preview 5 now includes the C++ Core Guidelines Checkers. This means you no longer have to install the C++ Core Check package from NuGet to check your code against rules and profiles in the C++ Core Guidelines. Just configure Code Analysis to include the C++ Core Check extensions.

You can configure Code Analysis in the Solution or Project Property Pages. Either right click on the project or solution or select “Analyze->Configure Code Analysis” from the menu bar.

ConfigureCA

Find the Code Analysis entry on the bottom of the Property Page and select “Extensions”. Here you’ll find two options: one to enable the Released C++ Core Checks, and one to enable the Experimental Core Checks.

ExtensionsCA

Release checks vs. Experimental checks

What’s the difference between the release checks and the experimental checks? The release checks are more robust. The warnings they find are higher confidence than the experimental checks, and the checker itself runs faster. Right now they include the first set of C++ Core Guidelines checks we released with VS 2015 Update 1 as well as some additional checks from the Guidelines.

CppCoreCheckReleased

The experimental checks include rules that are in development but can still be interesting to run against your code. These include the Lifetime checks we previewed in March 2016 as well as some other checks under development. Note that while most checks will move from “experimental” into “release” you shouldn’t rely on any of the checks in the experimental group. Some of these are prototypes that won’t ever make their way into the release group.

CppCoreCheckExperimental

Future of the NuGet-based packages

Remember that if you’re using Visual Studio 2015 you’ll have to still have to install the C++ Core Check package from NuGet. This change is only for Visual Studio “15”, the next major version of Visual Studio. (Note that VS “15” != Visual Studio 2015. Each version of Visual Studio has two names: the internal name is a simple incrementing number, the external name is the year of its release. Visual Studio “15” happens to be in development while Visual Studio 2015 is the current released version but they are different releases. Visual Studio “15” will be rebranded with the year of its release–Visual Studio 2016, Visual Studio 2017, etc.)

The CppCoreCheck packages distributed through NuGet now will remain available for users of VS 2015. But in the future we’ll focus our efforts on the checkers built into Visual Studio. We’ve always required that you use the latest released VS update with the newest CppCore Check because there’s a tight coupling between the C++ compiler and the code analysis tools. Once Visual Studio “15” releases you can continue to use the existing NuGet packages with Visual Studio 2015 but if you want the newest checkers you’ll need to upgrade to Visual Studio “15”.

The tight coupling between the C++ compiler and code analysis tools means that when you bring an existing VS 2015 project to VS “15” you’ll have to move the project to use the newer platform toolset. You can easily do this by bringing up the Project Properties (by right-clicking on the project) and selecting “Platform Toolset” under the “General” category. Once you choose “Visual Studio 2016 (v141)” you should see the settings for Extensions in the Code Analysis section of the project property page.

PlatformToolset

Send us your feedback!

As always, we welcome your feedback. For problems, let us know via the Report a Problem option, either from the installer or the Visual Studio IDE itself. For suggestions, let us know through UserVoice. And you can always reach us through e-mail at cppcorecheck@microsoft.com.

Deep Neural Network in Azure

$
0
0

This post is authored by Anusua Trivedi, Data Scientist, and Jamie F Olson, Analytics Solutions Architect, of Microsoft.

This blog is an extension of Part 2 of our blog series. In our earlier blog, we showed how to train a Deep Convolutional Neural Network (DCNN) to classify medical images to detect Diabetic Retinopathy. For training the DCNN, we have used an NC24 VM running on Ubuntu 16.04. N-Series VM sizes are currently under preview and available for select users at http://gpu.azure.com. In this post, we show you how to operationalize a Azure GPU-trained DCNN model using Azure ML and Azure ML Studio.

Before you get started, you’ll need the Anaconda Python distribution installed either on your local Windows machine or in a Windows Data Science Virtual Machine. For this blog, we re-trained an ImageNet pre-trained GoogleNet model using the Kaggle Diabetic Retinopathy dataset. These re-trained model weights are saved into a Pickle file.

To deploy a DCNN model in Azure ML, you’ll need to upload any Python packages you’re using, as well as your Pickle file into Azure ML Studio as a zipfile Script Bundle. Although the Azure ML Python client library will identify local variables and upload them automatically, it does not currently support additional third-party packages.

There are lots of different ways you can prepare your Script Bundle. This blog shows some neat tricks regarding this, but we’ll keep things simple, here.

We’ll just use pip install:

> mkdir bundle\lib
> pip install –no-deps –target=bundle\lib theano
> pip install –no-deps –target=bundle\lib lasagna
> pip install –no-deps –target=bundle\lib six 

In addition to these packages, we’re using a slightly modified version of the lasagne implementation of GoogleNet. We’ll also put that in the lib directory and put our pickle file in the bundle directory:

> dir bundle\
Directory: xyz\bundle
Mode LastWriteTime Length Name
—- ————- —— —-
d—– 10/5/2016 12:25 PM lib
-a—- 6/30/2016 12:19 AM 28006279 trained_googlenet.pkl
> dir bundle\lib
Directory: xyz\bundle\lib
Mode LastWriteTime Length Name
—- ————- —— —-
d—– 10/5/2016 12:21 PM lasagna
d—– 10/5/2016 12:21 PM Lasagne-0.1.dist-info
d—– 10/5/2016 12:25 PM six-1.10.0.dist-info
d—– 10/5/2016 12:11 PM theano
d—– 10/5/2016 12:11 PM Theano-0.8.2.dist-info
-a—- 10/5/2016 12:53 PM 4888 googlenet.py
-a—- 9/9/2016 1:27 PM 3456 googlenet.pyc
-a—- 10/5/2016 12:25 PM 30098 six.py
-a—- 10/5/2016 12:25 PM 31933 six.pyc

Now we’re ready to zip it up:

> zip bundle.zip -r bundle\

Now upload the zip file as a dataset in Azure ML Studio, so that we can use it as a Script Bundle. This zip file will contain a single directory (named “bundle”) that will be extracted as “Script Bundle\bundle” inside the Azure ML working directory.

Next, start setting up your Execute Python Script. You’ll probably want to start by adding the packages you uploaded:

BUNDLE_DIR = os.path.join(os.getcwd(), ‘Script Bundle’,‘bundle’)
LIB_DIR = os.path.join(BUNDLE_DIR,‘lib’)
# Add our custom library location to the python path
env = pkg_resources.Environment([LIB_DIR])
packageList, errorList = pkg_resources.working_set.find_plugins(env)
for package in packageList:
  print “Adding”, package
  pkg_resources.working_set.add(package)
for error in errorList:
  print“Error”, error
 

Now you need to write the model prediction/scoring logic inside Azure ML Studio. For this example, we download the images from an Azure Blob URL but you may be able to use the Import Images module if your images are compatible. For simplicity, this example uses publicly accessible URLs but you can also access private Blob containers from Azure ML. The web service will accept a single column of URLs referencing images to score. We manually entered a sample URL for building the experiment.


Before you can run your model in Azure ML, you may need to make some changes to the way your model is built and executed. The Azure ML environment does not have access to GPU resources nor does it have access to compilers and other development tools.

We had to make changes both in the GoogleNet model definition (bundle/lib/googlenet.py):

# The layers.dnn module requires a gpu on import, but AzureML doesn’t
# provide a gpu so we need to use the non-gpu version
#from lasagne.layers.dnn import Conv2DDNNLayer as ConvLayer
#from lasagne.layers.dnn import MaxPool2DDNNLayer as PoolLayerDNN
fromlasagne.layersimport Conv2DLayer as ConvLayer
fromlasagne.layersimport MaxPool2DLayer as PoolLayerDNN 

As well as in the theano configuration:

# We have to use ‘None’ since we have neither a GPU nor a compiler
theano.config.optimizer = ‘None’ 

Once that’s finished you load the pickle file into your model and apply any necessary image processing to prepare the images for scoring. For more details, check it out in the Cortana Intelligence Gallery.

Our final experiment looks like this:


There you have it: A state-of-the-art deep convolutional neural network model, built with open source tools in Python and deployed as an Azure ML web service!

One caveat: The size of the GoogleNet DCNN and the corresponding pickle file make the experiment slightly too slow to run as a request-response service, but it can be used with the batch API.

Anusua & Jamie
Contact Anusua at trivedianusua23@gmail.com or via Twitter @anurive

 

Resources:

 

Viewing all 13502 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>