Quantcast
Channel: Category Name
Viewing all 5971 articles
Browse latest View live

Office 2019 is now available for Windows and Mac

$
0
0

Today, we are announcing the general availability of Office 2019 for Windows and Mac. Office 2019 is the next on-premises version of Word, Excel, PowerPoint, Outlook, Project, Visio, Access, and Publisher.*

Office 365 ProPlus, the cloud-connected version of Office, delivers the most productive and most secure Office experience—with the lowest total cost of ownership for deployment and management. However, for customers who aren’t ready for the cloud, Office 2019 provides new features and updates to the on-premises apps for both users and IT professionals. Like Windows Long Term Servicing Channel (LTSC) releases, Office 2019 provides a set of valuable enhancements for customers who can’t be cloud-connected or receive regular updates.

The new enhancements in Office 2019 are a subset of a long list of features that have been added to Office 365 ProPlus over the last three years. Office 2019 is a one-time release and won’t receive future feature updates. However, we’ll continue to add new features to Office 365 ProPlus monthly, including innovations in collaboration, artificial intelligence (AI), security, and more.

An image shows a device using PowerPoint in Office 2019.

Office 2019 delivers features across apps to help users create amazing content in less time. In PowerPoint 2019, you can create cinematic presentations with new features like Morph and Zoom. And improved inking features across the apps in Windows—like the roaming pencil case, pressure sensitivity, and tilt effects—allow you to naturally create documents.

An image shows a device using Excel in Office 2019.

Excel 2019 adds powerful new data analysis features, including new formulas and charts and enhancements to PowerPivot.

An image shows a laptop open and a Word document being worked on.

Word 2019 and Outlook 2019 help you focus on what matters most. Learning Tools, like Read Aloud and Text Spacing, make it easier to engage with your content. Focus Mode blocks out distractions and puts your content front and center. And Focused Inbox moves less important emails out of the way—so you can get straight to taking care of business. For a longer list of the new features in Office 2019, see our FAQs.

Office 2019 also includes new IT value for enhanced security and streamlined administration. We introduced Click-to-Run (C2R), a modern deployment technology, in Office 2013, and it’s now used to deploy and update Office across hundreds of millions of devices worldwide. With Office 2019, we’re moving the on-premises versions of Office to C2R to reduce costs and improve security. The advantages of C2R include predictable monthly security updates, up-to-date apps on installation, reduced network consumption through Windows 10 download optimization technology, and an easy upgrade path to Office 365 ProPlus. C2R offers the same enterprise-focused management capabilities as Microsoft Installer (MSI) based products and will also support an in-place upgrade when you move to Office 2019 from older MSI-based products. To learn more, refer to the Office 2019 Click-to-Run FAQ.

The 2019 release of Office products also includes updates to our servers, and in the coming weeks, we will release Exchange Server 2019, Skype for Business Server 2019, SharePoint Server 2019, and Project Server 2019.

Office 2019 is a valuable update for customers who aren’t yet ready for the cloud. And each time we release a new on-premises version of Office, customers ask us if this will be our last. We’re pleased to confirm that we’re committed to another on-premises release in the future. While the cloud offers real benefits in productivity, security, and total cost of ownership, we recognize that each customer is at a different point in their adoption of cloud services. We see the on-premises version of Office as an important part of our commitment to give customers the flexibility they need to move to the cloud at their own pace.

Availability

  • Commercial volume license (trusted) customers can access Office 2019 starting today.
  • Office 2019 will be available to all customers, consumer and commercial, in the next few weeks.

*Project 2019, Visio 2019, Access 2019, and Publisher 2019 are available for Windows only. Office 2019 customers will have access to OneNote. For more details, see Frequently asked questions about OneNote in Office 2019.

The post Office 2019 is now available for Windows and Mac appeared first on Microsoft 365 Blog.


Lilly envisions a workplace where internal and external collaboration help enable innovation and accelerate time-to-market for new medicines

$
0
0

Today’s post was written by Mike Meadows, vice president and chief technology officer at Eli Lilly and Company.

We have an expression at Lilly that inspires our workforce every day: the patient is waiting. This mindset informs our culture, encourages us to work faster, and helps us deliver on the promise to make life better for patients everywhere. It’s behind everything we do at Lilly—from chasing a molecule in a lab to developing new ways to engage with patients, and even troubleshooting a server or network issue.

Our challenge continues to be the discovery of new therapies and accelerating their time-to-market. The process is too slow—and while clearly difficult and complex, our ability to get faster is key. We need to forge new partnerships, comply with a complex regulatory environment, keep quality and safety at the forefront, and reduce costs. All of these seemingly conflicting elements put significant pressure on how we fulfill our promise.

Lilly is responding to these challenges with new thinking across our business process cycle. Through discovery research, product development, manufacturing, and customer engagement, we are working on next-generation capabilities to improve our speed and productivity.

Our workplace environment, and how we interact with one another, is certainly not exempt from such transformation, and in part will be supported by Microsoft 365 cloud technologies. We could see that Microsoft has made great strides in its own transformation to better meet customer needs, and that certainly played a role in our interest in Microsoft technologies for our own workplace transformation goals.

Fostering seamless collaboration and creative teamwork globally is key as we need different ideas to come together to generate new capabilities and products. That’s basically the definition of innovation, and innovation is our lifeblood. With facilities around the world in research and development (R&D), manufacturing, and administrative services, our ability to collaborate across diverse cultures, ways of thinking, and languages has a huge impact on accelerating our product innovation workstreams and our promise to patients.

We’ve been using Microsoft Exchange Online and Office apps for years, but the enhanced interoperation between tools like Microsoft Teams and innovative devices such as Surface Hub and HoloLens has the potential to take collaboration to the next level.

In discovery research today, we have two primary working environments: the laboratory, where scientists in lab coats conduct their experiments in isolation from their colleagues; and the traditional office space occupied by administration and leadership. Not much collaboration happens in real time between these environments. If a scientist has a brilliant idea in the lab, to act on it or share it with colleagues requires them to stop what they’re doing, take off their gear, and return to the office to phone or email someone.

We envision dissolving these physical barriers through something we call “in-lab collaboration”—putting communication and collaboration tools inside our labs that empower scientists to share a creative spark with other scientists across the globe, or with the clinical development manager just upstairs. Using Surface Hubs to whiteboard ideas, making Office 365 video calls, and chatting in real-time through Teams foster innovation at scale and can help ensure that great ideas don’t get lost.

In today’s healthcare environment, we’re working more and more with innovators outside the company itself. We’re looking at new scenarios where Lilly might run experiments in a cost-effective arrangement called “lab-as-a-service,” where we can quickly and seamlessly leverage specialty labs in a lease-like manner from partners as needed, thus expediting R&D. Increasingly, as we follow the science to new experimental designs and new therapeutic technologies (CAR T-cell therapy, cancer vaccines, digital therapeutics, etc.), we are less focused on building durable, static labs. Instead, dynamically accessing elastic lab capabilities will empower our evolving R&D strategy. Our new cloud-based collaboration solutions will go a long way toward supporting virtual teamwork with providers outside our walls.

When we collaborate efficiently, it drives productivity by helping us to work faster. One of the most significant benefits of working faster at Lilly will revolve around effectively changing our workplace processes to use Teams day to day throughout the enterprise. We are conducting approximately 300 Teams pilot projects around the world within IT, research, and marketing departments. When communication channels are oriented to particular project workflows, documents are all in one place. We can add creative flows with team members around the world, opening up collaborative possibilities at Lilly. Teams also facilitates coauthoring—a significant benefit given the abundance of documentation this industry requires. Whenever we can spend less time redlining and passing around versions among people, there will be an efficiency gain in running the business.

As a technologist, I’m always seeking these opportunities for positive change in our work habits. Looking back to when we deployed Exchange Online, we migrated over 70,000 mailboxes for our employees and collaborators in less than nine months with a seamless transition—which also provided them with nearly unlimited storage to improve their work lives. I think we can generate more successes like that with Microsoft 365. We expect that Windows 10, with its ongoing updates and new capabilities, will be a case in point. Additionally, the AI capabilities that are built into Office 365, even for something as routine as automating how we schedule meetings, could be a boon to our culture.

And when it comes to regulatory compliance and security, I have believed for years that we have the opportunity to be more compliant and secure in the cloud, rather than less. The capabilities we see in the Microsoft Cloud environment are the latest confirmation of these instincts. Complying with the regulatory requirements in the life science industry is always a given at Lilly, but Microsoft 365 security features help improve how we meet data privacy and quality requirements. “Security and quality by design” is one of our IT strategy principles, and the Microsoft Cloud is clearly aligned.

A few years ago, Lilly went through a significant period of patent expiration that challenged our business like never before. Our CEO at the time inspired us to double down on innovation, and today we have a strong pipeline of new molecules to help deliver on our purpose. Our current CEO is inspiring an increased sense of teamwork, speed, and productivity. Using services within Microsoft 365 is one component of that drive and will help put us in an even better position to continue the innovation required to deliver on our promise to patients everywhere.

—Mike Meadows

The post Lilly envisions a workplace where internal and external collaboration help enable innovation and accelerate time-to-market for new medicines appeared first on Microsoft 365 Blog.

Azure Container Registry: Public preview of Helm Chart Repositories and more

$
0
0

With Azure Container Registry (ACR), you can easily store and manage container images for Azure deployments in a central registry. Today we are excited to add native Helm repository support and validation workflows, with ACR tasks and Docker’s content trust, to provide a more integrated container lifecycle management experience. 

  • ACR Helm Chart Repositories, available for public preview, provides Kubernetes Helm chart storage as an integrated service for container images and their deployment charts.
  • Docker Content Trust support, now in public preview, provides end-to-end validation of container images, from the time they’re built, to the location they’re deployed.
  • ACR OCI image support is now available in public preview, enabling the next generation of container image formats including BuildKit.
  • ACR tasks, previously announced as ACR build, provides a container execution capability enabling management and modification of the container images in ACR across the lifecycle of the container including build, run, push, and patch.

ACR Helm Repositories - Preview

Helm charts have become the common artifacts to define, install, and upgrade Kubernetes-based applications. Today, we are excited to share that Azure is the first public cloud to support ACR Helm Chart Repositories natively with a container registry, providing integrated security where the same credentials are shared between helm charts and container images. Coupled with ACR Geo-replication, Helm Repositories will be replicated together with multi-region Kubernetes deployments, providing network-close deployments with geo-distributed reliability, and with the same authentication used to pull the referenced images.

ACR Helm Repos GIF

Learn more from the ACR Helm Repositories.

Content Trust - Preview

As customers move to production, end-to-end validation of an image's integrity can be assured with ACR preview support of Docker Content Trust. Users can push signed images to ACR, verifying the validity upon pulling to the destined node.

Further enhancing the integrity of your images, ACR supports limiting the users and services who can push signed images to those who are authorized using the AcrImageSigner role.

For more information, see ACR Content Trust.

Open Container Initiative image format support - Preview

ACR now supports Open Container Initiative (OCI) images, enabling further evolution of containers standards and implementation.

ACR tasks

ACR tasks help you run, build, test, validate, and push container images securely and efficiently. ACR tasks can be manually invoked or triggered automatically, supporting rich parallel and sequential workflows to execute jobs defined within the container image, including the ability to patch container images. ACR tasks also provide isolation, enabling potentially conflicting technologies to be used together. Developers control what and how their tasks run with minimal dependency on specific OS versions or application framework versions.

Here are two examples of how ACR tasks can simplify developer experience from the primary phases of container development to operational patching:

  • Inner loop – As developers seek to validate their code changes, before committing to team source control, they can execute the equivalent of docker build within Azure: az acr build -t web:{{.Run.ID}} .

ACR Build GIF

  • Triggered execution – With an ACR task definition, execution can be triggered based on Git commits and Docker base image updates, with webhooks and Azure Event Grid coming soon. Base image triggered execution enables OS and framework patching, a fundamental challenge with how customers think about security in their deployments once code changes cease.

ACR Base Image Updates GIF

ACR tasks supports single-step definitions based on a Dockerfile, as well as multi-step tasks which you can execute concurrent and parallel workflows of build, cmd, and push steps. Single-step tasks based on a Dockerfile are now generally available, enabling OS and framework patching scenarios in production environments. Multi-step tasks, based on an acr-task.yaml file, are available in public preview.

ACR tasks support Windows and Linux images with ARM images available through QEMU.

For more information, see ACR tasks.

Availability and feedback

ACR tasks, Helm Repositories, and Content Trust are just the latest capabilities added to Azure’s commitment to simplifying your container lifecycle management. We continue to seek your feedback on existing features as well as ideas for product roadmap. Here’s a list of resources how you can use to engage with our team and provide feedback:

  • Roadmap - For visibility into our planned work.
  • UserVoice - To vote for existing requests or create a new request.
  • Feedback - To provide feedback, engage in discussion with the community.
  • Issues - To view existing bugs and issues, logging new ones.

Thanks,

Steve and the entire Azure Container Registry Team

Azure SignalR Service now generally available

$
0
0

Since its introduction five years ago, SignalR has grown to be one of the most popular real-time connection technologies around the world. As applications that use SignalR scale, managing and scaling a SignalR server can become quite a bit of work.

Today, we’re announcing the general availability (GA) of the Azure SignalR Service, a fully managed SignalR service that enables you to focus on building real-time web experiences without worrying about setting up, hosting, scaling, or load balancing your SignalR server. The Azure SignalR Service supports existing libraries for ASP.NET Core, ASP.NET, Java, and JavaScript clients, opening this service to a broad array of developers.

Available today

The SignalR Service has been in public preview since May, and with the general availability of the Azure SignalR Service, customers get:

  • More regions. SignalR Service is now available in the following regions: US East, US East 2, US Central, US West, US West 2, Canada East, West Europe, North Europe, Southeast Asia, Australia East, and Japan East. And in the coming months we will add more regions.
  • More reliability. The Azure SignalR Service GA offers 99.9% availability with a service level agreement for production use.
  • More capacity. During its preview, the SignalR Service was limited to 10K connections in the Standard Tier. With GA, it increases to 100K connections per instance. Through sharding or partitioning, users can configure multiple instances to handle an even larger scale.

Of course, we will continue to provide Free Tier for trial and prototyping.

The generally available service also supports more REST APIs to enable adding users to a group, and to improve the broadcast scenario support and support for port 443 (secure HTTP).

Along with the new capabilities, we’re also previewing an Azure Functions binding. Serverless applications have many unique use cases including many real-time scenarios. With the Azure Functions binding, the Azure SignalR Service can be used seamlessly in a serverless environment on Azure. The Azure Functions binding is open source and hosted by Microsoft Azure in GitHub repository.

Netrix immediately saw the benefits of Azure SignalR Service and became an early adopter while it was in preview. Netrix built a customized cost-estimation system for the automotive industry and used Azure SignalR Service to add a new capability that notifies browsers of completed commands in real time.

As Lars Kemmann, Netrix Solution Architect, put it, “By using Azure SignalR Service, we gain the best practices of built-in security and scalability—a comfort for our clients and a huge win for us.”

Of course, Azure SignalR Service lends itself to much more than complex business applications in the automotive industry. When GranDen, a Taiwan based gaming company, wanted to bring real-time communication and a new gaming concept involving Augmented Reality to market to enrich player experience, they turned to Azure SignalR Service. As Isak Pao, GranDen's CTO put it, “We reached out to competing cloud service providers. No one else offered us something comparable to Azure SignalR Service. Without it, we’d have to build so many virtual machines that we wouldn’t be able to leverage WebSocket in real time.” See the GranDen case study for more information. 

Try Azure SignalR Service today

If you want to learn more about SignalR Service, give it a try. You can get started for free, and of course we have plenty of documentation and a simple quickstart. If you have any questions, feature request, or you want to open an issue ticket, please reach out through any channel listed above.

We can’t wait to see what you’ll build with Azure SignalR Service!

Release models at pace using Microsoft’s AutoML!

$
0
0

What is the real problem?

When creating a machine learning model, data scientists across all industry segments face the following challenges: Defining and tuning the hyperparameters, and deciding which algorithm to use.

If a customer plans to create a ML model that will predict the price of a car, the data scientist will need to pick up the right algorithm and hyperparameters. Narrowing down to the best algorithm and hyperparameters is a time-consuming process. This has been a challenge for Microsoft’s customers across all verticals, and Microsoft recently launched an Azure Machine Learning python SDK that has AutoML module. The AutoML module helps with not only defining and tuning hyperparameters but also picking the right algorithm!

What is AutoML?

AutoML helps create high quality model using intelligent automation and optimization. AutoML will figure out the right algorithm and hyper parameters to use. It is a tool that will improve the efficiency of data scientist!

AutoML

AutoML’ s current capabilities

AutoML currently supports the problem spaces regression and classification. Additional problem spaces such as clustering will be supported in future releases. From a data pre-processing perspective, AutoML allows one hot encoding (converting categorical variable to binary vector) and assign values to missing fields. It currently supports Python language and scikit-learn framework. For training the model, one could use laptop/desktop, Azure Batch AI or Databricks or Azure DSVM. All scikit-learn supported data formats are currently supported.

High level steps to execute AutoML methods

a) Create and activate a conda environment

conda create -n myenv Python=3.6 cython numpy

Python

  conda activate myenv

b) Pip install the Azure ML Training SDK

ML Training

c) Launch the Jupyter notebook

Jupyter

d) Setup the machine learning resources through API

  Create workspace Additional components are created in the resource group as part of executing the commands in the below cell
AzureML

automlblac

You can write the workspace information to a local config which aids in loading the config to other Jupyter notebook files if required

Config

Sample_Project is created…

Sample_ProjectSample_Project2

e) Invoke AutoML fit method

AutoMLClassifier(params) -> Specify # of Iterations, Metric to optimize, etc.

Example

automl_classifier = AutoMLClassifier(experiment = experiment,
                                      name = experiment_name,
                                      debug_log = 'automl_errors.log',
                                      primary_metric = 'AUC_weighted',
                                      max_time_sec = 12000,
                                      iterations = 10,
                                      n_cross_validations = 2,
                                      verbosity = logging.INFO)

AutoMLClassifier.fit(X, Y,….) -> Intelligently generates pipeline parameters to train data

Example

local_run = automl_classifier.fit(X=X_digits, y=y_digits, show_output=True)

f) Check the run details and pick the optimal one

Run Details

g) The final step is to operationalize the most performant model

Availability

The SDK will be publicly available for use after the Ignite conference, which ends on September 28, 2018. It will be available in westcentralus, eastus2 and west Europe to name a few Azure regions.

Conclusion

AutoML is a leap towards the future of Data Science. It is bound to not only make data scientists working for any organization efficient because AutoML will automatically run multiple iterations of your experiment but also enable new or experienced data scientists to explore different algorithms and select and tune hyperparameters because AutoML will help do this. It is worth noting that the data scientists can start on a local machine leveraging the Azure ML Python SDK which has AutoML. Data scientist can then use the power of cloud to run the training/iterations using technologies such as Azure Batch AI or Databricks or Azure DSVM.

Further reading

Some of the modules with the Azure ML Python SDK are already in public preview and you can find more details by reading our documentation. If you are new to data science, Azure ML studio is a great starting point.

Microsoft’s new neural text-to-speech service helps machines speak like people

$
0
0

Microsoft has reached a milestone in text-to-speech synthesis with a production system that uses deep neural networks to make the voices of computers nearly indistinguishable from recordings of people. With the human-like natural prosody and clear articulation of words, Neural TTS has significantly reduced listening fatigue when you interact with AI systems.

Our team demonstrated our neural-network powered text-to-speech capability at the Microsoft Ignite conference in Orlando, Florida, this week. The capability is currently available in preview through Azure Cognitive Services Speech Services.

Neural text-to-speech can be used to make interactions with chatbots and virtual assistants more natural and engaging, convert digital texts such as e-books into audiobooks and enhance in-car navigation systems.

The milestone in text-to-speech joins a string of breakthroughs that our group has achieved over the past two years, including human parity in conversational speech recognition and human parity in machine translation.

Neural TTS

Our text-to-speech capability uses deep neural networks to overcome the limits of traditional text-to-speech systems in matching the patterns of stress and intonation in spoken language, called prosody, and in synthesizing the units of speech into a computer voice.

Traditional text-to-speech systems break down prosody into separate linguistic analysis and acoustic prediction steps that are governed by independent models. That can result in muffled, buzzy voice synthesis. Our neural capability does prosody prediction and voice synthesis simultaneously. The result is a more fluid and natural-sounding voice.

Sentence Recording Neural TTS
The third type, a logarithm of the unsigned fold change, is undoubtedly the most tractable. sound sound
As the name suggests, the original submarines came from Yugoslavia. sound sound
This is easy enough if you have an unfinished attic directly above the bathroom. sound sound

By using the computational power of Azure, we can deliver real-time streaming, which is useful for situations such as interacting with a chatbot or virtual assistant. The capability is served in the Azure Kubernetes Service. This ensures high scalability and availability and gives customers the ability to use neural text-to-speech and traditional text-to-speech from a single endpoint.

The preview service is currently offering two pre-built neural text-to-speech voices in English – Jessa and Guy. More languages will be available soon, as well as customization services in 49 languages for customers who want to build branded voices optimized for their specific needs.

To learn more, visit us.

Announcing Azure user experience improvements at Ignite 2018

$
0
0

Hello Azure friends! Today we are proud to share a new set of improvements to the Azure user experience. The changes included in this blog post are only a subset of the multiple improvements that we are delivering in this release. All these changes have been motivated by the great feedback that you have been giving us so please keep the feedback coming!

Azure user experience refresh

We've introduced modern design updates to refresh the look and feel of the portal to increase productivity, improve accessibility, and make better use of your screen real estate.

These updates have been carefully designed to address the feedback that you have been giving us. Some key improvements include:

  • Improved information density and better use of screen real estate (e.g. vertical menus fit more items).
  • Simplified visuals that reduce clutter, remove unnecessary lines/decorations, and create better flow between different areas in the UI.
  • More intuitive organization of information.
  • Better highlighting of key navigational elements like global search and breadcrumbs.
  • Improved accessibility, updated colors that improve contrast ratios, and subtle updates that align our fonts across the portal.
  • Support for usage over long periods of time (avoid eye-strain).

We've made these design updates without changing our existing interaction model, so you don’t need to re-learn how to use the product. You can continue using the patterns and interactions that you already know and love with all the benefits mentioned above. Let me know what do you think!

Dashboard_before-after-6

VM-blade-before-after-6

Dashboard and Virtual Machine blade shown before and after the update

Account, subscription, and directory management improvements

Many of you manage multiple personal and professional Azure accounts. In this release we have a preview of an experience that allows you to switch between multiple accounts in the same browser instance, as can be seen in the image below:

Slide2

Managing multiple accounts in the Azure Portal

This experience is only available in the preview environment. Try it out and let me know what you think!

In preparation for this experience we have moved the subscription filter to the top navigation bar:

Slide3

Global subscription filter and directory selection

As part of this change we have improved existing capabilities and added features that you have been asking for:

  • Global subscription filter in top navigation bar.
  • Configure the default directory (top ask).
  • Search and sort the list of directories.
  • Set your favorite directories.

Slide4

    Subscription filter and directory selection panel with description of available functionality

    Updates to resource creation and deployment experience

    We are continuing with the simplification of resource creation started at Build 2018 with the AKS and IoT Hub create experiences. These experiences make better use of the screen real estate by reorganizing the create wizards from a vertical panel to horizontal tabs with meaningful names and descriptions. The new create experience has been designed with the following principles:

    • Consistent experience across different resources, learn one and apply to all.
    • Better use of the screen real estate.
    • Provide a clear set of steps, each of which must have a clear explanation of expectations and link to docs to learn more.
    • The first tab is always called Basic and also acts as Quick create: You can just fill out that tab and create your resource.
    • Allow adding tags to the resource being created.

    As a result, we expect:

    • Simpler and easier to learn resource creation experiences.
    • More and richer configuration options.
    • Reduced time on task to create a resource. Our early iterative usability studies show a considerable increase in task completion and a decrease in time on task.

    In this release we have applied these principles to Virtual Machine and Storage account creation experiences.

    Let’s talk about virtual machines creation. In this case we not only did apply the principles mentioned above but also re-designed the flow and improved the options available when creating Virtual Machines in the portal such as multiple data disks, OS options, initialization, tagging, and more. All these new settings are optional so even though you have more control over the resource that you are creating you can also enjoy a very simple and fast experience if that is what you are looking for (quick create). The animated gif below shows how you can start deployment of a Virtual Machine in a few seconds!

    Figure5-final

    Start deployment of a virtual machine in a few seconds!

     

    Once the resources are created we introduced a deployment experience where we you can see status of the resources being created, useful information about the create operation that you are performing, and access the actual template being deployed:

    Slide6

    Deployment in progress (automatically shown after creation)

    When the creation experience succeeds we provide a button to go to the created resource to start managing it, in this case the VM.

    Slide7

    Successful deployment (notice the button to directly navigate to the resource)

    When the creation fails we present you with a consistent error experience to help you understand the cause of the error and take an action. In that experience you can see a pretty printed version of the error or just see the actual JSON coming from the backed to get every single detail about the failure.

    Slide8

    Failed deployment - Clicking in the red banner at the top opens a panel with details about the error

    The Storage create experience has also been updated to a similar experience. The image below shows the storage account screen:

    Slide9

    Storage account creation experience

    Notifications and Activity logs

    The notifications panel has been updated to improve how data is displayed in terms of information density, available data, and interactions. In addition to these changes we started on a journey to connect Notifications and Activity Logs since many entries in both experiences come from the same data source. The first step is showing a link to the activity logs at the top of the notifications list or when the notifications list is empty.

    Slide10

    Updated notifications experience

    Azure Activity Log's UI has been also improved. For people that are not familiar with the Activity Log, it is log that provides insight into subscription-level events that have occurred in Azure. This includes a range of data, from Azure Resource Manager operational data to updates on Service Health events. The new experience has been designed for productivity, use of the screen real-estate, and performance.

    Figure11

    Updated activity log experience

    In addition to looking at the logs you also can download them as CSV and see Quick insights, which is a set of well-known queries (errors, deployments, and etc.) over the last 24 hours.

    Storage explorer in Browse

    Storage Explorer is now easier to find since it is available as a resource in Browse, available in the All Services list and via global search. You can now easily manage multiple storage accounts under different subscriptions in one view.

    Figure12

    Storage explorer available in all services menu (and global search)!

    Azure Advisor integration in the VM experience

    Azure Advisor notifications have been directly integrated in the virtual machine overview page in the form of a status bar that when clicked takes you directly to Azure Advisor to see your recommendations and take action.


    Slide18

    Azure Advisor in the Virtual Machine blade (blue banner at the top)

    Azure Quickstart Center update

    Quickstart Center is an experience that we launched as a preview for Build with the goal of helping customers that are new to the platform take their first steps in Azure. In this release we have simplified the experience based on your feedback:

    Slide13

    QuickStartCenter goal selection

    We have also extended the features of Quickstart Center by adding playbooks, which are sets of instructions to help you set up your Azure environment with Microsoft recommended best practices and governance guidelines. We help you with topics like managing access through RBAC, organizing and tagging your resources, securing your resources, enforcing compliance, and monitoring the health of your Azure environment.

    Slide14

    Enterprise readiness playbook

    Improvements to All Resources view (preview)

    Azure Resource Graph (ARG) provides a fast and rich way to query through large sets of Azure Resources. In this release we will be previewing an experience that uses ARG in the All Resources blade, one of the most popular entry points in the popular.

    This new experience is not only faster and design to work with a very large set of resources but also explores different ways of navigating the results set via facets. We have also integrated ARG in the global search, so you can enjoy a faster experience when using the search bar at the top of the portal.

    Slide16

    Preview of the updated all resources experience. We are experimenting with several options and your feedback will be key to help us create the right experience!

    Please note that the UI for this experience is evolving. We look forward to your feedback to help us design a great resource browsing experience for Azure, so please feel free to reach out after you try this new experience and let me know your thoughts.

    Improvements to the Azure Mobile App

    One of our top asks has been the ability to manage role-based access control from the Azure mobile app. Giving you access to this critical function while on the go is a powerful feature. While away from a computer, a user may not be able to take care of all mission critical scenarios—but by having the Azure mobile app, they will be able to give coworkers the authorizations they need to take care of any situations that may arise.

    Slide17

    BAC in Mobile (iOS and Android)

    Let us know what you think!

    We’ve gone through a lot of new capabilities and still did not cover everything that is coming up in this release! The team is always hard at work focusing on improving the experience and is always eager to get your feedback and learn how can we make your experience better. Feel free to reach out directly to me at lwelicki@microsoft.com with your feedback or any thoughts about Azure user experience.

    Let’s work together to build the best cloud experience!

    SAP at Microsoft Ignite: Announcing SAP Data Custodian for Azure

    $
    0
    0

    Enterprises are accelerating their digital transformation. We have seen this momentum over the last year as evidenced by customers moving their mission critical SAP applications to Azure. This digital transformation is being powered by the adoption of SAP’s intelligent ERP, S/4HANA, running on the agile cloud infrastructure offered by Azure. For example, Daimler AG is transforming its mission critical procurement system with S/4HANA and chose Azure for its agility, cost savings, and speed of deployment.

    Since last November, both Microsoft and SAP have been embarking on our own journeys to run internal SAP S/4HANA systems on Azure. We announced at SAP’s Sapphire NOW that Azure supports the largest scale and broadest choice for SAP HANA including our Azure M-series VMs and BareMetal offerings. In addition to this, we have launched a managed services option for customers with SAP’s HANA Enterprise Cloud with Azure and enabled SAP developer productivity with the general availability of SAP’s Cloud Platform on Azure.

    Microsoft and SAP share a common goal of enabling customers to build secure and compliant solutions in this journey. Microsoft is a leader in protecting customer data in the cloud and Microsoft Azure offers a comprehensive set of security and compliance tools along with 85 compliance offerings, including tools and services to help customers meet GDPR compliance. SAP also has a long history of delivering Governance, Risk, and Compliance (GRC) solutions.

    Today, I’m excited to announce that SAP Data Custodian, a SaaS offering from SAP, will soon become available on Azure. SAP Data Custodian combines Azure’s built-in compliance controls and the deep expertise of SAP to provide customers end-to-end visibility of their SAP data on Azure and an easy to use set of data governance controls. This will help customers to fulfill their responsibility for data governance, segregation of oversight duties, and achieve independent verification.

    If you would like to learn more about running SAP solutions on Azure and our partnership efforts with SAP, please attend these SAP on Azure sessions or stop by the SAP on Azure booth in the expo hall for a demo of SAP HANA and SAP Data Custodian on Azure.


    Introducing Azure Premium Blob Storage (limited public preview)

    $
    0
    0

    Today we are excited to announce the limited public preview of Azure Premium Blob Storage, which introduces a new performance tier in Azure Blob Storage, complimenting the existing Hot, Cool, and Archive tiers. Data in Premium Blob Storage is stored on solid-state drives, which are known for lower latency and higher transactional rates compared to traditional hard drives.

    Premium Blob Storage is ideal for workloads that require very fast access times. This includes most scenarios with a human in the loop, such as interactive video editing, static web content, online transactions, and more. It also works well for workloads that perform many relatively small transactions, such as capturing telemetry data, message passing, and data transformation.

    Our internal testing shows that both average and 99th percentile server latency is significantly better than our Hot access tier, providing faster and more consistent response times for both read and write across a range of object sizes. Your application should be deployed to compute instances in the same Azure region as the storage account to realize low latency End-to-End.

    Premium Blob Storage is available with Locally-Redundant Storage and comes with High-Throughput Block Blobs (HTBB), which provides a) improved write throughput when ingesting larger block blobs, b) instant write throughput, and c) container and blob names have no effect on throughput.

    You can store block blobs and append blobs in Premium Blob Storage. To use Premium Blob Storage you provision a new ‘Block Blob’ storage account in your subscription and start creating containers and blobs using the existing Blob Service REST API and/or any existing tools such as AzCopy or Azure Storage Explorer.

    Pricing

    Premium Blob Storage has higher data storage cost, but lower transaction cost compared to data stored in the regular Hot tier. This makes it cost effective and can be less expensive for workloads with very high transaction rates. Check out the pricing page for more details.

    Object tiering

    At present data stored in Premium cannot be tiered to Hot, Cool or Archive access tiers. We are working on supporting object tiering in the future. To move data, you can synchronously copy blobs from using the new PutBlockFromURL API (sample code) or a version of AzCopy that supports this API. PutBlockFromURL synchronously copies data server side, which means that the data has finished copying when the call completes and all data movement happens inside Azure Storage.

    Limited preview region availability

    Premium Blob Storage preview will be available in US East 2, US Central and US West regions.

    Azure Portal

    The Azure Portal will not support Premium Blob Storage during the limited public preview. You will not be able to create and manage storage accounts for Premium Blob Storage using the portal. The portal will enumerate these accounts, but you will not be able to manage them using the portal.

    How to sign-up

    To enroll in limited public preview, you will need to submit a request to register this feature for your subscription. After your request is approved, you create a Premium Blob storage account (see below). As with most previews, this feature should not be used for production workloads until it reaches GA.

    To submit a request, run the following PowerShell commands to login to your subscription and register the feature:

    Connect-AzureRmAccount -SubscriptionId <subscriptionID>
    
    Register-AzureRmProviderFeature -FeatureName premiumblob -ProviderNamespace Microsoft.Storage

    It should take 24-48 hours to process the request. You can check the status of your request by running the following Powershell command:

    Get-AzureRmProviderFeature -FeatureName premiumblob -ProviderNamespace Microsoft.Storage

    How to create a storage account

    Once your request has been approved, you can create block blob storage accounts.

    To create a block blob account, you must first install the PowerShell AzureRm.Storage preview module.

    Step 1: Ensure that you have the latest version of PowerShellGet installed

    Install-Module PowerShellGet –Repository PSGallery –Force

    Step 2:  Install the AzureRm.Storage module

    Install-Module AzureRm.Storage –Repository PSGallery -RequiredVersion 6.0.0-preview –AllowPrerelease –AllowClobber –Force

    Step 3: Open a new PowerShell console and login with your Azure account

    Login-AzureRMAccount

    Note: If you have an AzureRm.Storage module installed with a higher version, you need to manually import the AzureRm.Storage preview module:

    Import-Module AzureRM.Storage -RequiredVersion 6.0.0

    Once the PowerShell preview module is in place you can create a block blob storage account:

    New-AzureRmStorageAccount -ResourceGroupName <resource group> -Name <accountname> -Location <region> -Kind "BlockBlobStorage" -SkuName "Premium_LRS"

    Valid regions are: eastus2, centralus, and westus

    Feedback

    We would love to get your feedback at premiumblobfeedback@microsoft.com.

    Conclusion

    We are very excited about being able to deliver Azure Blob Storage with low and consistent latency with Premium Blob Storage and look forward to hearing your feedback. Also, feel free to follow my Twitter for more updates.

    Cheers,

    Claus

    Navigation Update for Azure DevOps

    $
    0
    0
    Back in June of this year, we rolled out the first iteration of our new navigation model for Azure DevOps. We’ve spent the summer improving that experience based on the feedback many of you have provided. Thank you! Our next step is to move from the new model being a preview, to becoming the navigation for... Read More

    Start using Microsoft 365 to accelerate modern compliance

    $
    0
    0

    Today’s post was written by Rudra Mitra, Partner Director of Microsoft 365 Security and Compliance.

    With more than 200 updates from 750 regulatory bodies a day, keeping up to date with all the changes is a tremendous challenge. As privacy regulations, like the General Data Protection Regulations (GDPR), continue to evolve, compliance requirements can seem complex to understand and meet. However, when you store your data in the Microsoft Cloud, achieving compliance becomes a shared responsibility between you and Microsoft. Take the National Institute of Standards and Technology (NIST) 800-53 security control framework as an example—Microsoft helps you take care of 79 percent of the 1,021 controls, and you can focus your efforts on the remaining 21 percent. Additionally, Microsoft provides you with a broad set of security and compliance solutions to more seamlessly implement your controls.

    Take a look at how Johnson Controls, an energy and technology company, uses Microsoft 365 solutions to manage massive amounts of data and meet their security and compliance needs.

    In addition to a number of investments made over the last year to support GDPR compliance and the privacy rights of individuals, we hear from you that organizations need more built-in capabilities to proactively achieve modern compliance. Therefore, we are working diligently to bring more artificial intelligence (AI) powered, user-centered, and integrated compliance solutions into Microsoft 365. Today, we’re announcing new and expanded capabilities that support your organization’s compliance journey.

    Assess and manage your compliance for GDPR and more

    Conducting ongoing risk assessments of your information management systems is a crucial activity to help your organization understand the effectiveness of security, compliance, and privacy controls; recognize the risks; and make appropriate plans to remediate when needed.

    We expanded Compliance Manager to offer 12 assessments, including security control frameworks, such as NIST CSF and CSA CCM, and regulated industry standards like FFIEC and FedRAMP. These assessments can help you proactively enhance your data protection controls and meet compliance obligations. Learn more about this update in our Tech Community blog.

    Screenshot shows a Standard Assessment in Compliance Mananger.

    Harness intelligence to protect and govern your most important data

    To ensure effective protection and governance around your most important data, you should implement intelligent solutions and processes to automatically discover, classify, label, and monitor this data—no matter where it lives or travels.

    The unified labeling experience in Microsoft 365, now generally available, provides organizations with a more integrated and consistent approach to creating, configuring, and automatically applying comprehensive policies to protect and govern data across devices, apps, cloud services, and on-premises locations. This new approach gives customers a single destination to create and configure data sensitivity labels for both Azure Information Protection and Office 365, so you can set up sensitivity and retention labels and policies in the same place. These labels can be used to enforce policy across our information protection services—for example, Windows Information Protection will be able to understand the presence of a data sensitivity label in a document and apply policy to protect that data on the device.

    Image shows labeling capabilities in Security and Compliance.

    The unified labeling experience is complemented by user experiences built into Office apps and Windows—no plug-ins or add-ons required. This native labeling is now available in public preview for Office apps on Mac, iOS, and Android—giving customers a labeling experience they are familiar with if they are already using the Azure Information Protection client on Windows. We also support a growing ecosystem of third-party apps and security solutions. You can now preview the ability to open protected PDF files directly within Adobe Acrobat on Windows.

    Additionally, our Information Protection SDK is now generally available, making it easy for ISVs and third-parties to build labeling and protection experiences into their apps and services.

    In addition to the new unified labeling experience, we have several updates to Microsoft 365 data governance capabilities. First, you can now auto-apply a label to Exchange Online content and to files associated with a specific content type in SharePoint Online, such as tax documents or human resources information. Once you map a content type to a retention label with an auto-classification query, you can auto-apply retention and deletion policies to all files with that content type. This new capability enables you to align labels to your existing information architecture and governance policies.

    We also made it easier for you to configure complex record retention schedules for your departments, locations, and categories with the new file plan capability, now available in public preview. The file plan capability allows you to import or export the retention plan as a template and bulk edit labels, providing a more robust way to manage your record retention policies.

    Image shows a file import being validated in Security and Compliance.

    Finally, long-term audit log availability is now coming to public preview for Microsoft 365 and Office 365 E5 subscribers. This is an important update for organizations that need long-term access to audit logs for regulatory or security purposes. The audit log availability has now increased from 90 days to one year.

    Learn more about all of these data governance updates at the Tech Community blog.

    Enforce zero-standing access to your sensitive data

    For organizations looking to protect and control their data, governing privileged access can reduce the risk of data compromise and help meet compliance obligations regarding access to sensitive data. Built on the principle of no standing access, where admins do not have access by default, we are announcing the general availability of privileged access management in Office 365. This feature enables organizations to govern privileged access by requiring admins to go through an approval process and gain temporary permissions to perform high-risk tasks like a journal rule, which is a task that can expose and exfiltrate data by copying messages to an external shadow mailbox. Once an admin elevates permissions to execute the high-risk task, it can be automatically or manually be approved before access is granted—either way all activities are logged and auditable.

    Privileged access management is available in the Microsoft 365 Admin Center, and organizations can now also manage Customer Lockbox requests and Data Access requests from Azure Managed Apps from a single management pane for privileged access to your Microsoft 365 data. Read more details on the Tech Community blog.

    Image shows an approved Privileged Access request in Outlook.

    Proactively safeguard your sensitive emails with insights

    We’re also sharing a few new enhancements in Office 365 Message Encryption that enable organizations to more seamlessly collaborate on and proactively protect their sensitive emails. First, to further enable collaboration for consumer recipients, Office 365 Message Encryption now offers organizations the option to control whether attachments should be encrypted for the encrypt-only template, so that recipients can have full permissions to share the attachment with anyone—this feature is generally available today.

    To help IT admins proactively protect and control sensitive emails, organizations can monitor encrypted messages by viewing reports on encrypted messages. The new reporting dashboard in public preview provides granular details such as message ID, along with sender and recipient information. IT admins can use the insights to proactively adjust and apply policies to sensitive emails. To learn more about these capabilities and more, read the Tech Community blog for details.

    Image shows a message encryption report in Security and Compliance.

    Streamline compliance investigations process with enhanced Search & Tagging capabilities

    Litigation and regulatory demands, like GDPR, are requiring organizations to be more efficient at discovering information in a timely manner. Organizations also have a responsibility to support internal investigations such as corporate fraud, discrimination, work rule violation, and other misconduct.

    To further streamline the process of identifying relevant data, the new Search & Tagging feature in Advanced eDiscovery, now generally available, enables you to find the most relevant information within an existing eDiscovery case, using keywords, metadata, and analytics capabilities like Themes and Relevance Score. Additionally, you can preview and organize the data using case-specific tags, which can help you save time and cost when reviewing documents. Learn more about Search & Tagging.

    Address global data residency needs with Multi-Geo Capabilities

    Increasingly, governments around the world are enacting laws that mandate data residency for cloud data. Global companies are often challenged with digitally transforming with the cloud and staying in compliance with their data residency requirements.

    Image shows Multi-Geo capabilities in Office 365.

    Multi-Geo Capabilities in Office 365 can help address these concerns and make it easy for companies to meet their global data residency needs and empower every employee with a modern productivity experience. Earlier this year, we launched Multi-Geo Capabilities for Exchange Online and OneDrive, giving you controls over the country/region where each employee’s mailbox content and files are stored at-rest.

    In 2019, we’re rolling out Multi-Geo Capabilities in SharePoint Online and Office 365 Groups, letting you control the country/region of SharePoint Online Team Sites and Office 365 Group content such as files, associated SharePoint Sites, and group mailboxes. Learn more about Multi-Geo Capabilities.

    Learn more about the Microsoft 365 Compliance solutions

    Our investment in data privacy and compliance is beyond the GDPR, and we want to help you make compliance a less burdensome process, so you can focus on your core work, to empower employees to achieve more. You can find more resources below to learn more about the compliance solutions Microsoft 365 provides:

    The post Start using Microsoft 365 to accelerate modern compliance appeared first on Microsoft 365 Blog.

    A new vision for modern work management with Microsoft Project

    $
    0
    0

    At Microsoft, our mission is to empower every person and every organization on the planet to achieve more. Today, I’m pleased to announce a new vision for Microsoft Project and three new services designed to help people work together more efficiently.

    Over the last few years, the basic organizing concept for work—the project—has changed significantly. Once a well-defined set of tasks, people, and milestones, today’s projects take on many shapes and sizes. They can be formal or ad hoc. They can last a few hours or go on for years. They can be assigned to a small group or cut across many large organizations.

    As a result, whether we realize it or not, we have all become project managers. And to stay on top of the ever-shifting requirements of our day-to-day jobs, we need tools that are simple enough for anyone to use, flexible enough to support any project type, powerful enough to handle initiatives of any size, and transparent enough to provide visibility across the organization.

    Modern work management

    Introducing modern work management with Microsoft Project. It all starts with Home, a new service that allows you to see and manage all your projects in one place. From Home, you can easily create projects using the new project management service. Versatile by design, this new service is designed to support any role, skill level, or project type. These new Project services are born in the cloud, so teams can always access the same data—no matter where they are or what device they’re using. And they include a comprehensive set of capabilities, including resource and financial management and time and expense tracking. Future releases will allow customers to connect the full power of the Project desktop app to the service.

    Work is happening across your organization all the time, and it can be hard to keep track of the details. The new Roadmap service will give you a cross-functional, big picture view of all the work in process. With Roadmap, it doesn’t matter whether your teams are using Microsoft Project or Azure DevOps (formerly VSTS). You can create timeline views of multiple projects—complete with key dates and milestones—so that all the work is visible. And in future releases, we’ll add support for Planner and third-party services like Jira, making Project your one-stop-shop for managing work across the organization. Roadmap is the first capability of Portfolio, a set of program and portfolio management services designed to be simple, visual, and intuitive.

    The power of the Microsoft platform

    We’ve built these new Project services to take advantage of the strengths of the broader Microsoft platform. In fact, all three new services are built on the Microsoft Common Data Service for Apps platform. This solid foundation provides a long list of benefits, including access to PowerApps and Microsoft Flow for custom business solutions and integration with Power BI for advanced analytics and reporting.

    What’s next?

    These new services will be introduced in a series of releases. Home is generally available today, the first release of Roadmap will be available early next year, and the first release of the new project management service will be available in the first half of next year. All three services will be packaged as a part of the Project Online Professional and Project Online Premium subscriptions, so current subscribers can take advantage of the new capabilities at no additional cost. And while these new services will become our primary project management services over time, customers who are already using Project Online can continue to do so with confidence. We are committed to your success no matter what Project service you choose to use.

    We’re very excited to see what individuals, teams, and organizations will achieve with these new services in Microsoft Project!

    The post A new vision for modern work management with Microsoft Project appeared first on Microsoft 365 Blog.

    Azure Pipelines is the CI/CD solution for any language, any platform, any cloud

    $
    0
    0

    As previously announced, Azure Pipelines is the Continuous Integration and Continuous Delivery (CI/CD) solution for any language, application, or platform. Azure Pipelines has evolved in last couple of years as we are seeing customers use this service for both enhanced CI/CD functionality, and as a dedicated CI/CD service to use in their DevOps toolchains.

    Simple Pipeline to build and deploy

    Simple Pipeline

    Any language, any platform, any cloud

    Azure Pipelines’ key value proposition is to build, test any language, and deploy to any platform or any cloud.

    Using Azure Pipelines you can build and test any language including Go, Node.js, Python, Java, PHP, Ruby, C/C++, .NET, Android, and iOS apps. Azure Pipelines supports hosted agents for Windows, Mac, and Linux apps without you worrying about the infrastructure for building and testing applications. You can configure CI whether your application code is stored in Azure Repos, GitHub, GitLab, or Bitbucket.

    Once the application is built, you can use Azure Pipelines to target any platform including Linux/Windows VMs, Kubernetes, Azure PaaS Services. You can also target any cloud, such as AWS for GCP. 

    Kubernetes deployments

    Azure Pipelines can be used to easily setup a reliable continuous delivery service for deploying your containerized apps to any Kubernetes cluster, running in any cloud.

    The built-in Docker support helps you use Azure Pipelines to build and push your Docker images to Azure Container Registry without needing to set up an infrastructure of your own. However, the support is not limited to just Azure. Azure Pipelines can also be used with any container registry like Docker Hub. You can build either Windows or Linux container images.

    Once the container image is available in the registry, Azure Pipelines supports deploying apps to an Azure Kubernetes service cluster by using Helm or Kubernetes spec files. These files can be stored as code, using Git as the source of truth for versioning environment configurations as well as applications.

    Kubernetes deployment configuration image

    Kubernetes deployment configuration

    VM deployments

    Azure Pipelines provides multiple ways of deploying to a VM using Deployment Groups or using traditional on-premises VM managers like SCVMM or VMWare.

    A deployment group is a logical set of deployment target machines that have agents installed on each one. Deployment groups represent the physical environments - for example, "Dev", "Test", "UAT", and "Production". In Azure Pipelines, you can configure a job with a set of steps or scripts to target one or more deployment groups to perform an application update, database update, or even a configuration change.

    Rolling updates

    Deployment group supports deployment strategies like rolling update behind load balancer. Deployment group can be used to target Windows VM or Linux VM running in any cloud, or a VM running inside an enterprise boundary. You can see in the below image how we are updating VM images 20 percent at a time using the Rolling update strategy.


    VMs rolling update image

    VMs rolling update

    On-premises deployment

    For traditional on-premises deployment, you can deploy directly to the VMs or you can use any VM manager solution like SCVMM or VMWare to provision, deploy, or manage the environments. The SCVMM extension for Azure Pipelines helps you provision, manage, and deploy to your on-premises infrastructure. You can dynamically provision new virtual machines in System Center Virtual Machine Manager (SCVMM) and deploy to those virtual machines using Azure Pipelines. 

    Multi-Cloud Deployments

    Multi-cloud is becoming critical. Azure Pipelines can deploy to Azure, AWS, and GCP, and via our extensible tasks, to other clouds as well. Most of Azure deployment tasks are built-in and available default in the product, you can use them to deploy to Azure Web Application, Azure Web App for Containers or Azure SQL Database. Azure Pipelines has an AWS extension available to deploy to any AWS service – AWS Elastic Beanstalk, AWS EC2 with CodeDeploy and AWS CloudFormation stacks.

    Progressive delivery

    In Azure Pipelines you can use stages, gates, and approvals to control the blast radius of the deployment with standard patterns for progressive exposure.

    • Azure Pipelines help you model simple to complex multi-stage orchestration workflows based on your application and customer delivery requirements. You can deploy to Dev/QA environments on a continuous basis to make sure you are hitting the right quality before taking them to the production/customer environment.
    • Approvals and Release gates give you additional control over the start and completion of the deployment pipeline to model all quality gates needed for your automated deployments.
    • Using Azure Pipelines, you get full traceability from deployment, build, commit, and work item so you know what features/bugs are getting deployed at each stage. You can use this to easily create release notes for your product.
    • Azure Pipelines can even deploy from other CI systems, like Jenkins. Azure Pipelines also integrates well with other version control and issue tracking systems to get the same end to end functionalities including traceability, branch conditions, and triggers.

    Free for Open Source Projects

    Finally Azure Pipelines provides a great offer for Open Source Projects by providing unlimited build minutes and 10 free parallel jobs, and integrates well with Github repos. Using the Azure Pipeline app on Github Marketplace, you can easily create and setup a CI/CD pipeline for any Github repo.

    Please try out Azure Pipelines and share your feedback using @AzureDevOps, Developer Community, or comment on this post.

    To learn more about Azure Pipelines, see our documentation for tutorials, concepts, and other learning materials.

     

    Gopinath Chigakkagari

    @gopinach

    Books on C++17

    $
    0
    0

    This post is part of a regular series of posts where the C++ product team here at Microsoft and other guests answer questions we have received from customers. The questions can be about anything C++ related: MSVC toolset, the standard language and library, the C++ standards committee, isocpp.org, CppCon, etc. Today’s post is by Marian Luparu.

    C++17 is an important evolution of the C++ language, and you may be wondering how you should get started learning about it. On our blog, you will always find the latest announcements related to our team’s work on C++17 and future standards and, as part of this new series, advice on any C++17 related topics you’ve asked us about. But many of you may also want the more systematic approach to learning, an approach that books can give you when absorbing such a large topic.

    Here are three books, written by our Microsoft MVPs, that can be good starting points to get yourself familiar with C++17

    Professional C++, 4th edition, by Marc Gregoire

    “Professional C++” is the advanced manual for C++ programming. Designed to help experienced developers get more out of the latest release, this book skims over the basics and dives right in to exploiting the full capabilities of C++17. Each feature is explained by example, each including actual code snippets that you can plug into your own applications. Case studies include extensive, working code that has been tested on Windows and Linux, and the author’s expert tips, tricks, and workarounds can dramatically enhance your workflow. Even many experienced developers have never fully explored the boundaries of the language’s capabilities; this book reveals the advanced features you never knew about, and drills down to show you how to turn these features into real-world solutions.

    C++ is notoriously complex, and whether you use it for gaming or business, maximizing its functionality means keeping up to date with the latest changes. Whether these changes enhance your work or make it harder depends on how well-versed you are in the newest C++ features. Professional C++ gets you up to date quickly, and provides the answers you need for everyday solutions.

    The Modern C++ Challenge: Become an expert programmer by solving real-world problems, by Marius Bancila

    C++ is one of the most widely-used programming languages and has applications in a variety of fields, such as gaming, GUI programming, and operating systems, to name a few. Through the years, C++ has evolved into (and remains) one of the top choices for software developers worldwide. This book will show you some notable C++ features and how to implement them to meet your application needs. Each problem is unique and doesn’t just test your knowledge of the language; it tests your ability to think out of the box and come up with the best solutions. With varying levels of difficulty, you’ll be faced with a wide variety of challenges. And in case you’re stumped, you don’t have to worry: we’ve got the best solutions to the problems in the book. So are you up for the challenge?

    This book will appeal to C++ developers of all levels. There’s a challenge inside for everyone.

    C++17 in Detail, by Bartłomiej Filipek

    Although C++17 is not as big as C++11, it’s larger than C++14. Everyone expected modules, co-routines, concepts and other powerful features, but it wasn’t possible to prepare everything on time. Is C++17 weak? Far from it! And this book will show you why!

    The book brings you exclusive content about C++17 and draws from the experience of many articles that have appeared on bfilipek.com. The chapters were rewritten from the ground-up and updated with the latest information. All of that equipped with lots of new examples and practical tips. Additionally, the book provides insight into the current implementation status, compiler support, performance issues and other relevant knowledge to boost your current projects.

    If you know a bit of C++11/14 and you want to move forward into the latest C++ techniques, then this book is for you.

    What other good C++17 books would you recommend to someone that is just getting started with C++? How about a C++ expert that hasn’t looked at C++17 yet?

    Windows 10 SDK Preview Build 17763 available now!

    $
    0
    0

    Today, we released a new Windows 10 Preview Build of the SDK to be used in conjunction with Windows 10 Insider Preview (Build 17763 or greater). The Preview SDK Build 17763 contains bug fixes and under development changes to the API surface area.

    The Preview SDK can be downloaded from developer section on Windows Insider.

    For feedback and updates to the known issues, please see the developer forum. For new developer feature requests, head over to our Windows Platform UserVoice.

    Things to note:

    • This build works in conjunction with previously released SDKs and Visual Studio 2017. You can install this SDK and still also continue to submit your apps that target Windows 10 build 1803 or earlier to the store.
    • The Windows SDK will now formally only be supported by Visual Studio 2017 and greater. You can download the Visual Studio 2017 here.
    • This build of the Windows SDK will install on Windows 10 Insider Preview builds and supported Windows operating systems.
    • In order to assist with script access to the SDK, the ISO will also be able to be accessed through the following URL: https://go.microsoft.com/fwlink/?prd=11966&pver=1.0&plcid=0x409&clcid=0x409&ar=Flight&sar=Sdsurl&o1=17763 once the static URL is published.

    C++/WinRT Update for build 17709 and beyond:

    This update introduces many improvements and fixes for C++/WinRT. Notably, it introduces the ability to build C++/WinRT without any dependency on the Windows SDK. This isn’t particularly interesting to the OS developer, but even in the OS repo it provides benefits because it does not itself include any Windows headers. Thus, a developer will typically pull in fewer or no dependencies inadvertently. This also means a dramatic reduction in the number of macros that a C++/WinRT developer must guard against. Removing the dependency on the Windows headers means that C++/WinRT is more portable and standards compliant and furthers our efforts to make it a cross-compiler and cross-platform library. It also means that the C++/WinRT headers will never be mangled by macros. If you previously relied on C++/WinRT to include various Windows headers that you will now have to include them yourself. It has always been good practice to always include any headers you depend on explicitly and not rely on another library to include them for you.

    Highlights

    Support get_strong and get_weak to create delegates: This update allows a developer to use either get_strong or get_weak instead of a raw this pointer when creating a delegate pointing to a member function.

    Add async cancellation callback: The most frequently requested feature for C++/WinRT’s coroutine support has been the addition of a cancellation callback.

    Simplify the use of APIs expecting IBuffer parameters: Although most APIs prefer collections or arrays, enough APIs rely on IBuffer that it should be easier to use such APIs from C++. This update provides direct access to the data behind an IBuffer implementation using the same data naming convention used by the C++ standard library containers. This also avoids colliding with metadata names that conventionally begin with an uppercase letter.

    Conformance: Improved support for Clang and Visual C++’s stricter conformance modes.

    Improved code gen: Various improvements to reduce code size, improve inlining, and optimize factory caching.

    Remove unnecessary recursion: When the command line refers to a folder rather than a specific winmd, cppwinrt will no longer search recursively for winmd files. It causes performance problems in the OS build and can lead to usage errors that are hard to diagnose when developers inadvertently cause cppwinrt to consume more winmds than expected. The cppwinrt compiler also now handles duplicates more intelligently, making it more resilient to user error and poorly-formed winmd files.

    Declare both WINRT_CanUnloadNow and WINRT_GetActivationFactory in base.h: Callers don’t need to declare them directly. Their signatures have also changed, amounting to a breaking change. The declarations alleviate most of the pain of this change. The change is necessitated by the fact that C++/WinRT no longer depends on the Windows headers and this change removes the dependency on the types from the Windows headers.

    Harden smart pointers: The event revokers didn’t revoke when move-assigned a new value. This lead me to take a closer look at the smart pointer classes and I noticed that they were not reliably handling self-assignment. This is rooted in the com_ptr class template that most of the others rely on. I fixed com_ptr and updated the event revokers to handle move semantics correctly to ensure that they revoke upon assignment. The handle class template has also been hardened by the removal of the implicit constructor that made it easy to write incorrect code. This also turned bugs in the OS into compiler errors fixed in this PR.

    Breaking Changes

    Support for non-WinRT interfaces is disabled by default. To enable, simply #include <unknwn.h> before any C++/WinRT headers.

    winrt::get_abi(winrt::hstring) now returns void* instead of HSTRING. Code requiring the HSTRING ABI can simply use a static_cast.

    winrt::put_abi(winrt::hstring) returns void** instead of HSTRING*. Code requiring the HSTRING ABI can simply use a reinterpret_cast.

    HRESULT is now projected as winrt::hresult. Code requiring an HRESULT can simply static_cast if you need to do type checking or support type traits, but it is otherwise convertible as long as <unknwn.h> is included first.

    GUID is now projected as winrt::guid. Code implementing APIs with GUID parameters must use winrt::guid instead, but it is otherwise convertible as long as <unknwn.h> is included first.

    The signatures of WINRT_CanUnloadNow and WINRT_GetActivationFactory has changed. Code must not declare these functions at all and instead include winrt/base.h to include their declarations.

    The winrt::handle constructor is now explicit. Code assigning a raw handle value must call the attach method instead.

    winrt::clock::from_FILETIME has been deprecated. Code should use winrt::clock::from_file_time instead.

    What’s New:

    MSIX Support

    It’s finally here! You can now package your applications as MSIX! These applications can be installed and run on any device with 17682 build or later.

    To package your application with MSIX, use the MakeAppx tool. To install the application – just click on the MSIX file. To understand more about MSIX, watch this introductory video: link

    Feedback and comments are welcome on our MSIX community: http://aka.ms/MSIXCommunity

    MSIX is not currently supported by the App Certification Kit nor the Microsoft Store at this time.

    MC.EXE

    We’ve made some important changes to the C/C++ ETW code generation of mc.exe (Message Compiler):

    The “-mof” parameter is deprecated. This parameter instructs MC.exe to generate ETW code that is compatible with Windows XP and earlier. Support for the “-mof” parameter will be removed in a future version of mc.exe.

    As long as the “-mof” parameter is not used, the generated C/C++ header is now compatible with both kernel-mode and user-mode, regardless of whether “-km” or “-um” was specified on the command line. The header will use the _ETW_KM_ macro to automatically determine whether it is being compiled for kernel-mode or user-mode and will call the appropriate ETW APIs for each mode.

    • The only remaining difference between “-km” and “-um” is that the EventWrite[EventName] macros generated with “-km” have an Activity ID parameter while the EventWrite[EventName] macros generated with “-um” do not have an Activity ID parameter.

    The EventWrite[EventName] macros now default to calling EventWriteTransfer (user mode) or EtwWriteTransfer (kernel mode). Previously, the EventWrite[EventName] macros defaulted to calling EventWrite (user mode) or EtwWrite (kernel mode).

    • The generated header now supports several customization macros. For example, you can set the MCGEN_EVENTWRITETRANSFER macro if you need the generated macros to call something other than EventWriteTransfer.
    • The manifest supports new attributes.
    • Event “name”: non-localized event name.
    • Event “attributes”: additional key-value metadata for an event such as filename, line number, component name, function name.
    • Event “tags”: 28-bit value with user-defined semantics (per-event).
    • Field “tags”: 28-bit value with user-defined semantics (per-field – can be applied to “data” or “struct” elements).
    • You can now define “provider traits” in the manifest (e.g. provider group). If provider traits are used in the manifest, the EventRegister[ProviderName] macro will automatically register them.
    • MC will now report an error if a localized message file is missing a string. (Previously MC would silently generate a corrupt message resource.)
    • MC can now generate Unicode (utf-8 or utf-16) output with the “-cp utf-8” or “-cp utf-16” parameters.

    Known Issues:

    The SDK headers are generated with types in the “ABI” namespace. This is done to avoid conflicts with C++/CX and C++/WinRT clients that need to consume types directly at the ABI layer[1]. By default, types emitted by MIDL are *not* put in the ABI namespace, however this has the potential to introduce conflicts from teams attempting to consume ABI types from Windows WinRT MIDL generated headers and non-Windows WinRT MIDL generated headers (this is especially challenging if the non-Windows header references Windows types).

    To ensure that developers have a consistent view of the WinRT API surface, validation has been added to the generated headers to ensure that the ABI prefix is consistent between the Windows headers and user generated headers. If you encounter an error like:

    5>c:program files (x86)windows kits10include10.0.17687.0winrtwindows.foundation.h(83): error C2220: warning treated as error – no ‘object’ file generated

    5>c:program files (x86)windows kits10include10.0.17687.0winrtwindows.foundation.h(83): warning C4005: ‘CHECK_NS_PREFIX_STATE’: macro redefinition

    5>g:<PATH TO YOUR HEADER HERE>(41): note: see previous definition of ‘CHECK_NS_PREFIX_STATE’

    It means that some of your MIDL generated headers are inconsistent with the system generated headers.

    There are two ways to fix this:

    • Preferred: Compile your IDL file with the /ns_prefix MIDL command line switch. This will cause all your types to be moved to the ABI namespace consistent with the Windows headers. This may require code changes in your code however.
    • Alternate: Add #define DISABLE_NS_PREFIX_CHECKS before including the Windows headers. This will suppress the validation.

    Windows App Certification Kit

    When testing your app with the Windows App Certification Kit, the test may crash if your app includes 2 or more TargetDeviceFamily entries in the Package.appxmanifestfile. For example:

    
    <TargetDeviceFamily Name="Windows.Universal"
                            MinVersion="10.0.0.0"
                            MaxVersionTested="10.0.0.0"/>
        <TargetDeviceFamily Name="Windows.Desktop"
                            MinVersion="10.0.0.0"
                            MaxVersionTested="10.0.0.0"/>
    
    

    You can work around the issue by removing one of the TargetDeviceFamily entries.

    API Updates, Additions and Removals

    When targeting new APIs, consider writing your app to be adaptive in order to run correctly on the widest number of Windows 10 devices. Please see Dynamically detecting features with API contracts for more information.

    The following APIs have been added to the platform since the release of 17134. The APIs below listed have been removed.

    In addition, please note the following removal since build 17744:

    
    namespace Windows.ApplicationModel.DataTransfer
    { public sealed class DataPackagePropertySetView : IIterable<IKeyValuePair<string, object>>, IMapView<string, object> {
    string SourceDisplayName { get; } } }
    
    

    Additions:

    
    namespace Windows.AI.MachineLearning {
      public interface ILearningModelFeatureDescriptor
      public interface ILearningModelFeatureValue
      public interface ILearningModelOperatorProvider
      public sealed class ImageFeatureDescriptor : ILearningModelFeatureDescriptor
      public sealed class ImageFeatureValue : ILearningModelFeatureValue
      public interface ITensor : ILearningModelFeatureValue
      public sealed class LearningModel : IClosable
      public sealed class LearningModelBinding : IIterable<IKeyValuePair<string, object>>, IMapView<string, object>
      public sealed class LearningModelDevice
      public enum LearningModelDeviceKind
      public sealed class LearningModelEvaluationResult
      public enum LearningModelFeatureKind
      public sealed class LearningModelSession : IClosable
      public struct MachineLearningContract
      public sealed class MapFeatureDescriptor : ILearningModelFeatureDescriptor
      public sealed class SequenceFeatureDescriptor : ILearningModelFeatureDescriptor
      public sealed class TensorBoolean : ILearningModelFeatureValue, ITensor
      public sealed class TensorDouble : ILearningModelFeatureValue, ITensor
      public sealed class TensorFeatureDescriptor : ILearningModelFeatureDescriptor
      public sealed class TensorFloat : ILearningModelFeatureValue, ITensor
      public sealed class TensorFloat16Bit : ILearningModelFeatureValue, ITensor
      public sealed class TensorInt16Bit : ILearningModelFeatureValue, ITensor
      public sealed class TensorInt32Bit : ILearningModelFeatureValue, ITensor
      public sealed class TensorInt64Bit : ILearningModelFeatureValue, ITensor
      public sealed class TensorInt8Bit : ILearningModelFeatureValue, ITensor
      public enum TensorKind
      public sealed class TensorString : ILearningModelFeatureValue, ITensor
      public sealed class TensorUInt16Bit : ILearningModelFeatureValue, ITensor
      public sealed class TensorUInt32Bit : ILearningModelFeatureValue, ITensor
      public sealed class TensorUInt64Bit : ILearningModelFeatureValue, ITensor
      public sealed class TensorUInt8Bit : ILearningModelFeatureValue, ITensor
    }
    namespace Windows.ApplicationModel {
      public sealed class AppInstallerInfo
      public sealed class LimitedAccessFeatureRequestResult
      public static class LimitedAccessFeatures
      public enum LimitedAccessFeatureStatus
      public sealed class Package {
        IAsyncOperation<PackageUpdateAvailabilityResult> CheckUpdateAvailabilityAsync();
        AppInstallerInfo GetAppInstallerInfo();
      }
      public enum PackageUpdateAvailability
      public sealed class PackageUpdateAvailabilityResult
    }
    namespace Windows.ApplicationModel.Calls {
      public sealed class VoipCallCoordinator {
        IAsyncOperation<VoipPhoneCallResourceReservationStatus> ReserveCallResourcesAsync();
      }
    }
    namespace Windows.ApplicationModel.Chat {
      public static class ChatCapabilitiesManager {
        public static IAsyncOperation<ChatCapabilities> GetCachedCapabilitiesAsync(string address, string transportId);
        public static IAsyncOperation<ChatCapabilities> GetCapabilitiesFromNetworkAsync(string address, string transportId);
      }
      public static class RcsManager {
        public static event EventHandler<object> TransportListChanged;
      }
    }
    namespace Windows.ApplicationModel.DataTransfer {
      public static class Clipboard {
        public static event EventHandler<ClipboardHistoryChangedEventArgs> HistoryChanged;
        public static event EventHandler<object> HistoryEnabledChanged;
        public static event EventHandler<object> RoamingEnabledChanged;
        public static bool ClearHistory();
        public static bool DeleteItemFromHistory(ClipboardHistoryItem item);
        public static IAsyncOperation<ClipboardHistoryItemsResult> GetHistoryItemsAsync();
        public static bool IsHistoryEnabled();
        public static bool IsRoamingEnabled();
        public static bool SetContentWithOptions(DataPackage content, ClipboardContentOptions options);
        public static SetHistoryItemAsContentStatus SetHistoryItemAsContent(ClipboardHistoryItem item);
      }
      public sealed class ClipboardContentOptions
      public sealed class ClipboardHistoryChangedEventArgs
      public sealed class ClipboardHistoryItem
      public sealed class ClipboardHistoryItemsResult
      public enum ClipboardHistoryItemsResultStatus
      public sealed class DataPackagePropertySetView : IIterable<IKeyValuePair<string, object>>, IMapView<string, object> {
        bool IsFromRoamingClipboard { get; }
      }
      public enum SetHistoryItemAsContentStatus
    }
    namespace Windows.ApplicationModel.Store.Preview {
      public enum DeliveryOptimizationDownloadMode
      public enum DeliveryOptimizationDownloadModeSource
      public sealed class DeliveryOptimizationSettings
      public static class StoreConfiguration {
        public static bool IsPinToDesktopSupported();
        public static bool IsPinToStartSupported();
        public static bool IsPinToTaskbarSupported();
        public static void PinToDesktop(string appPackageFamilyName);
        public static void PinToDesktopForUser(User user, string appPackageFamilyName);
      }
    }
    namespace Windows.ApplicationModel.Store.Preview.InstallControl {
      public enum AppInstallationToastNotificationMode
      public sealed class AppInstallItem {
        AppInstallationToastNotificationMode CompletedInstallToastNotificationMode { get; set; }
        AppInstallationToastNotificationMode InstallInProgressToastNotificationMode { get; set; }
        bool PinToDesktopAfterInstall { get; set; }
        bool PinToStartAfterInstall { get; set; }
        bool PinToTaskbarAfterInstall { get; set; }
      }
      public sealed class AppInstallManager {
        bool CanInstallForAllUsers { get; }
      }
      public sealed class AppInstallOptions {
        string CampaignId { get; set; }
        AppInstallationToastNotificationMode CompletedInstallToastNotificationMode { get; set; }
        string ExtendedCampaignId { get; set; }
        bool InstallForAllUsers { get; set; }
        AppInstallationToastNotificationMode InstallInProgressToastNotificationMode { get; set; }
        bool PinToDesktopAfterInstall { get; set; }
        bool PinToStartAfterInstall { get; set; }
        bool PinToTaskbarAfterInstall { get; set; }
        bool StageButDoNotInstall { get; set; }
      }
      public sealed class AppUpdateOptions {
        bool AutomaticallyDownloadAndInstallUpdateIfFound { get; set; }
      }
    }
    namespace Windows.ApplicationModel.UserActivities {
      public sealed class UserActivity {
        bool IsRoamable { get; set; }
      }
    }
    namespace Windows.Data.Text {
      public sealed class TextPredictionGenerator {
        CoreTextInputScope InputScope { get; set; }
        IAsyncOperation<IVectorView<string>> GetCandidatesAsync(string input, uint maxCandidates, TextPredictionOptions predictionOptions, IIterable<string> previousStrings);
        IAsyncOperation<IVectorView<string>> GetNextWordCandidatesAsync(uint maxCandidates, IIterable<string> previousStrings);
      }
      public enum TextPredictionOptions : uint
    }
    namespace Windows.Devices.Display.Core {
      public sealed class DisplayAdapter
      public enum DisplayBitsPerChannel : uint
      public sealed class DisplayDevice
      public enum DisplayDeviceCapability
      public sealed class DisplayFence
      public sealed class DisplayManager : IClosable
      public sealed class DisplayManagerChangedEventArgs
      public sealed class DisplayManagerDisabledEventArgs
      public sealed class DisplayManagerEnabledEventArgs
      public enum DisplayManagerOptions : uint
      public sealed class DisplayManagerPathsFailedOrInvalidatedEventArgs
      public enum DisplayManagerResult
      public sealed class DisplayManagerResultWithState
      public sealed class DisplayModeInfo
      public enum DisplayModeQueryOptions : uint
      public sealed class DisplayPath
      public enum DisplayPathScaling
      public enum DisplayPathStatus
      public struct DisplayPresentationRate
      public sealed class DisplayPrimaryDescription
      public enum DisplayRotation
      public sealed class DisplayScanout
      public sealed class DisplaySource
      public sealed class DisplayState
      public enum DisplayStateApplyOptions : uint
      public enum DisplayStateFunctionalizeOptions : uint
      public sealed class DisplayStateOperationResult
      public enum DisplayStateOperationStatus
      public sealed class DisplaySurface
      public sealed class DisplayTarget
      public enum DisplayTargetPersistence
      public sealed class DisplayTask
      public sealed class DisplayTaskPool
      public enum DisplayTaskSignalKind
      public sealed class DisplayView
      public sealed class DisplayWireFormat
      public enum DisplayWireFormatColorSpace
      public enum DisplayWireFormatEotf
      public enum DisplayWireFormatHdrMetadata
      public enum DisplayWireFormatPixelEncoding
    }
    namespace Windows.Devices.Enumeration {
      public enum DeviceInformationKind {
        DevicePanel = 8,
      }
      public sealed class DeviceInformationPairing {
        public static bool TryRegisterForAllInboundPairingRequestsWithProtectionLevel(DevicePairingKinds pairingKindsSupported, DevicePairingProtectionLevel minProtectionLevel);
      }
    }
    namespace Windows.Devices.Enumeration.Pnp {
      public enum PnpObjectType {
        DevicePanel = 8,
      }
    }
    namespace Windows.Devices.Lights {
      public sealed class LampArray
      public enum LampArrayKind
      public sealed class LampInfo
      public enum LampPurposes : uint
    }
    namespace Windows.Devices.Lights.Effects {
      public interface ILampArrayEffect
      public sealed class LampArrayBitmapEffect : ILampArrayEffect
      public sealed class LampArrayBitmapRequestedEventArgs
      public sealed class LampArrayBlinkEffect : ILampArrayEffect
      public sealed class LampArrayColorRampEffect : ILampArrayEffect
      public sealed class LampArrayCustomEffect : ILampArrayEffect
      public enum LampArrayEffectCompletionBehavior
      public sealed class LampArrayEffectPlaylist : IIterable<ILampArrayEffect>, IVectorView<ILampArrayEffect>
      public enum LampArrayEffectStartMode
      public enum LampArrayRepetitionMode
      public sealed class LampArraySolidEffect : ILampArrayEffect
      public sealed class LampArrayUpdateRequestedEventArgs
    }
    namespace Windows.Devices.PointOfService {
      public sealed class BarcodeScannerCapabilities {
        bool IsVideoPreviewSupported { get; }
      }
      public sealed class ClaimedBarcodeScanner : IClosable {
        event TypedEventHandler<ClaimedBarcodeScanner, ClaimedBarcodeScannerClosedEventArgs> Closed;
      }
      public sealed class ClaimedBarcodeScannerClosedEventArgs
      public sealed class ClaimedCashDrawer : IClosable {
        event TypedEventHandler<ClaimedCashDrawer, ClaimedCashDrawerClosedEventArgs> Closed;
      }
      public sealed class ClaimedCashDrawerClosedEventArgs
      public sealed class ClaimedLineDisplay : IClosable {
        event TypedEventHandler<ClaimedLineDisplay, ClaimedLineDisplayClosedEventArgs> Closed;
      }
      public sealed class ClaimedLineDisplayClosedEventArgs
      public sealed class ClaimedMagneticStripeReader : IClosable {
        event TypedEventHandler<ClaimedMagneticStripeReader, ClaimedMagneticStripeReaderClosedEventArgs> Closed;
      }
      public sealed class ClaimedMagneticStripeReaderClosedEventArgs
      public sealed class ClaimedPosPrinter : IClosable {
        event TypedEventHandler<ClaimedPosPrinter, ClaimedPosPrinterClosedEventArgs> Closed;
      }
      public sealed class ClaimedPosPrinterClosedEventArgs
    }
    namespace Windows.Devices.PointOfService.Provider {
      public sealed class BarcodeScannerDisableScannerRequest {
        IAsyncAction ReportFailedAsync(int reason);
        IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
      }
      public sealed class BarcodeScannerEnableScannerRequest {
        IAsyncAction ReportFailedAsync(int reason);
        IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
      }
      public sealed class BarcodeScannerFrameReader : IClosable
      public sealed class BarcodeScannerFrameReaderFrameArrivedEventArgs
      public sealed class BarcodeScannerGetSymbologyAttributesRequest {
        IAsyncAction ReportFailedAsync(int reason);
        IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
      }
      public sealed class BarcodeScannerHideVideoPreviewRequest {
        IAsyncAction ReportFailedAsync(int reason);
        IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
      }
      public sealed class BarcodeScannerProviderConnection : IClosable {
        IAsyncOperation<BarcodeScannerFrameReader> CreateFrameReaderAsync();
        IAsyncOperation<BarcodeScannerFrameReader> CreateFrameReaderAsync(BitmapPixelFormat preferredFormat);
        IAsyncOperation<BarcodeScannerFrameReader> CreateFrameReaderAsync(BitmapPixelFormat preferredFormat, BitmapSize preferredSize);
      }
      public sealed class BarcodeScannerSetActiveSymbologiesRequest {
        IAsyncAction ReportFailedAsync(int reason);
        IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
      }
      public sealed class BarcodeScannerSetSymbologyAttributesRequest {
        IAsyncAction ReportFailedAsync(int reason);
        IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
     }
      public sealed class BarcodeScannerStartSoftwareTriggerRequest {
        IAsyncAction ReportFailedAsync(int reason);
        IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
      }
      public sealed class BarcodeScannerStopSoftwareTriggerRequest {
        IAsyncAction ReportFailedAsync(int reason);
        IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
      }
      public sealed class BarcodeScannerVideoFrame : IClosable
    }
    namespace Windows.Devices.Sensors {
      public sealed class HingeAngleReading
      public sealed class HingeAngleSensor
      public sealed class HingeAngleSensorReadingChangedEventArgs
      public sealed class SimpleOrientationSensor {
        public static IAsyncOperation<SimpleOrientationSensor> FromIdAsync(string deviceId);
        public static string GetDeviceSelector();
      }
    }
    namespace Windows.Devices.SmartCards {
      public static class KnownSmartCardAppletIds
      public sealed class SmartCardAppletIdGroup {
        string Description { get; set; }
        IRandomAccessStreamReference Logo { get; set; }
        ValueSet Properties { get; }
        bool SecureUserAuthenticationRequired { get; set; }
      }
      public sealed class SmartCardAppletIdGroupRegistration {
        string SmartCardReaderId { get; }
       IAsyncAction SetPropertiesAsync(ValueSet props);
      }
    }
    namespace Windows.Devices.WiFi {
      public enum WiFiPhyKind {
        HE = 10,
      }
    }
    namespace Windows.Foundation {
      public static class GuidHelper
    }
    namespace Windows.Globalization {
      public static class CurrencyIdentifiers {
        public static string MRU { get; }
        public static string SSP { get; }
        public static string STN { get; }
        public static string VES { get; }
      }
    }
    namespace Windows.Graphics.Capture {
      public sealed class Direct3D11CaptureFramePool : IClosable {
        public static Direct3D11CaptureFramePool CreateFreeThreaded(IDirect3DDevice device, DirectXPixelFormat pixelFormat, int numberOfBuffers, SizeInt32 size);
      }
      public sealed class GraphicsCaptureItem {
        public static GraphicsCaptureItem CreateFromVisual(Visual visual);
      }
    }
    namespace Windows.Graphics.Display.Core {
      public enum HdmiDisplayHdrOption {
        DolbyVisionLowLatency = 3,
      }
      public sealed class HdmiDisplayMode {
        bool IsDolbyVisionLowLatencySupported { get; }
      }
    }
    namespace Windows.Graphics.Holographic {
      public sealed class HolographicCamera {
        bool IsHardwareContentProtectionEnabled { get; set; }
        bool IsHardwareContentProtectionSupported { get; }
      }
      public sealed class HolographicQuadLayerUpdateParameters {
        bool CanAcquireWithHardwareProtection { get; }
        IDirect3DSurface AcquireBufferToUpdateContentWithHardwareProtection();
      }
    }
    namespace Windows.Graphics.Imaging {
      public sealed class BitmapDecoder : IBitmapFrame, IBitmapFrameWithSoftwareBitmap {
        public static Guid HeifDecoderId { get; }
        public static Guid WebpDecoderId { get; }
      }
      public sealed class BitmapEncoder {
        public static Guid HeifEncoderId { get; }
      }
    }
    namespace Windows.Management.Deployment {
      public enum DeploymentOptions : uint {
        ForceUpdateFromAnyVersion = (uint)262144,
      }
      public sealed class PackageManager {
        IAsyncOperationWithProgress<DeploymentResult, DeploymentProgress> DeprovisionPackageForAllUsersAsync(string packageFamilyName);
      }
      public enum RemovalOptions : uint {
        RemoveForAllUsers = (uint)524288,
      }
    }
    namespace Windows.Media.Audio {
      public sealed class CreateAudioDeviceInputNodeResult {
        HResult ExtendedError { get; }
      }
      public sealed class CreateAudioDeviceOutputNodeResult {
        HResult ExtendedError { get; }
      }
      public sealed class CreateAudioFileInputNodeResult {
        HResult ExtendedError { get; }
      }
      public sealed class CreateAudioFileOutputNodeResult {
        HResult ExtendedError { get; }
      }
      public sealed class CreateAudioGraphResult {
        HResult ExtendedError { get; }
      }
      public sealed class CreateMediaSourceAudioInputNodeResult {
        HResult ExtendedError { get; }
      }
      public enum MixedRealitySpatialAudioFormatPolicy
      public sealed class SetDefaultSpatialAudioFormatResult
      public enum SetDefaultSpatialAudioFormatStatus
      public sealed class SpatialAudioDeviceConfiguration
      public sealed class SpatialAudioFormatConfiguration
      public static class SpatialAudioFormatSubtype
    }
    namespace Windows.Media.Control {
      public sealed class CurrentSessionChangedEventArgs
      public sealed class GlobalSystemMediaTransportControlsSession
      public sealed class GlobalSystemMediaTransportControlsSessionManager
      public sealed class GlobalSystemMediaTransportControlsSessionMediaProperties
      public sealed class GlobalSystemMediaTransportControlsSessionPlaybackControls
      public sealed class GlobalSystemMediaTransportControlsSessionPlaybackInfo
      public enum GlobalSystemMediaTransportControlsSessionPlaybackStatus
      public sealed class GlobalSystemMediaTransportControlsSessionTimelineProperties
      public sealed class MediaPropertiesChangedEventArgs
      public sealed class PlaybackInfoChangedEventArgs
      public sealed class SessionsChangedEventArgs
      public sealed class TimelinePropertiesChangedEventArgs
    }
    namespace Windows.Media.Core {
      public sealed class MediaStreamSample {
        IDirect3DSurface Direct3D11Surface { get; }
        public static MediaStreamSample CreateFromDirect3D11Surface(IDirect3DSurface surface, TimeSpan timestamp);
      }
    }
    namespace Windows.Media.Devices.Core {
      public sealed class CameraIntrinsics {
        public CameraIntrinsics(Vector2 focalLength, Vector2 principalPoint, Vector3 radialDistortion, Vector2 tangentialDistortion, uint imageWidth, uint imageHeight);
      }
    }
    namespace Windows.Media.Import {
      public enum PhotoImportContentTypeFilter {
        ImagesAndVideosFromCameraRoll = 3,
      }
      public sealed class PhotoImportItem {
        string Path { get; }
      }
    }
    namespace Windows.Media.MediaProperties {
      public sealed class ImageEncodingProperties : IMediaEncodingProperties {
        public static ImageEncodingProperties CreateHeif();
      }
      public static class MediaEncodingSubtypes {
        public static string Heif { get; }
      }
    }
    namespace Windows.Media.Protection.PlayReady {
      public static class PlayReadyStatics {
        public static IReference<DateTime> HardwareDRMDisabledAtTime { get; }
        public static IReference<DateTime> HardwareDRMDisabledUntilTime { get; }
        public static void ResetHardwareDRMDisabled();
      }
    }
    namespace Windows.Media.Streaming.Adaptive {
      public enum AdaptiveMediaSourceResourceType {
        MediaSegmentIndex = 5,
      }
    }
    namespace Windows.Networking.BackgroundTransfer {
      public enum BackgroundTransferPriority {
        Low = 2,
      }
    }
    namespace Windows.Networking.Connectivity {
      public sealed class ConnectionProfile {
        bool CanDelete { get; }
        IAsyncOperation<ConnectionProfileDeleteStatus> TryDeleteAsync();
      }
      public enum ConnectionProfileDeleteStatus
    }
    namespace Windows.Networking.NetworkOperators {
      public enum ESimOperationStatus {
        CardGeneralFailure = 13,
        ConfirmationCodeMissing = 14,
        EidMismatch = 18,
        InvalidMatchingId = 15,
        NoCorrespondingRequest = 23,
        NoEligibleProfileForThisDevice = 16,
        OperationAborted = 17,
        OperationProhibitedByProfileClass = 21,
        ProfileNotAvailableForNewBinding = 19,
        ProfileNotPresent = 22,
        ProfileNotReleasedByOperator = 20,
      }
    }
    namespace Windows.Perception {
      public sealed class PerceptionTimestamp {
        TimeSpan SystemRelativeTargetTime { get; }
      }
      public static class PerceptionTimestampHelper {
        public static PerceptionTimestamp FromSystemRelativeTargetTime(TimeSpan targetTime);
      }
    }
    namespace Windows.Perception.Spatial {
      public sealed class SpatialAnchorExporter
      public enum SpatialAnchorExportPurpose
      public sealed class SpatialAnchorExportSufficiency
      public sealed class SpatialLocation {
        Vector3 AbsoluteAngularAccelerationAxisAngle { get; }
        Vector3 AbsoluteAngularVelocityAxisAngle { get; }
      }
    }
    namespace Windows.Perception.Spatial.Preview {
      public static class SpatialGraphInteropPreview
    }
    namespace Windows.Services.Cortana {
      public sealed class CortanaActionableInsights
      public sealed class CortanaActionableInsightsOptions
    }
    namespace Windows.Services.Store {
      public sealed class StoreAppLicense {
        bool IsDiscLicense { get; }
      }
      public sealed class StoreContext {
        IAsyncOperation<StoreRateAndReviewResult> RequestRateAndReviewAppAsync();
        IAsyncOperation<IVectorView<StoreQueueItem>> SetInstallOrderForAssociatedStoreQueueItemsAsync(IIterable<StoreQueueItem> items);
      }
      public sealed class StoreQueueItem {
        IAsyncAction CancelInstallAsync();
        IAsyncAction PauseInstallAsync();
        IAsyncAction ResumeInstallAsync();
      }
      public sealed class StoreRateAndReviewResult
      public enum StoreRateAndReviewStatus
    }
    namespace Windows.Storage.Provider {
      public enum StorageProviderHydrationPolicyModifier : uint {
        AutoDehydrationAllowed = (uint)4,
      }
      public sealed class StorageProviderSyncRootInfo {
        Guid ProviderId { get; set; }
      }
    }
    namespace Windows.System {
      public sealed class AppUriHandlerHost
      public sealed class AppUriHandlerRegistration
      public sealed class AppUriHandlerRegistrationManager
      public static class Launcher {
        public static IAsyncOperation<bool> LaunchFolderPathAsync(string path);
        public static IAsyncOperation<bool> LaunchFolderPathAsync(string path, FolderLauncherOptions options);
        public static IAsyncOperation<bool> LaunchFolderPathForUserAsync(User user, string path);
        public static IAsyncOperation<bool> LaunchFolderPathForUserAsync(User user, string path, FolderLauncherOptions options);
      }
    }
    namespace Windows.System.Preview {
      public enum HingeState
      public sealed class TwoPanelHingedDevicePosturePreview
      public sealed class TwoPanelHingedDevicePosturePreviewReading
      public sealed class TwoPanelHingedDevicePosturePreviewReadingChangedEventArgs
    }
    namespace Windows.System.Profile {
      public enum SystemOutOfBoxExperienceState
      public static class SystemSetupInfo
      public static class WindowsIntegrityPolicy
    }
    namespace Windows.System.Profile.SystemManufacturers {
      public sealed class SystemSupportDeviceInfo
     public static class SystemSupportInfo {
        public static SystemSupportDeviceInfo LocalDeviceInfo { get; }
      }
    }
    namespace Windows.System.RemoteSystems {
      public sealed class RemoteSystem {
        IVectorView<RemoteSystemApp> Apps { get; }
      }
      public sealed class RemoteSystemApp
      public sealed class RemoteSystemAppRegistration
      public sealed class RemoteSystemConnectionInfo
      public sealed class RemoteSystemConnectionRequest {
        RemoteSystemApp RemoteSystemApp { get; }
        public static RemoteSystemConnectionRequest CreateForApp(RemoteSystemApp remoteSystemApp);
      }
      public sealed class RemoteSystemWebAccountFilter : IRemoteSystemFilter
    }
    namespace Windows.System.Update {
      public enum SystemUpdateAttentionRequiredReason
      public sealed class SystemUpdateItem
      public enum SystemUpdateItemState
      public sealed class SystemUpdateLastErrorInfo
      public static class SystemUpdateManager
      public enum SystemUpdateManagerState
      public enum SystemUpdateStartInstallAction
    }
    namespace Windows.System.UserProfile {
      public sealed class AssignedAccessSettings
    }
    namespace Windows.UI.Accessibility {
      public sealed class ScreenReaderPositionChangedEventArgs
      public sealed class ScreenReaderService
    }
    namespace Windows.UI.Composition {
      public enum AnimationPropertyAccessMode
      public sealed class AnimationPropertyInfo : CompositionObject
      public sealed class BooleanKeyFrameAnimation : KeyFrameAnimation
      public class CompositionAnimation : CompositionObject, ICompositionAnimationBase {
        void SetExpressionReferenceParameter(string parameterName, IAnimationObject source);
      }
      public enum CompositionBatchTypes : uint {
        AllAnimations = (uint)5,
        InfiniteAnimation = (uint)4,
      }
      public sealed class CompositionGeometricClip : CompositionClip
      public class CompositionGradientBrush : CompositionBrush {
        CompositionMappingMode MappingMode { get; set; }
      }
      public enum CompositionMappingMode
      public class CompositionObject : IAnimationObject, IClosable {
        void PopulatePropertyInfo(string propertyName, AnimationPropertyInfo propertyInfo);
        public static void StartAnimationGroupWithIAnimationObject(IAnimationObject target, ICompositionAnimationBase animation);
        public static void StartAnimationWithIAnimationObject(IAnimationObject target, string propertyName, CompositionAnimation animation);
      }
      public sealed class Compositor : IClosable {
        BooleanKeyFrameAnimation CreateBooleanKeyFrameAnimation();
        CompositionGeometricClip CreateGeometricClip();
        CompositionGeometricClip CreateGeometricClip(CompositionGeometry geometry);
        RedirectVisual CreateRedirectVisual();
        RedirectVisual CreateRedirectVisual(Visual source);
      }
      public interface IAnimationObject
      public sealed class RedirectVisual : ContainerVisual
    }
    namespace Windows.UI.Composition.Interactions {
      public sealed class InteractionSourceConfiguration : CompositionObject
      public enum InteractionSourceRedirectionMode
      public sealed class InteractionTracker : CompositionObject {
        bool IsInertiaFromImpulse { get; }
        int TryUpdatePosition(Vector3 value, InteractionTrackerClampingOption option);
        int TryUpdatePositionBy(Vector3 amount, InteractionTrackerClampingOption option);
      }
      public enum InteractionTrackerClampingOption
      public sealed class InteractionTrackerInertiaStateEnteredArgs {
        bool IsInertiaFromImpulse { get; }
      }
      public class VisualInteractionSource : CompositionObject, ICompositionInteractionSource {
        InteractionSourceConfiguration PointerWheelConfig { get; }
      }
    }
    namespace Windows.UI.Input.Inking {
      public enum HandwritingLineHeight
      public sealed class PenAndInkSettings
     public enum PenHandedness
    }
    namespace Windows.UI.Input.Inking.Preview {
      public sealed class PalmRejectionDelayZonePreview : IClosable
    }
    namespace Windows.UI.Notifications {
      public sealed class ScheduledToastNotificationShowingEventArgs
      public sealed class ToastNotifier {
        event TypedEventHandler<ToastNotifier, ScheduledToastNotificationShowingEventArgs> ScheduledToastNotificationShowing;
      }
    }
    namespace Windows.UI.Shell {
      public enum SecurityAppKind
      public sealed class SecurityAppManager
      public struct SecurityAppManagerContract
      public enum SecurityAppState
      public enum SecurityAppSubstatus
      public sealed class TaskbarManager {
        IAsyncOperation<bool> IsSecondaryTilePinnedAsync(string tileId);
        IAsyncOperation<bool> RequestPinSecondaryTileAsync(SecondaryTile secondaryTile);
        IAsyncOperation<bool> TryUnpinSecondaryTileAsync(string tileId);
      }
    }
    namespace Windows.UI.StartScreen {
      public sealed class StartScreenManager {
        IAsyncOperation<bool> ContainsSecondaryTileAsync(string tileId);
        IAsyncOperation<bool> TryRemoveSecondaryTileAsync(string tileId);
      }
    }
    namespace Windows.UI.Text {
      public sealed class RichEditTextDocument : ITextDocument {
        void ClearUndoRedoHistory();
      }
    }
    namespace Windows.UI.Text.Core {
      public sealed class CoreTextLayoutRequest {
        CoreTextLayoutBounds LayoutBoundsVisualPixels { get; }
      }
    }
    namespace Windows.UI.ViewManagement {
      public enum ApplicationViewWindowingMode {
        CompactOverlay = 3,
        Maximized = 4,
      }
    }
    namespace Windows.UI.ViewManagement.Core {
      public sealed class CoreInputView {
        bool TryHide();
        bool TryShow();
        bool TryShow(CoreInputViewKind type);
      }
      public enum CoreInputViewKind
    }
    namespace Windows.UI.WebUI {
      public sealed class BackgroundActivatedEventArgs : IBackgroundActivatedEventArgs
      public delegate void BackgroundActivatedEventHandler(object sender, IBackgroundActivatedEventArgs eventArgs);
      public sealed class NewWebUIViewCreatedEventArgs
      public static class WebUIApplication {
        public static event BackgroundActivatedEventHandler BackgroundActivated;
        public static event EventHandler<NewWebUIViewCreatedEventArgs> NewWebUIViewCreated;
      }
      public sealed class WebUIView : IWebViewControl, IWebViewControl2
    }
    namespace Windows.UI.Xaml {
      public class BrushTransition
      public class ColorPaletteResources : ResourceDictionary
      public class DataTemplate : FrameworkTemplate, IElementFactory {
        UIElement GetElement(ElementFactoryGetArgs args);
        void RecycleElement(ElementFactoryRecycleArgs args);
      }
      public sealed class DebugSettings {
        bool FailFastOnErrors { get; set; }
      }
      public sealed class EffectiveViewportChangedEventArgs
      public class ElementFactoryGetArgs
      public class ElementFactoryRecycleArgs
      public class FrameworkElement : UIElement {
        bool IsLoaded { get; }
        event TypedEventHandler<FrameworkElement, EffectiveViewportChangedEventArgs> EffectiveViewportChanged;
        void InvalidateViewport();
      }
      public interface IElementFactory
      public class ScalarTransition
      public class UIElement : DependencyObject, IAnimationObject {
        bool CanBeScrollAnchor { get; set; }
        public static DependencyProperty CanBeScrollAnchorProperty { get; }
        Vector3 CenterPoint { get; set; }
        ScalarTransition OpacityTransition { get; set; }
        float Rotation { get; set; }
        Vector3 RotationAxis { get; set; }
        ScalarTransition RotationTransition { get; set; }
        Vector3 Scale { get; set; }
        Vector3Transition ScaleTransition { get; set; }
        Matrix4x4 TransformMatrix { get; set; }
        Vector3 Translation { get; set; }
        Vector3Transition TranslationTransition { get; set; }
        void PopulatePropertyInfo(string propertyName, AnimationPropertyInfo propertyInfo);
        virtual void PopulatePropertyInfoOverride(string propertyName, AnimationPropertyInfo animationPropertyInfo);
        void StartAnimation(ICompositionAnimationBase animation);
        void StopAnimation(ICompositionAnimationBase animation);
      }
      public class Vector3Transition
      public enum Vector3TransitionComponents : uint
    }
    namespace Windows.UI.Xaml.Automation {
      public sealed class AutomationElementIdentifiers {
        public static AutomationProperty IsDialogProperty { get; }
      }
      public sealed class AutomationProperties {
        public static DependencyProperty IsDialogProperty { get; }
        public static bool GetIsDialog(DependencyObject element);
        public static void SetIsDialog(DependencyObject element, bool value);
      }
    }
    namespace Windows.UI.Xaml.Automation.Peers {
      public class AppBarButtonAutomationPeer : ButtonAutomationPeer, IExpandCollapseProvider {
        ExpandCollapseState ExpandCollapseState { get; }
        void Collapse();
        void Expand();
      }
      public class AutomationPeer : DependencyObject {
        bool IsDialog();
        virtual bool IsDialogCore();
      }
      public class MenuBarAutomationPeer : FrameworkElementAutomationPeer
      public class MenuBarItemAutomationPeer : FrameworkElementAutomationPeer, IExpandCollapseProvider, IInvokeProvider
    }
    namespace Windows.UI.Xaml.Controls {
      public sealed class AnchorRequestedEventArgs
      public class AppBarElementContainer : ContentControl, ICommandBarElement, ICommandBarElement2
      public sealed class AutoSuggestBox : ItemsControl {
        object Description { get; set; }
        public static DependencyProperty DescriptionProperty { get; }
      }
      public enum BackgroundSizing
      public sealed class Border : FrameworkElement {
        BackgroundSizing BackgroundSizing { get; set; }
        public static DependencyProperty BackgroundSizingProperty { get; }
        BrushTransition BackgroundTransition { get; set; }
      }
      public class CalendarDatePicker : Control {
        object Description { get; set; }
        public static DependencyProperty DescriptionProperty { get; }
      }
      public class ComboBox : Selector {
        object Description { get; set; }
        public static DependencyProperty DescriptionProperty { get; }
        bool IsEditable { get; set; }
        public static DependencyProperty IsEditableProperty { get; }
        string Text { get; set; }
        Style TextBoxStyle { get; set; }
        public static DependencyProperty TextBoxStyleProperty { get; }
        public static DependencyProperty TextProperty { get; }
        event TypedEventHandler<ComboBox, ComboBoxTextSubmittedEventArgs> TextSubmitted;
      }
      public sealed class ComboBoxTextSubmittedEventArgs
      public class CommandBarFlyout : FlyoutBase
      public class ContentPresenter : FrameworkElement {
        BackgroundSizing BackgroundSizing { get; set; }
        public static DependencyProperty BackgroundSizingProperty { get; }
        BrushTransition BackgroundTransition { get; set; }
      }
      public class Control : FrameworkElement {
        BackgroundSizing BackgroundSizing { get; set; }
        public static DependencyProperty BackgroundSizingProperty { get; }
        CornerRadius CornerRadius { get; set; }
        public static DependencyProperty CornerRadiusProperty { get; }
      }
      public class DataTemplateSelector : IElementFactory {
        UIElement GetElement(ElementFactoryGetArgs args);
        void RecycleElement(ElementFactoryRecycleArgs args);
      }
      public class DatePicker : Control {
        IReference<DateTime> SelectedDate { get; set; }
        public static DependencyProperty SelectedDateProperty { get; }
        event TypedEventHandler<DatePicker, DatePickerSelectedValueChangedEventArgs> SelectedDateChanged;
      }
      public sealed class DatePickerSelectedValueChangedEventArgs
      public class DropDownButton : Button
      public class DropDownButtonAutomationPeer : ButtonAutomationPeer, IExpandCollapseProvider
      public class Frame : ContentControl, INavigate {
        bool IsNavigationStackEnabled { get; set; }
        public static DependencyProperty IsNavigationStackEnabledProperty { get; }
        bool NavigateToType(TypeName sourcePageType, object parameter, FrameNavigationOptions navigationOptions);
      }
      public class Grid : Panel {
        BackgroundSizing BackgroundSizing { get; set; }
        public static DependencyProperty BackgroundSizingProperty { get; }
      }
      public class IconSourceElement : IconElement
      public interface IScrollAnchorProvider
      public class MenuBar : Control
      public class MenuBarItem : Control
      public class MenuBarItemFlyout : MenuFlyout
      public class NavigationView : ContentControl {
        UIElement ContentOverlay { get; set; }
        public static DependencyProperty ContentOverlayProperty { get; }
        bool IsPaneVisible { get; set; }
        public static DependencyProperty IsPaneVisibleProperty { get; }
        NavigationViewOverflowLabelMode OverflowLabelMode { get; set; }
        public static DependencyProperty OverflowLabelModeProperty { get; }
        UIElement PaneCustomContent { get; set; }
        public static DependencyProperty PaneCustomContentProperty { get; }
        NavigationViewPaneDisplayMode PaneDisplayMode { get; set; }
        public static DependencyProperty PaneDisplayModeProperty { get; }
        UIElement PaneHeader { get; set; }
        public static DependencyProperty PaneHeaderProperty { get; }
        NavigationViewSelectionFollowsFocus SelectionFollowsFocus { get; set; }
        public static DependencyProperty SelectionFollowsFocusProperty { get; }
        NavigationViewShoulderNavigationEnabled ShoulderNavigationEnabled { get; set; }
        public static DependencyProperty ShoulderNavigationEnabledProperty { get; }
        NavigationViewTemplateSettings TemplateSettings { get; }
        public static DependencyProperty TemplateSettingsProperty { get; }
      }
      public class NavigationViewItem : NavigationViewItemBase {
        bool SelectsOnInvoked { get; set; }
        public static DependencyProperty SelectsOnInvokedProperty { get; }
      }
      public sealed class NavigationViewItemInvokedEventArgs {
        NavigationViewItemBase InvokedItemContainer { get; }
        NavigationTransitionInfo RecommendedNavigationTransitionInfo { get; }
      }
      public enum NavigationViewOverflowLabelMode
      public enum NavigationViewPaneDisplayMode
      public sealed class NavigationViewSelectionChangedEventArgs {
        NavigationTransitionInfo RecommendedNavigationTransitionInfo { get; }
        NavigationViewItemBase SelectedItemContainer { get; }
      }
      public enum NavigationViewSelectionFollowsFocus
      public enum NavigationViewShoulderNavigationEnabled
      public class NavigationViewTemplateSettings : DependencyObject
      public class Panel : FrameworkElement {
        BrushTransition BackgroundTransition { get; set; }
      }
      public sealed class PasswordBox : Control {
        bool CanPasteClipboardContent { get; }
        public static DependencyProperty CanPasteClipboardContentProperty { get; }
        object Description { get; set; }
        public static DependencyProperty DescriptionProperty { get; }
        FlyoutBase SelectionFlyout { get; set; }
        public static DependencyProperty SelectionFlyoutProperty { get; }
        void PasteFromClipboard();
      }
      public class RelativePanel : Panel {
        BackgroundSizing BackgroundSizing { get; set; }
        public static DependencyProperty BackgroundSizingProperty { get; }
      }
      public class RichEditBox : Control {
        object Description { get; set; }
        public static DependencyProperty DescriptionProperty { get; }
        FlyoutBase ProofingMenuFlyout { get; }
        public static DependencyProperty ProofingMenuFlyoutProperty { get; }
       FlyoutBase SelectionFlyout { get; set; }
        public static DependencyProperty SelectionFlyoutProperty { get; }
        RichEditTextDocument TextDocument { get; }
        event TypedEventHandler<RichEditBox, RichEditBoxSelectionChangingEventArgs> SelectionChanging;
      }
      public sealed class RichEditBoxSelectionChangingEventArgs
      public sealed class RichTextBlock : FrameworkElement {
        FlyoutBase SelectionFlyout { get; set; }
        public static DependencyProperty SelectionFlyoutProperty { get; }
        void CopySelectionToClipboard();
      }
      public sealed class ScrollContentPresenter : ContentPresenter {
        bool CanContentRenderOutsideBounds { get; set; }
        public static DependencyProperty CanContentRenderOutsideBoundsProperty { get; }
        bool SizesContentToTemplatedParent { get; set; }
        public static DependencyProperty SizesContentToTemplatedParentProperty { get; }
      }
      public sealed class ScrollViewer : ContentControl, IScrollAnchorProvider {
        bool CanContentRenderOutsideBounds { get; set; }
        public static DependencyProperty CanContentRenderOutsideBoundsProperty { get; }
        UIElement CurrentAnchor { get; }
        double HorizontalAnchorRatio { get; set; }
        public static DependencyProperty HorizontalAnchorRatioProperty { get; }
        bool ReduceViewportForCoreInputViewOcclusions { get; set; }
        public static DependencyProperty ReduceViewportForCoreInputViewOcclusionsProperty { get; }
        double VerticalAnchorRatio { get; set; }
        public static DependencyProperty VerticalAnchorRatioProperty { get; }
        event TypedEventHandler<ScrollViewer, AnchorRequestedEventArgs> AnchorRequested;
        public static bool GetCanContentRenderOutsideBounds(DependencyObject element);
        void RegisterAnchorCandidate(UIElement element);
        public static void SetCanContentRenderOutsideBounds(DependencyObject element, bool canContentRenderOutsideBounds);
        void UnregisterAnchorCandidate(UIElement element);
      }
      public class SplitButton : ContentControl
      public class SplitButtonAutomationPeer : FrameworkElementAutomationPeer, IExpandCollapseProvider, IInvokeProvider
      public sealed class SplitButtonClickEventArgs
      public class StackPanel : Panel, IInsertionPanel, IScrollSnapPointsInfo {
        BackgroundSizing BackgroundSizing { get; set; }
        public static DependencyProperty BackgroundSizingProperty { get; }
      }
      public sealed class TextBlock : FrameworkElement {
        FlyoutBase SelectionFlyout { get; set; }
        public static DependencyProperty SelectionFlyoutProperty { get; }
        void CopySelectionToClipboard();
      }
      public class TextBox : Control {
        bool CanPasteClipboardContent { get; }
        public static DependencyProperty CanPasteClipboardContentProperty { get; }
        bool CanRedo { get; }
        public static DependencyProperty CanRedoProperty { get; }
        bool CanUndo { get; }
        public static DependencyProperty CanUndoProperty { get; }
        object Description { get; set; }
        public static DependencyProperty DescriptionProperty { get; }
        FlyoutBase ProofingMenuFlyout { get; }
        public static DependencyProperty ProofingMenuFlyoutProperty { get; }
        FlyoutBase SelectionFlyout { get; set; }
        public static DependencyProperty SelectionFlyoutProperty { get; }
        event TypedEventHandler<TextBox, TextBoxSelectionChangingEventArgs> SelectionChanging;
        void ClearUndoRedoHistory();
        void CopySelectionToClipboard();
        void CutSelectionToClipboard();
        void PasteFromClipboard();
        void Redo();
        void Undo();
      }
      public sealed class TextBoxSelectionChangingEventArgs
      public class TextCommandBarFlyout : CommandBarFlyout
      public class TimePicker : Control {
        IReference<TimeSpan> SelectedTime { get; set; }
        public static DependencyProperty SelectedTimeProperty { get; }
        event TypedEventHandler<TimePicker, TimePickerSelectedValueChangedEventArgs> SelectedTimeChanged;
      }
      public sealed class TimePickerSelectedValueChangedEventArgs
      public class ToggleSplitButton : SplitButton
      public class ToggleSplitButtonAutomationPeer : FrameworkElementAutomationPeer, IExpandCollapseProvider, IToggleProvider
      public sealed class ToggleSplitButtonIsCheckedChangedEventArgs
      public class ToolTip : ContentControl {
        IReference<Rect> PlacementRect { get; set; }
        public static DependencyProperty PlacementRectProperty { get; }
      }
      public class TreeView : Control {
        bool CanDragItems { get; set; }
        public static DependencyProperty CanDragItemsProperty { get; }
        bool CanReorderItems { get; set; }
        public static DependencyProperty CanReorderItemsProperty { get; }
        Style ItemContainerStyle { get; set; }
        public static DependencyProperty ItemContainerStyleProperty { get; }
        StyleSelector ItemContainerStyleSelector { get; set; }
        public static DependencyProperty ItemContainerStyleSelectorProperty { get; }
        TransitionCollection ItemContainerTransitions { get; set; }
        public static DependencyProperty ItemContainerTransitionsProperty { get; }
        object ItemsSource { get; set; }
        public static DependencyProperty ItemsSourceProperty { get; }
        DataTemplate ItemTemplate { get; set; }
        public static DependencyProperty ItemTemplateProperty { get; }
        DataTemplateSelector ItemTemplateSelector { get; set; }
       public static DependencyProperty ItemTemplateSelectorProperty { get; }
        event TypedEventHandler<TreeView, TreeViewDragItemsCompletedEventArgs> DragItemsCompleted;
        event TypedEventHandler<TreeView, TreeViewDragItemsStartingEventArgs> DragItemsStarting;
        DependencyObject ContainerFromItem(object item);
        DependencyObject ContainerFromNode(TreeViewNode node);
        object ItemFromContainer(DependencyObject container);
        TreeViewNode NodeFromContainer(DependencyObject container);
      }
      public sealed class TreeViewCollapsedEventArgs {
        object Item { get; }
      }
      public sealed class TreeViewDragItemsCompletedEventArgs
      public sealed class TreeViewDragItemsStartingEventArgs
      public sealed class TreeViewExpandingEventArgs {
        object Item { get; }
      }
      public class TreeViewItem : ListViewItem {
        bool HasUnrealizedChildren { get; set; }
        public static DependencyProperty HasUnrealizedChildrenProperty { get; }
        object ItemsSource { get; set; }
        public static DependencyProperty ItemsSourceProperty { get; }
      }
      public sealed class WebView : FrameworkElement {
        event TypedEventHandler<WebView, WebViewWebResourceRequestedEventArgs> WebResourceRequested;
      }
      public sealed class WebViewWebResourceRequestedEventArgs
    }
    namespace Windows.UI.Xaml.Controls.Maps {
      public enum MapTileAnimationState
      public sealed class MapTileBitmapRequestedEventArgs {
        int FrameIndex { get; }
      }
      public class MapTileSource : DependencyObject {
        MapTileAnimationState AnimationState { get; }
        public static DependencyProperty AnimationStateProperty { get; }
        bool AutoPlay { get; set; }
        public static DependencyProperty AutoPlayProperty { get; }
        int FrameCount { get; set; }
        public static DependencyProperty FrameCountProperty { get; }
        TimeSpan FrameDuration { get; set; }
        public static DependencyProperty FrameDurationProperty { get; }
        void Pause();
        void Play();
        void Stop();
      }
      public sealed class MapTileUriRequestedEventArgs {
        int FrameIndex { get; }
      }
    }
    namespace Windows.UI.Xaml.Controls.Primitives {
      public class CommandBarFlyoutCommandBar : CommandBar
      public sealed class CommandBarFlyoutCommandBarTemplateSettings : DependencyObject
      public class FlyoutBase : DependencyObject {
        bool AreOpenCloseAnimationsEnabled { get; set; }
        public static DependencyProperty AreOpenCloseAnimationsEnabledProperty { get; }
        bool InputDevicePrefersPrimaryCommands { get; }
        public static DependencyProperty InputDevicePrefersPrimaryCommandsProperty { get; }
        bool IsOpen { get; }
        public static DependencyProperty IsOpenProperty { get; }
        FlyoutShowMode ShowMode { get; set; }
        public static DependencyProperty ShowModeProperty { get; }
        public static DependencyProperty TargetProperty { get; }
        void ShowAt(DependencyObject placementTarget, FlyoutShowOptions showOptions);
      }
      public enum FlyoutPlacementMode {
        Auto = 13,
        BottomEdgeAlignedLeft = 7,
        BottomEdgeAlignedRight = 8,
        LeftEdgeAlignedBottom = 10,
        LeftEdgeAlignedTop = 9,
        RightEdgeAlignedBottom = 12,
        RightEdgeAlignedTop = 11,
        TopEdgeAlignedLeft = 5,
        TopEdgeAlignedRight = 6,
      }
      public enum FlyoutShowMode
      public class FlyoutShowOptions
      public class NavigationViewItemPresenter : ContentControl
    }
    namespace Windows.UI.Xaml.Core.Direct {
      public interface IXamlDirectObject
      public sealed class XamlDirect
      public struct XamlDirectContract
      public enum XamlEventIndex
      public enum XamlPropertyIndex
      public enum XamlTypeIndex
    }
    namespace Windows.UI.Xaml.Hosting {
      public class DesktopWindowXamlSource : IClosable
      public sealed class DesktopWindowXamlSourceGotFocusEventArgs
      public sealed class DesktopWindowXamlSourceTakeFocusRequestedEventArgs
      public sealed class WindowsXamlManager : IClosable
      public enum XamlSourceFocusNavigationReason
      public sealed class XamlSourceFocusNavigationRequest
      public sealed class XamlSourceFocusNavigationResult
    }
    namespace Windows.UI.Xaml.Input {
      public sealed class CanExecuteRequestedEventArgs
      public sealed class ExecuteRequestedEventArgs
      public sealed class FocusManager {
        public static event EventHandler<GettingFocusEventArgs> GettingFocus;
        public static event EventHandler<FocusManagerGotFocusEventArgs> GotFocus;
        public static event EventHandler<LosingFocusEventArgs> LosingFocus;
        public static event EventHandler<FocusManagerLostFocusEventArgs> LostFocus;
      }
      public sealed class FocusManagerGotFocusEventArgs
      public sealed class FocusManagerLostFocusEventArgs
      public sealed class GettingFocusEventArgs : RoutedEventArgs {
        Guid CorrelationId { get; }
      }
      public sealed class LosingFocusEventArgs : RoutedEventArgs {
        Guid CorrelationId { get; }
      }
      public class StandardUICommand : XamlUICommand
      public enum StandardUICommandKind
      public class XamlUICommand : DependencyObject, ICommand
    }
    namespace Windows.UI.Xaml.Markup {
      public sealed class FullXamlMetadataProviderAttribute : Attribute
      public interface IXamlBindScopeDiagnostics
      public interface IXamlType2 : IXamlType
    }
    namespace Windows.UI.Xaml.Media {
      public class Brush : DependencyObject, IAnimationObject {
        void PopulatePropertyInfo(string propertyName, AnimationPropertyInfo propertyInfo);
        virtual void PopulatePropertyInfoOverride(string propertyName, AnimationPropertyInfo animationPropertyInfo);
      }
    }
    namespace Windows.UI.Xaml.Media.Animation {
      public class BasicConnectedAnimationConfiguration : ConnectedAnimationConfiguration
      public sealed class ConnectedAnimation {
        ConnectedAnimationConfiguration Configuration { get; set; }
      }
      public class ConnectedAnimationConfiguration
      public class DirectConnectedAnimationConfiguration : ConnectedAnimationConfiguration
      public class GravityConnectedAnimationConfiguration : ConnectedAnimationConfiguration
      public enum SlideNavigationTransitionEffect
      public sealed class SlideNavigationTransitionInfo : NavigationTransitionInfo {
        SlideNavigationTransitionEffect Effect { get; set; }
        public static DependencyProperty EffectProperty { get; }
      }
    }
    namespace Windows.UI.Xaml.Navigation {
      public class FrameNavigationOptions
    }
    namespace Windows.Web.UI {
      public interface IWebViewControl2
      public sealed class WebViewControlNewWindowRequestedEventArgs {
        IWebViewControl NewWindow { get; set; }
        Deferral GetDeferral();
      }
      public enum WebViewControlPermissionType {
        ImmersiveView = 6,
      }
    }
    namespace Windows.Web.UI.Interop {
      public sealed class WebViewControl : IWebViewControl, IWebViewControl2 {
        event TypedEventHandler<WebViewControl, object> GotFocus;
        event TypedEventHandler<WebViewControl, object> LostFocus;
        void AddInitializeScript(string script);
      }
    }
     
    

    Removals:

    
    namespace Windows.Gaming.UI {
      public sealed class GameMonitor
      public enum GameMonitoringPermission
    }
    
    

    Additional Store Win32 APIs

    The following APIs have been added to the Application Certification Kit list.

    • CM_Get_Device_Interface_List_SizeA
    • CM_Get_Device_Interface_List_SizeW
    • CM_Get_Device_Interface_ListA
    • CM_Get_Device_Interface_ListW
    • CM_MapCrToWin32Err
    • CM_Register_Notification
    • CM_Unregister_Notification
    • CoDecrementMTAUsage
    • CoIncrementMTAUsage
    • ColorAdapterGetCurrentProfileCalibration
    • ColorAdapterGetDisplayCurrentStateID
    • ColorAdapterGetDisplayProfile
    • ColorAdapterGetDisplayTargetWhitePoint
    • ColorAdapterGetDisplayTransformData
    • ColorAdapterGetSystemModifyWhitePointCaps
    • ColorAdapterRegisterOEMColorService
    • ColorAdapterUnregisterOEMColorService
    • ColorProfileAddDisplayAssociation
    • ColorProfileGetDisplayDefault
    • ColorProfileGetDisplayList
    • ColorProfileGetDisplayUserScope
    • ColorProfileRemoveDisplayAssociation
    • ColorProfileSetDisplayDefaultAssociation
    • DeviceIoControl
    • EventEnabled
    • EventProviderEnabled
    • ExitProcess
    • GetProductInfo
    • GetSystemTimes
    • InstallColorProfileA
    • InstallColorProfileW
    • LocalFileTimeToLocalSystemTime
    • LocalSystemTimeToLocalFileTime
    • MLCreateOperatorRegistry
    • RoIsApiContractMajorVersionPresent
    • RoIsApiContractPresent
    • RtlVirtualUnwind
    • SetProcessValidCallTargetsForMappedView
    • sqlite3_value_nochange
    • sqlite3_vtab_collation
    • sqlite3_vtab_nochange
    • sqlite3_win32_set_directory
    • sqlite3_win32_set_directory16
    • sqlite3_win32_set_directory8
    • ubiditransform_close
    • ubiditransform_open
    • ubiditransform_transform
    • ubrk_getBinaryRules
    • ubrk_openBinaryRules
    • unum_formatDoubleForFields
    • uplrules_getKeywords
    • uspoof_check2
    • uspoof_check2UTF8
    • uspoof_closeCheckResult
    • uspoof_getCheckResultChecks
    • uspoof_getCheckResultNumerics
    • uspoof_getCheckResultRestrictionLevel
    • uspoof_openCheckResult

    The post Windows 10 SDK Preview Build 17763 available now! appeared first on Windows Developer Blog.


    R developer’s guide to Azure

    $
    0
    0

    If you want to run R in the cloud, you can of course run it in a virtual machine in the cloud provider of your choice. And you can do that in Azure too. But Azure provides seven dedicated services that provide the ability to run R code, and you can learn all about them in the new R Developer's Guide to Azure at Microsoft Docs. The services include:

    Click on the links above for detailed documentation on how to run R in each of these services. Like all Microsoft Docs this guide is hosted in Github, so if you have suggestions for modifications or additions to this document, you can use the "Content Feedback" link to provide suggestions directly in the repository.

    Microsoft Docs: R developer's guide to Azure

    .NET Framework September 2018 Preview of Quality Rollup

    $
    0
    0

    Late last week we released the September 2018 Preview of Quality Rollup.

    Quality and Reliability

    This release contains the following quality and reliability improvements.

    CLR

    • Updated code to prevent errors regarding invalid date format when Japanese Era 4 is used with a future date [568291]
    • Parsing Japanese dates having a year number exceeding the number of years in that date era will succeed instead of throwing errors [603100]
    • When asynchronously reading a process output an IndexOutOfRangeException is thrown when less than a character’s worth of bytes is read at the beginning of a line [621951]
    • Fix in the JIT compiler for a rare case of struct field assignments, described here: https://github.com/Microsoft/dotnet/issues/779 [641182]
    • DateTime.Now and DateTime.Utc will now always be synchronized with the system time, DateTime and DateTimeOffset operations will continue to work as it used to work [645660]
    • Spin-waits in several synchronization primitives were conditionally improved to perform better on Intel Skylake and more recent microarchitectures. To enable these improvements, set the new configuration variable COMPlus_Thread_NormalizeSpinWait to 1. [647729]
    • Corrected JIT optimization which resulted in removal of interlocked Compare Exchange operation [653568]

    WPF

    • Under certain circumstances, WPF applications using the spell-checker that use custom dictionaries can throw unexpected excpetions and crash [622262]

    Note: Additional information on these improvements is not available. The VSTS bug number provided with each improvement is a unique ID that you can give Microsoft Customer Support, include in StackOverflow commentsor use in web searches.

    Getting the Update

    The Security and Quality Rollup is available via Windows Update, Windows Server Update Services, Microsoft Update Catalog, and Docker.

    Microsoft Update Catalog

    You can get the update via the Microsoft Update Catalog. For Windows 10, .NET Framework updates are part of the Windows 10 Monthly Rollup.

    The following table is for Windows 10 and Windows Server 2016+ versions.

    Product Version Preview of Quality Rollup KB
    Windows 10 1803 (April 2018 Update) Catalog
    4458469
    .NET Framework 3.5 4458469
    .NET Framework 4.7.2 4458469
    Windows 10 1709 (Fall Creators Update) Catalog
    4457136
    .NET Framework 3.5 4457136
    .NET Framework 4.7.1, 4.7.2 4457136
    Windows 10 1703 (Creators Update) Catalog
    4457141
    .NET Framework 3.5 4457141
    .NET Framework 4.7, 4.7.1, 4.7.2 4457141
    Windows 10 1607 (Anniversary Update)
    Windows Server 2016
    Catalog
    4457127
    .NET Framework 3.5 4457127
    .NET Framework 4.6.2, 4.7, 4.7.1, 4.7.2 4457127

    The following table is for earlier Windows and Windows Server versions.

    Product Version Preview of Quality Rollup KB
    Windows 8.1
    Windows RT 8.1
    Windows Server 2012 R2
    Catalog
    4458613
    .NET Framework 3.5 4457009
    .NET Framework 4.5.2 4457017
    .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2 4458612
    Windows Server 2012 Catalog
    4458612
    .NET Framework 3.5 4457008
    .NET Framework 4.5.2 4457018
    .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2 4457014
    Windows 7
    Windows Server 2008 R2
    Catalog
    4458611
    .NET Framework 3.5.1 4457008
    .NET Framework 4.5.2 4457019
    .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2 4457014
    Windows Server 2008 Catalog
    4458614
    .NET Framework 2.0, 3.0 4457007
    .NET Framework 4.5.2 4457019
    .NET Framework 4.6 4457014

    Previous Monthly Rollups

    The last few .NET Framework Monthly updates are listed below for your convenience:

    Go Cloud-native with Spring Cloud on Azure

    $
    0
    0

    Spring Framework and its ecosystem are widely adopted by Java developers to build web applications. We are collaborating closely with Pivotal developers to bring a rich Spring on Azure experience to Java developers for existing and new cloud-native apps. To this point, we wanted to enable streamlined efforts for running Spring apps in the cloud and we are excited to announce the Spring Cloud for Azure project. In addition, with the new Spring Boot Extension Pack in Visual Studio Code, you can have a lightweight development experience with your Spring Boot applications.

    Spring Cloud Azure

    Spring Cloud provides boilerplate patterns for developers to quickly build and orchestrate microservice based applications. Extending this further, Spring Cloud on Azure is designed to provide seamless Spring integration with Azure services and allows developers to leverage Azure’s secure infrastructure and geographic reach worldwide. Developers can adopt a Spring-idiomatic way to automatically provision resources and take advantage of services on Azure, with only few lines of configuration and minimal code changes.

    Key Spring Cloud on Azure modules now include:

    Module

    Spring Library

    Features

    Spring Cloud Stream Binder for Event Hub Spring Cloud Stream Provides the binder implementation for Spring Cloud Stream with Azure Event Hub service.
    Spring Resource with Azure Storage Spring Resource Provides the implementation for Spring Resource with Azure Storage Blob.
    Spring Caching with Azure Redis Cache Spring Caching Auto configuration for Spring Caching with Azure Redis Cache.

    The Spring Cloud on Azure modules are now available on Maven Central Repository. This is just the start so stay tuned for more updates on upcoming Spring Cloud modules. To get started, visit the Spring on Azure documentation and try it out with these samples.

    Spring Boot Development in VS Code

    Visual Studio Code is a free open source editor with powerful Spring and Java support. The Spring Boot Extension Pack in Visual Studio Code provides you with a lightweight developer experience for your Spring Boot application development. Check out the Build Spring Boot App with VS Code tutorial for more details. For more details, go to:

    • Spring Initializr for managing Spring dependencies and generating new projects.
    • Spring Boot Tools to provide validation and content assistance for Spring Boot projects.
    • Boot Dashboard (preview) to manage Spring Boot applications in VS Code workspace.

    Next step

    Check out the Spring on Azure documentation to get started. Also, don’t forget to try Visual Studio Code for a faster and leaner experience with building Java and Spring apps.

    Manage Azure Monitor using Java

    $
    0
    0

    Azure Monitor maximizes the availability and performance of your applications by delivering an end-to-end monitoring solution for collecting, analyzing, and acting on telemetry from your cloud and on-premises environments. It helps you understand how your applications are performing and proactively identifies issues affecting them and the resources they depend on. Today, we released version 1.16 of the Azure Management Libraries for Java. Now you can programmatically manage Azure Monitor using Azure Management Libraries for Java, specifically, you can:

    • Manage Diagnostic Settings
    • Stream logs and metrics to Event Hub, Storage Account or Log Analytics
    • Query Metrics
    • Set up Metric Alerts
    • Query Activity Logs
    • Set up Activity Log Alerts
    • Setup Auto Scale
    • Perform Advanced Analytics

    If you you’re ready to dive right in, go to the Azure Management Libraries for Java GitHub repo:

    Getting started

    Add the following dependency fragment to your Maven POM file to use 1.16 version of the libraries:

    <dependency>
         <groupId>com.microsoft.azure</groupId>
         <artifactId>azure</artifactId>
         <version>1.16.0</version>
    </dependency>

    Stream Azure Service Logs and Metrics through Event Hub

    Azure diagnostic logs – service and app logs from managed Azure services and resources – can be streamed in near real-time to any third-party logging and telemetry systems of your choice, such as Elastic Stack, Splunk or Grafana, by creating an Event Hub and streaming service logs and metrics to the Event Hub:

    DiagnosticSetting ds = azure.diagnosticSettings()
         .define("DiaEventHub")
         .withResource(docDb.id())
         .withEventHub(eventHubAuthRule.id(), "MyEventHub")
         .withLog("DataPlaneRequests", 0)
         .withLog("MongoRequests", 0)
         .withMetric("AllMetrics", Period.minutes(5), 0)
         .create();

    Read on for the full sample code.

    Query Metrics

    Through metrics emitted by Azure resources, Azure Monitor enables you to gain visibility into the performance and health of Azure services and your applications running on Azure. Using Java code, you can query metrics for any Azure resources, for example:

    // Get metric definitions for storage account
    for (MetricDefinition metricDefinition : azure.metricDefinitions().listByResource(storageAccount.id())) {
         // Find metric definition for Transactions
            if (metricDefinition.name().localizedValue().equalsIgnoreCase("transactions")) {
                 // Query metric records
                 MetricCollection metricCollection = metricDefinition.defineQuery()
                      .startingFrom(recordDateTime.minusDays(7))
                      .endsBefore(recordDateTime)
                      .withAggregation("Average")
                      .withInterval(Period.minutes(5))
                      .withOdataFilter
                        ("apiName eq 'PutBlob' and responseType eq 'Success' and geoType eq 'Primary'")
                      .execute();
                       …

    Read on for the full sample code.

    Query Activity Logs

    Azure Activity Log is a subscription log that provides insights into subscription-level events occurring in Azure. These events include a range of data from Azure Resource Manager operational data to service health updates. Using activity logs, you can determine who, when and what changes were applied on resources in your subscription.

    You can query activity logs for the same period from the previous example.

    // Query activity logs
    PagedList<EventData> logs = azure.activityLogs().defineQuery()
         .startingFrom(recordDateTime.minusDays(7))
         .endsBefore(recordDateTime)
         .withAllPropertiesInResponse()
         .filterByResource(storageAccount.id())
         .execute();
     
    for (EventData event : logs) {
         ...
         System.out.println("tCaller: " + event.caller());
         System.out.println("tCorrelationId: " + event.correlationId());
         System.out.println("tSubscriptionId: " + event.subscriptionId());
    }

    Read on for the full sample code.

    Setup Metric Alerts

    An Action Group is a collection of notification preferences that can be defined by you. Notifications can be configured to call a telephone number, send an SMS message, send an e-mail, call a Web hook, send data to an ITSM tool, call a Logic App in Azure or send push notifications to the Azure app.

    Using Java code, you can create an Action Group to be notified when metric alert conditions are triggered:

    ActionGroup ag = azure.actionGroups().define("criticalPerformanceActionGroup")
         .withExistingResourceGroup(rgName)
         .defineReceiver("tierOne")
             .withPushNotification("ops_on_duty@performancemonitoring.com")
             .withEmail("ops_on_duty@performancemonitoring.com")
             .withSms("1", "4255655665")
             .withVoice("1", "2062066050")
             .withWebhook("https://www.weeneedmorepower.performancemonitoring.com")
         .attach()
         .defineReceiver("tierTwo")
              .withEmail("ceo@performancemonitoring.com")
              .attach()
         .create();

    Then, create a Metric Alert for triggering notifications. For example, you can create a metric alert which triggers notifications when there are critical changes to the performance of Web apps on Azure App Service:

    MetricAlert ma = azure.alertRules().metricAlerts().define("Critical performance alert")
         .withExistingResourceGroup(rgName)
         .withTargetResource(servicePlan.id())
         .withPeriod(Period.minutes(5))
         .withFrequency(Period.minutes(1))
         .withAlertDetails(3,
              "Single Resource with Multiple Criteria, Multiple Dimensions and Wildcard")
         .withActionGroups(ag.id())
         .defineAlertCriteria("Metric1")
             .withMetricName("CPUPercentage", "Microsoft.Web/serverfarms")
             .withCondition(MetricAlertRuleCondition.GREATER_THAN,
                  MetricAlertRuleTimeAggregation.TOTAL, 80)
             .withDimension("Instance", "*")
             .attach()
        
         .create();

    Read on for the full sample code.

    Setup Activity Log Alerts

    Just like metric alerts, you can audit and receive notifications when important events or activities are occurring in your subscription through Activity Log Alerts. You can create an activity log alert and specify an action group to be notified.

    For example, using Java code, you can setup an activity log alert for potential security breaches and send notifications to users:

    ActivityLogAlert ala = azure.alertRules().activityLogAlerts().define("Potential security breach alert")
         .withExistingResourceGroup(rgName)
         .withTargetSubscription(azure.subscriptionId())
         .withDescription("Security StorageAccounts ListAccountKeys trigger")
         .withRuleEnabled()
         .withActionGroups(ag.id())
         // fire an alert when all conditions below are true
         .withEqualsCondition("category", "Security")
         .withEqualsCondition("resourceId", storageAccount.id())
         .withEqualsCondition("operationName", "Microsoft.Storage/storageAccounts/listkeys/action")
         .create();

    Read on for the full sample code.

    Setup Autoscale

    Autoscale allows you to have the right amount of resources running to handle the load on your applications. It allows you to add instances to handle increases in load and save money by removing instances that are idling. You can define configuration of auto scale-out and scale-in rules by using a define() and create() method chain.

    For example, using Java code, you can setup auto scale to scale out or scale instances based on pre-defined conditions, say the number of HTTP requests received by Web apps on App Service:

    AutoscaleSetting scaleSettings = azure.autoscaleSettings().define(autoscaleSettingsName)
         .withRegion(Region.US_SOUTH_CENTRAL)
         .withExistingResourceGroup(rgName)
         .withTargetResource(webapp.appServicePlanId())
         // define default profile
         .defineAutoscaleProfile("Default profile")
              .withFixedInstanceCount(1)
              .attach()
         // defining Monday to Friday profile
         .defineAutoscaleProfile("Monday to Friday")
              .withMetricBasedScale(1, 2, 1)
              // create a scale-out rule
              .defineScaleRule()
                   ...
                   .attach()
              // create a scale-in rule
              .defineScaleRule()
                   ...        
                   .attach()
              // create schedule for auto scale
              .withRecurrentSchedule("Pacific Standard Time", "09:00",
                   DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY,
                   DayOfWeek.THURSDAY, DayOfWeek.FRIDAY)
              .attach()
              // define end time for the "Monday to Friday" profile specified above
              ...
         .create();

    Read on for the full sample code.

    Try managing Azure Monitor using Java today

    Test it out, stream logs and metrics from managed Azure services and resources, setup some alerts, put some load on them and see for yourself how these telemetry data can help with performance and root cause analysis troubleshooting. Tell us what you think (via e-mail or comments below).

    You can get more samples from our GitHub repo.

    Additional resources

    A new way to send custom metrics to Azure Monitor

    $
    0
    0

    In today’s world of modern applications, metrics play a key role in helping you understand how your apps, services, and the infrastructure they run on, are performing. They can help you detect, investigate, and diagnose issues when they crop up. To provide you this level of visibility Azure has made resource-level platform metrics available via Azure Monitor. However, many of you need to collect more metrics, and unlock deeper insights about the resources and applications you are running in your hybrid environment.

    To accomplish this, you have already been able to send custom metrics from your apps via Application Insights SDKs. Today, we are happy to announce the public preview of custom metrics in Azure Monitor, now enabling you to submit metrics, collected anywhere, for any Azure resource. These metrics can be additional performance indicators, like Memory Utilization, about your resources; or business-related metrics emitted by your application, like page load times. As part of the unified metric experience in Azure Monitor, now you can:

    • Send custom metrics with up to 10 dimensions
    • Categorize and segregate metrics using namespaces
    • Leverage a unified set of metrics and alerts experiences via Azure Monitor
      • Plot custom metrics alongside your resources’ platform metrics in charts and dashboards on the Azure Portal
      • Access your custom metrics via the same set of REST APIs as your platform metrics
      • Author and configure alert rules on any custom metric emitted to Azure Monitor; with added support to enable you to filter on any dimensions the metric has
    • Three months of retention of your custom metrics, preserved at 1-min granularity

    You can send your custom metrics to Azure Monitor in a few different ways:

    Read on to learn how you can get started on emitting your custom metrics to Azure Monitor.

    Emit metrics from your Windows VMs

    Many of you use the Azure Diagnostics Extensions (Windows and Linux) on Azure VMs and Classic Cloud Services to collect detailed guest OS level performance data. Previously, these diagnostics extensions allowed you to send the data to your Storage Tables and supported a limited set of metrics experiences on top of these guest-OS metrics.

    As part of today’s release, we have upgraded the Windows Diagnostic Extension to have the option to send your performance counters directly to the Azure Monitor. This means you can chart, alert on, query, and filter on dimensions for Windows guest-OS metrics directly via the Azure Monitor experiences and REST APIs. We have published a walkthrough on how to install and configure the diagnostics extension. Sending guest OS metrics to Azure Monitor using the Linux diagnostics extension is not available at this time but will be coming soon.

    Azure%20Monitor%20-%20VM%20Guest%20and%20Platform%20Metrics

    A chart showing a guest OS metric (‘Memory/% Committed Bytes’) and a platform metric (‘Percentage CPU’) plotted side-by-side for a Windows Virtual Machine

    Emit metrics from your Linux VMs using InfluxData’s Telegraf plugin agent

    There’s a rich ecosystem of open source monitoring tools that enable you to collect metrics for workloads running on Linux VMs. Telegraf, is one such popular open-source agent. That is why we worked with our partners at InfluxData, the team behind this agent, to build an integration with Azure Monitor.

    Telegraf is an open-source plugin-driven agent that enables the collection of metrics from over 150 different sources (depending on what’s running on your VM). Most of these plugins are contributed by the community which means you can expect even more collector agents to become available in the coming months. Output plugins, then enable the agent to write to destinations of your choosing. The agent integrated directly with our custom metrics REST API, and now supports a brand new “Azure Monitor Output plugin”. This enables you to install the Telegraf agent and collect metrics about the workloads (ex. MySQL, NGINX etc.) running on your Linux VM and have them published to Azure Monitor as custom metrics. Here is a quick walkthrough on how to set this up yourself!

    Unified experience for Application Insights SDK emitted metrics

    As part of Application Insights, you’ve always had the ability to use the Application Insights SDK to instrument your code to collect insights about your application and emit these as custom metrics. From there you were able to alert on these metrics and plot charts with the ability to split and filter on dimensions. Today we are enabling you to alert on dimensions as well; this is automatically available for all standard metrics emitted by Application Insights. To enable alerting on dimensions for your custom metrics there is a simple opt-in experience for your Application Insights component.

    Pricing

    All resource-level platform metrics will continue to be available to you for free. Custom metrics emitted against Azure resources will be metered. Custom metrics will be free for the first 150MB per month, after which they will be subject to metering based on the volume of data ingested.

    Application Insights customers will continue to be metered based on the current Application Insights pricing model with no changes. Enabling dimensional alerting on custom metrics is completely optional, opting into this feature will be subject to custom metrics metering.

    More information on the pricing of these features can be found here.

    Wrapping up

    Azure already gives you visibility into how your resources are performing with platform metrics via Azure Monitor. Now, you can supplement these metrics by emitting your own custom metrics about your applications and resources to Azure Monitor. We are excited about this initial release and in the coming months will continue to make this available in more Azure regions, add more features, and enable other capabilities across Azure Monitor to take advantage of custom metrics. We would love to hear from you as you try this out; drop us a comment, or head over to User Voice to let us know what you think!

    Viewing all 5971 articles
    Browse latest View live


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