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

Don’t let this Black Friday/Cyber Monday spam deliver Locky ransomware to you

$
0
0

We see it every year: social engineering attacks that take advantage of the online shopping activities around Black Friday and Cyber Monday, targeting customers of online retailers. This year, we’re seeing a spam campaign that Amazon customers need to be wary of. The fake emails pretend to be notifications from the online retailer that a purchase has been sent out for delivery. To appear legitimate, the emails may also spoof delivery companies.

These email messages start an infection chain that leads to a ransomware infection. You don’t want to find yourself at the end of this chain, because by then, your files will have been encrypted by the malware.

blackfridayspam3

Figure 1: The Black Friday themed spam triggers an infection chain that leads to a ransomware infection

But, as it’s a chain of events, you can stop the infection at several points. Let’s trace the infection chain:

  1. The email is a fake Amazon notification. You can detect that it’s fake, because even if it tries to look as legitimate as possible, it still doesn’t look like the usual Amazon email. Amazon lists components of a fake email here: https://www.amazon.com/gp/help/customer/display.html?nodeId=15835501
  2. The attachment is a ZIP file. Don’t open this attachment.  It contains as JavaScript (.js) file, not a file type often sent in legitimate email communications.
  3. The JavaScript in the ZIP file is obfuscated. Don’t open this script. It’s a Nemucod malware that downloads the payload. Windows Defender detects this JavaScript downloader.
  4. The downloaded file is a ransomware detected as Ransom:Win32/Locky.A. Windows Defender detects this malware.

Locky is a ransomware family that encrypts files using a public key. It’s been known to be spread by the downloader Nemucod. We have been tracking the Nemucod-Locky tandem, and we have seen it evolve over time, changing attachment file names and social engineering lures. This Black Friday/Cyber Monday version is just the latest of what looks like a continuous campaign.

Here are samples of the fake Amazon email messages:

black-friday-email-1

Figure 2: A sample fake Amazon email that also spoofs Royal Mail as the courier

black-friday-email-2

Figure 3: A sample fake Amazon email that also spoofs FedEx as the courier

black-friday-email-3

Figure 4: A sample fake Amazon email that also spoofs DHL as the courier

In what looks like an attempt to evade anti-spam solutions that depend on the hash of the email body, the character “=” is added in random places in the email. The malware authors could have reused the message from a previous spam campaign, and needed only to change the positions of the added character. This changes the hash of the email body, and it might prove effective against some email filters.

The email attachment is a ZIP file that contains an obfuscated JavaScript (.js) file, detected as TrojanDownloader:JS/Nemucod:

black-friday-spam-javascript-in-zip

Figure 5: The ZIP attachment contains a malicious JavaScript file

black-friday-spam-obfuscated-javascript

Figure 6: The JavaScript file is obfuscated

When opened, the JavaScript connects to the following URLs to download a file:

  • hxxp:// livingnetwork .co.za/hfvg623?zvMNzYWImo=zvMNzYWImo
  • hxxp:// ayurvedic .by/hfvg623?zvMNzYWImo=zvMNzYWImo
  • hxxp:// marcelrahner .com/hfvg623?zvMNzYWImo=zvMNzYWImo
  • hxxp:// copeigoan .net/hfvg623?zvMNzYWImo=zvMNzYWImo
  • hxxp:// sheerfoldy .com/hfvg623?zvMNzYWImo=zvMNzYWImo

The downloaded file is an encrypted blob, which the JavaScript decrypts to a .DLL file and then executes. This file is a DLL version of Ransom:Win32/Locky.A.

Ransom:Win32/Locky.A encrypts files and renames them to this format: [victim computer ID] – [hexadecimal file identifier].aeris. The extension .aeris is the latest in a list that Locky has used for the files it encrypts: .locky, .zepto, .odin, .shit, and .thor.

The ransomware assigns an ID to the victim computer, which it uses for the file name of encrypted files. It then connects to command-and-control (C&C) servers to report this ID and other information about the infected computer.

It drops the following ransom note, which instructs the victim to pay to regain access to the files: %Desktop%\-INSTRUCTION.bmp:

black-friday-infection-ransom-note

Figure 7: Ransom:Win32/Locky.A leaves this ransom note

The malware analyzed for the blog post have the following SHA1:

  • TrojanDownloader:JS/Nemucod (JavaScript downloader)
    • 4ef30bdcf4e858f6ed28c88434786c014b027fcc
    • 5e484feb2b9b7639b3a8c61a726f28087fbf3709
    • df774d57a6491d83c0add823f4c04ca83b0d8b6c
    • ec2046c728094f08e701339cde7dd205d4126d43
  • Ransom:Win32/Locky.A (Decrypted payload)
    • 1734ef2d44bdc71bdf81de0726a8da072d352ded
    • 449e33faef1646a667a44ea7d0e1bf0e924afade

Prevention and mitigation

To avoid falling prey to this new ransomware, here are some tips:

For end users

  • Use an up-to-date, real-time antimalware product, such as Windows Defender for Windows 10.
  • Think before you click. Do not open emails from senders you don’t recognize.  Upload any suspicious files here: https://www.microsoft.com/en-us/security/portal/submission/submit.aspx. This campaign spoofs Amazon and the delivery companies Royal Mail, DHL, and FedEx. The attachment is a ZIP file, which may be a common attachment type, but it contains a .JS file. Be mindful of what the attachment is supposed to be (in this case, most likely a document) and the actual file type (a script).

For IT administrators

 

Duc Nguyen and Wei Li

MMPC


SQL Server 2016 SP1: Known issues

$
0
0

The SQL Product team has identified the following known issues which the customers may encounter after installing SQL Server 2016 SP1. The following post will help the customers  plan and prepare their environment for the following known issues while installing SQL Server 2016 SP1.

SQL Server Reporting Services (SSRS)

If Reporting Services is set to use a secure (https/SSL) connection, a warning about security content may be displayed or Print function may not work after installing SQL Server 2016 SP1. Please install the fix KB 3207512 (Build 13.0.4199.0) which contains the fix for the issue.

SQL Server Integration Services (SSIS)

After installing SQL Server 2016 SP1, the DCOM permissions for launching and accessing Integration Services service are reset to default permissions. If you have customized DCOM permissions, you will need to reapply the customization. The issue is under investigation and fix for the issue is not available but users can use the workaround described in KB 2000474.

ODBC Driver 13.1

With the default installation of SQL Server 2016, ODBC Driver 13.0 is installed on the server which is used by SQL Agent and SSMS (installed on server) to connect to the SQL Server instance. If you have installed ODBC Driver 13.1on your server for any reason, SQL Server 2016 SP1 installation overrides the ODBC Driver 13.1 installation and the fixes introduced in 13.1 like KB 3185365 may be lost. In this case post installation of SQL Server 2016 SP1, it is recommended to uninstall the ODBC Driver installed by SQL Server 2016 SP1 and install ODBC Driver 13.1.

To check for ODBC Driver installed on the server, you can go to Control Panel of the server –> Programs and Features –> Search for ODBC. The version number of ODBC Driver 13.1 is 13.1.811.168 as shown below

 

image

 

Parikshit Savjani
Senior Program Manager (@talktosavjani)

ArcGIS Maps for Power BI now available in Preview in the Power BI service

$
0
0
ArcGIS Maps for Power BI is now available in preview on the Power BI service. Share your ArcGIS Maps with your colleagues on dashboards and use them in reports through the Power BI service.

Dynamic DNS registration process can cause queue build up and failures

$
0
0

Hey Folks! Ajay Sarkaria here with new information on the changes in dynamic DNS registrations. In the past, we have had many customers who call Microsoft support with scenarios where dynamic DNS registration from a Microsoft DHCP server either fail or is delayed. This causes printers or other critical devices to not get registered or get registered with delays.

This issue has been difficult to diagnose as the current logs did not provide adequate visibility into the reasons for the failures.

Scenario:

Dynamic DNS updates are attempts to update the PTR record, which is often done in conjunction with HOST A record update. In order to send a PTR update an SOA query is made first for the reverse record for the host to see who is authoritative to accept the update. In case the DNS Server does not have a reverse lookup zone, an error sent back to the DHCP server is interpreted as a general update failure, and this would cause re-queuing of the update request at the DHCP server, eventually causing a queue build-up.

Symptoms:
  • Devices after a renewal from Microsoft DHCP Server, fail to update their records in DNS

For context, the following is how DHCP server-DNS client interaction works:

Whenever a device obtains a new IP address lease from the DHCP server, DHCP server sends a dynamic DNS update request to the DNS server. The DHCP Server does so by calling a DNS client API which puts the request in the dynamic DNS update processing queue of the DNS client. At start of the DHCP server service, DHCP server sets the length of the dynamic DNS update queue in the DNS client. By default, it is set to 2048. It can be overridden by a DHCP server registry key. DHCP server registers a callback function with the DNS client to be called once the dynamic DNS update is completed either successfully or otherwise. DNS clients make 3 attempts to register each DNS record in the queue with a time interval of 5 minutes between retries. When the number of attempts are unsuccessful or the registration is successful, DNS client de-queues the request and calls DHCP server via a callback function indicating success or failure. If the callback function indicates a failure of the registration, DHCP server maintains in it’s lease database that this DNS update status for the lease is “Pending”.

If the dynamic DNS registration is successful, it’s marked as “Complete”. A background process (scavenger) in DHCP server wakes up every hour, goes through the lease database and calls the DNS client API to register leases where the DNS update status is “Pending”. These attempts also go to the same DNS client queue mentioned above. If the queue becomes full, scavenger does not call the DNS registration API and moves to process the next unregistered IP address in the lease database.

What has been observed is there is often a missing configuration which causes failure of dynamic DNS registration. The more common one being reverse lookup zone not being present. Given the above implementation, in a situation where the reverse lookup zone is not present, the queue inside the DNS client builds up and causes long delays in the registration of other DHCP clients which should have gone through.

To alleviate this problem, the below was done:

On Windows Server 2016:

  1. Currently the DHCP server logs do not give information to an administrator on why the DNS registrations are failing. New events are added in DHCP server on Windows Server 2016 which will help to easily identify that the DNS registration is failing because of a missing reverse lookup zone. You can then resolve the issue by adding that zone on the DNS server.

    New Events in Windows Server 2016:

Event CategoryEvent Text
DHCPv4.ForwardRecordDNSFailureForward record registration for IPv4 address %1 and FQDN %2 failed with error %3. This is likely to be because the forward lookup zone for this record does not exist on the DNS server.
DHCPv4.ForwardRecordDNSTimeoutForward record registration for IPv4 address %1 and FQDN %2 failed with error %3.
DHCPv4.PTRRecordDNSFailurePTR record registration for IPv4 address %1 and FQDN %2 failed with error %3. This is likely to be because the reverse lookup zone for this record does not exist on the DNS server.
DHCPv4.PTRRecordDNSTimeoutPTR record registration for IPv4 address %1 and FQDN %2 failed with error %3
DHCPv6.ForwardRecordDNSFailureForward record registration for IPv6 address %1 and FQDN %2 failed with error %3. This is likely to be because the forward lookup zone for this record does not exist on the DNS server.
DHCPv6.ForwardRecordDNSTimeoutForward record registration for IPv6 address %1 and FQDN %2 failed with error %3.
DHCPv6.PTRRecordDNSFailurePTR record registration for IPv6 address %1 and FQDN %2 failed with error %3. This is likely to be because the reverse lookup zone for this record does not exist on the DNS server.
DHCPv6.PTRRecordDNSTimeoutPTR record registration for IPv6 address %1 and FQDN %2 failed with error %3.
DHCPv4.ForwardRecordDNSErrorForward record registration for IPv4 address %1 and FQDN %2 failed with error %3 (%4).
DHCPv4.PTRRecordDNSErrorPTR record registration for IPv4 address %1 and FQDN %2 failed with error %3 (%4).
DHCPv6.ForwardRecordDNSErrorForward record registration for IPv6 address %1 and FQDN %2 failed with error %3 (%4).
DHCPv6.PTRRecordDNSErrorPTR record registration for IPv6 address %1 and FQDN %2 failed with error %3 (%4).

2. The second change is related to retries in the DNS client. The current implementation made 3 attempts at failed registrations with a time interval of 5 minutes between them. In the scenario of a missing DNS zone, there will be several registrations which will fail and will be present in the DNS client queue for as long as 10 minutes. This causes the queue length to be hit and other valid registrations do not get done or get delayed a lot. In other words, the impact of a missing configuration like reverse lookup zone not being present becomes quite severe.

So, a change was made in DNS client to not make any retries for failed registrations. Failed registrations will anyway be retried by the scavenger in the DHCP server as mentioned above. This will ensure that in cases when a zone is not present, the failed registration does not stay in the queue for a long time and the queue build will not be seen. This feature is enabled by default in Windows Server 2016.

On Windows Server 2012 R2:

  • The change in Windows Server 2012 R2 is related to only the retries in the DNS client as mentioned in # 2 above for Windows Server 2016 & no additional events have been added.

How to get this change on Windows Server 2012 R2?

The change (not enabled by default) is part of the following Monthly Quality Rollup for Windows Server 2012 R2:

November 2016 Preview of Monthly Quality Rollup for Windows 8.1 and Windows Server 2012 R2

Important: The behavior does not change by simply installing the Monthly Quality Rollup for Windows Server 2012 R2 (KB3197875). It is controlled by a registry setting which needs to be implemented:

Disclaimer: It is always a good idea to take a backup of the registry key before making any changes so please do that!

  1. Create a new key called “DnsRegistrationMaxRetries” of type DWORD under
    HKLM\System\CurrentControlSet\Services\DhcpServer\Parameters
  2. Set the value of “DnsRegistrationMaxRetries” to 0
  3. Reboot the DHCP Server

Note: If you already have KB3197875 installed, the “DnsRegistrationMaxRetries” may exist with value 3. You need to change the value to 0 and reboot the DHCP Server.

Until next time!

Ajay Sarkaria
Microsoft

 

 

Prepare for a wintry Forza Horizon 3 adventure with Blizzard Mountain

$
0
0

Get the snow tires ready and pack your best parka, because Blizzard Mountain beckons! The Blizzard Mountain Expansion for Forza Horizon 3 is coming Dec. 13 and bringing with it a Forza first – snow, ice, extreme elevations and blizzards to challenge players in their quest to become the King of the Mountain.

Forza Horizon 3

Become King of the Mountain

This brand-new campaign challenges players to compete in a series of thrilling events with the ultimate goal of becoming the King of the Mountain. With more than 50 new events and challenges to compete in, the expansion tests drivers’ skills across extreme weather and brand new race types, including Hill Climb, Descent and Blizzard race events. In addition, players will be able to take part in new Bucket List Blueprint and Rivals events, as well as earn 28 new Xbox Live Achievements worth 500 Gamerscore points (head over to ForzaMotorsport.net for the full list of Achievements).

Explore a New Alpine Playground

Blizzard Mountain is a mountain paradise for car fans, full of adventurous terrain and challenging driving conditions. New areas like the extreme sports snow park and a massive frozen lake make this the ultimate snowy playground for players’ favorite vehicles. In addition, players will find bonus boards to smash, beauty spots to enjoy, and a brand new hidden Barn Find vehicle.

Blizzard Mountain also introduces seven brand new vehicles to the game (plus the aforementioned Barn Find), including the incredible 2016 Ford GYMKHANA 9 Focus RS RX, the 2016 Nissan Titan Warrior Concept, classic rally cars and more. In addition, when exploring Blizzard Mountain, players will be able to choose snow tire upgrades for any of the vehicles in Forza Horizon 3 to prepare them to take on a wide range of thrilling driving surfaces.

The Blizzard Mountain expansion for Forza Horizon 3 is available separately or as part of the Forza Horizon 3 Expansion Pass, which gives players discounted access to two expansions for $34.99. Ultimate Edition owners receive a $10 discount on the Forza Horizon 3 Expansion Pass if purchased before the end of 2016. If you haven’t yet taken Forza Horizon 3 for a spin, today is the last day of our Black Friday deals – check them out here.

Head over to Xbox Wire to learn more!

The post Prepare for a wintry Forza Horizon 3 adventure with Blizzard Mountain appeared first on Windows Experience Blog.

Microsoft releases the latest update to Analytics Platform System

$
0
0

Microsoft is pleased to announce that the appliance update, Analytics Platform System (APS) 2016, has been released to manufacturing and is now generally available. APS is Microsoft’s scale-out Massively Parallel Processing fully integrated system for data warehouse specific workloads.

This appliance update builds on the SQL Server2016 release as a foundation to bring you many value-added features. APS 2016 offers additional language coverage to support migrations from SQL Server and other platforms. It also features improved security for hybrid scenarios and the latest security and bug fixes through new firmware and driver updates.

SQL Server 2016

APS 2016 runs on the latest SQL Server 2016 release and now uses the default database compatibility level 130 which can support improved query performance. SQL Server 2016 allows APS to offer features such as secondary index support for CCI tables and PolyBase Kerberos support.

Transact-SQL

APS 2016 supports a broader set of T-SQL compatibility, including support for wider rows and a large number of rows, VARCHAR(MAX), NVARCHAR(MAX) and VARBINARY(MAX). For greater analysis flexibility, APS supports full window frame syntax for ROWS or RANGE and additional windowing functions like FIRST_VALUE, LAST_VALUE, CUME_DIST and  PERCENT_RANK. Additional functions like NEWID() and RAND() work with new data type support for UNIQUEIDENTIFIER and NUMERIC. For the full set of supported T-SQL, please visit the online documentation.

PolyBase/Hadoop enhancements

PolyBase now supports the latest Hortonworks HDP 2.4 and HDP 2.5. This appliance update provides enhanced security through Kerberos support via database-scoped credentials and credential support with Azure Storage Blobs for added security across big data analysis.

Install and upgrade enhancements

Hardware architecture updates bring the latest generation processor support (Broadwell), DDR4 DIMMs, and improved DIMM throughput – these will ship with hardware purchased from HPE, Dell or Quanta. This update offers customers an enhanced upgrade and deployment experience on account of pre-packaging of certain Windows Server updates, hotfixes, and an installer that previously required an on-site download.

APS 2016 also supports Fully Qualified Domain Name support, making it possible to setup a domain trust to the appliance. It also ships with the latest firmware/driver updates containing security updates and fixes.

Flexibility of choice with Microsoft’s data warehouse portfolio

The latest APS update is an addition to already existing data warehouse portfolio from Microsoft, covering a range of technology and deployment options that help customers get to insights faster. Customers exploring data warehouse products can also consider SQL Server with Fast Track for Data Warehouse or Azure SQL Data Warehouse, a cloud based fully managed service.

Next Steps

For more details about these features, please visit our online documentation or download the client tools.

A deeper look at Skype for Business integration with iOS CallKit

$
0
0

We recently announced deeper integration of Skype for Business with iOS devices using Apple’s CallKit framework, which enables a better experience for Skype for Business calls on the iPhone. The CallKit API with iOS 10 enables Skype for Business calls to work the same way as the native calling experience on iOS, allowing you to seamlessly extend your personal device as a business phone.

Answer Skype for Business calls from lock screen

Now, iPhone users can accept an incoming Skype for Business call right from the lock screen. There is no need to unlock the phone or launch the Skype for Business app to receive the call. Skype for Business calls will appear and behave just as regular cellular calls do—including being able to see the caller’s name on the lock screen. When you need to, you can also get to the app from the calling interface with just one touch.

skype-for-business-integration-with-ios-callkit-1-2

Handle Skype for Business calls like any other call

This integration also allows you to switch between calls across Skype for Business, your personal cellular line and other VoIP applications supporting CallKit. If you are in an important Skype for Business conversation and receive an incoming cellular call, you can send the second call to voicemail or put the Skype for Business call on hold to accept the incoming cellular call. You’ll also see Skype for Business calls in your phone’s call history.

Built-in IT and user controls

These new features are enabled by default for all iOS app users. In scenarios where you may not want the Skype for Business calls to appear in the native iOS call log, the built-in IT and end-user controls allow you to disable the CallKit integration altogether. IT admins can disable this integration for their users through a policy, and app users can also control it in the settings.

skype-for-business-integration-with-ios-callkit-3

Try the new calling experience

To try the new calling experience, update your iOS app today. If you haven’t yet checked out the Skype for Business mobile app for iOS, you can download it at Skype for Business Apps & Downloads.

The post A deeper look at Skype for Business integration with iOS CallKit appeared first on Office Blogs.

Virtual communication with Office 2016 and Windows 10

$
0
0

Lead highly interactive remote meetings using voice, video and screen sharing.

virtual-communication-with-office-2016-and-windows-10-1

An online immersion session is not your typical online event. Each 90-minute interactive session starts with an online roundtable discussing your business challenges and then launches you into a live environment in the cloud. A skilled facilitator will guide you through simulated business scenarios that are customized to your interests.

We will send you a link to connect your own device to a remote desktop loaded with our latest and greatest technology, so you can experience first-hand how Microsoft tools can solve your biggest challenges in a collaborative, fun environment.

Online immersion sessions help you discover how to:

  • Keep information secure while being productive—Make it easier to work securely and maintain compliance without inhibiting your workflow.
  • Capture, review and share notes from anywhere—Boost your team’s productivity by sharing documents and collaborating in real time.
  • Use social tools to find experts and answers—Break down barriers between departments to share knowledge quickly.
  • Quickly visualize and analyze complex data—Zero in on the data and insights you need without having to involve a BI expert.
  • Co-author and share content quickly—Access and edit documents even while others are editing and reviewing them—all at the same time.

Expect to leave the session with enough time-saving skills to more than offset your time investment within a few short days.

Each session is only open to 20 participants. Reserve your seat now and learn how you can be more productive anywhere, anytime with Office 365.

Sessions are held at 10 a.m. PT and 12 p.m. PT every Wednesday. Register now!

The post Virtual communication with Office 2016 and Windows 10 appeared first on Office Blogs.


Windows 10 Tip: Three ways Cortana can help you this holiday

$
0
0

We’ve showed you how Cortana* can help you search your PC and the web– today, we’re sharing three ways Cortana can help you during the holidays, from tracking flights and packages to remembering your shopping lists!

Set a reminder

 Windows 10 Tip: Four ways Cortana can help you this holiday

We’re all running around like crazy this holiday season, so let Cortana remember things for you. Simply ask her to remind you to pick up the tree trimmings on your way home or ship a package before it’s too late.

Make lists to track gifts

Windows 10 Tip: Four ways Cortana can help you this holiday

Whether you’re planning gifts to buy, making a shopping list for a holiday meal or remembering what you need to do before leaving for vacation, you can easily use your voice or type to create a new list, add to an existing list and pull up your lists when you need them.

Easily track your flights

Windows 10 Tip: Four ways Cortana can help you this holiday

Cortana can track your flight for you and tell you if it’s delayed. Cortana can automatically do this for you once you’ve signed in based on your flight confirmations, or you can simply enter your flight number into the search box and Cortana will tell you its status.

Have a great week!

*Cortana available in select markets

The post Windows 10 Tip: Three ways Cortana can help you this holiday appeared first on Windows Experience Blog.

Register now for “Incubators: Innovation is not enough; you must execute” on Modern Workplace

$
0
0

You may have a billion-dollar idea, but without the proper execution it won’t be worth a cent. With incubators walking the fine line between risk and reward with their investments, creating an environment that encourages innovation with less financial risk may be key to your next big success.

Join us for the next episode of Modern Workplace, “Incubators: Innovation is not enough; you must execute,” airing December 13, 2016 at 8 a.m. PST / 4 p.m. GMT. In this episode, learn how to think like an innovation lab while leveraging the wisdom of incubators.

  • Executive director of Lowe’s Innovation Labs, Kyle Nel, shares how innovation has propelled their business into creating new successes and provides strategies for transforming ideas into action.
  • Innovation expert and Stanford University professor, Dr. Hayagreeva “Huggy” Rao, explains how to apply the wisdom of incubators to help organizations of any size innovate.

Plus, get an exclusive look at Microsoft Dynamics 365—intelligent business applications that accelerate your digital transformation. Register now!

Related content

The post Register now for “Incubators: Innovation is not enough; you must execute” on Modern Workplace appeared first on Office Blogs.

New #AzureAD Access Panel is now Generally Available!

$
0
0

Howdy folks,

Many hundreds of thousands of you have used the our new Access Panel (MyApps) while it was in public previewto launch your Azure AD connected applications, change memberships in groups, and quickly access your security settings.

Today, Im excited to announce the new Access Panel isnow Generally Available (GA)!

Since we launched Public Preview weve received a ton of interest and great feedback. Weve listened to your feedback to offer a refreshing experience on both desktop and mobile. The Access Panel is better than ever!

The new design’s biggest highlights are its modern layout and optimized controls. If youre convinced already, go ahead and check it out for yourself.

If you need a little more convincing, here are the top three new features youll notice in the new design:

Mobile-friendly with a completely new look

Our responsive layout adjusts to the perfect size no matter what device youre on. The new layout makes it easy to scan through your apps and add new ones.

clip_image002

Figure 1: Apps page in Desktop Browser

clip_image004

Figure 2: Apps page on Mobile

At a glance notifications and a new user control

Notifications now alert you instantly when an access request comes your way and lets you review them at once. The user control lets you quickly switch between organizations anywhere on the site.

clip_image006

Figure 3: Notifications

clip_image008

Figure 4: User Control

Improved group management experience

Group management is now a breeze with everything you need on the main page. You can easily see what groups youre in or own, and join or create new ones.

clip_image010

Figure 5: Groups Page

If you use our mobile app you’ll also notice a new icon along with the upgraded design.

clip_image011

Figure 6. MyApps Mobile Icon

Since the holiday season is in full swing, well have a two-month transition period where individual users can opt in. Our target date to switch on the new design for everyone is the end of January.

Of course, we always love to hear your feedback and suggestions, and look forward to hearing from you!

Best regards,

Alex Simons (Twitter: @Alex_A_Simons)

Director of Program Management

Microsoft Identity Division

Announcing VMM SDN Express for VMM 2016

$
0
0

We are happy to announce the release of VMM SDN Express for Microsoft System Center Virtual Machine Manager 2016 (VMM 2016)! Do you want a VMM solution that can deploy an entire SDN fabric without you having to move through multiple VMM wizards or having to wait for very long? What if you could specify all the parameters in a single file and let VMM take over all the SDN deployment tasks, where you simply come back later and see the complete VMM SDN stack deployed? VMM SDN Express does exactly that, and then some. The successful deployment is completely manageable with the VMM UI post deployment, and failed deployments roll back entirely leaving your fabric ready for another deployment attempt while providing you with the required logs to investigate the causes of failure.

You can find related resources on Github, including the required documentation and example parameter files. There you will find following:

image

The script deploys SDN stack using VMM through a single configuration file.

Apart from reducing points of human error caused by multiple input wizards, the script also saves significant time for fabric admins as they are able to specify all of the parameters at one time and then come back later to a complete SDN stack, including Network Controller, Software Load Balancer and Gateway, all deployed through VMM. Once you deploy SDN using this script, the complete stack is manageable via the VMM UI just as it would if you had deployed SDN using the VMM UI wizards!

So use this script if you want to leverage best of both worlds – SDN Express like agility for deployment and rich management capability using VMM UI afterwards.

This script deploys all the Logical Networks and artifacts as described in the VMM SDN deployment guide. You also have the option to repurpose existing a Management Logical Network and Logical Switch if you already have those configured.

Note that if script suffers a failure due to wrong input or infra issues, all the changed settings are rolled back and you can start a fresh deployment all over again.

Also, please be aware that SET enabled switch deployment is currently not supported in this script. The script finds the first pNIC in Trunk mode on the host and deploys Logical Switch in the standalone mode on the host. In case the script can’t find such a pNIC on any host, the switch deployment will fail. If you need SET enabled deployment, you need to deploy the SET enabled switch out of band and then specify the name of the switch in the script at the time of deployment.

We’re looking forward to hearing about deployments from you guys in case you are planning to deploy SDN in your environment so please share your feedback.

More Productive JavaScript in Visual Studio 2017 RC

$
0
0

We know you choose Visual Studio for JavaScript editing because it provides tools that make them the most productive. In Visual Studio 2017 RC, we’ve been focusing on improving the things you use most so that you can spend even more time focusing on coding. In this post, we will highlight some of the most exciting improvements to IntelliSense and code navigation that are available today in Visual Studio 2017 RC.

Richer IntelliSense

JavaScript IntelliSense in Visual Studio 2017 RC will now display much more useful information on parameter and member lists. This additional information is provided by TypeScript, which uses static analysis behind the scenes to better understand your code. TypeScript uses several sources to build up this information.

Rich IntelliSense on jQuery ajax() function

IntelliSense based on JSDoc

When the default type inference does not provide the desired type information, type information may be provided explicitly via JSDoc annotations. For example, to give a partially declared object a specific type, you can use the @type tag as shown below:

This is also very useful for specifying parameter information. Using the JSDoc @param tag you can add types to function parameters like so:

See this doc on github for the JSDoc annotations currently supported.

IntelliSense based on TypeScript Declaration Files

In the TypeScript world, most popular JavaScript libraries have their APIs described by .d.ts files, and the most common repository for such definitions is on DefinitelyTyped. Behind the scenes, Visual Studio will use these .d.ts files to enrich your IntelliSense.
Visual Studio will detect which JavaScript libraries are in use and automatically download and reference the corresponding .d.ts files. These files are downloaded to a cache located under the user folder at %LOCALAPPDATA%\Microsoft\TypeScript. (Note: This feature is disabled by default if using a tsconfig.json configuration file

Currently auto-detection works for dependencies downloaded from npm (via reading the package.json file), Bower (via reading the bower.json file), or loose files in your project that match a list of roughly the top 400 most popular JavaScript libraries. For example, if you have jquery-1.10.min.js in your project, the file jquery.d.ts will be fetched and loaded. This .d.ts file will have no impact on your project other than providing better completions, signatures, and contextual help.

ES6 and JSX Syntax Support

The JavaScript language is constantly evolving and Visual Studio will now help you keep up with language changes by supporting syntax updates much faster. Every year TC39, the ECMAScript standards body, releases official updates to the language. These updates bring new syntax such as classes, arrow functions, and template strings, that provide alternative, more productive ways to write JavaScript. In Visual Studio 2017, syntax through ES7 (ECMAScript 2016) including modules, classes, and arrow functions are fully supported.

ES6 syntax in Visual Studio 2017 RC

In addition to official language updates, there are also unofficial language extensions like JSX, an XML-like extension that is popular in React development, that call for more flexible syntax support. Visual Studio 2017 supports both jsx and tsx file extensions as well as JSX syntax dropped directly in JS and TS files.

JSX syntax in Visual Studio 2017 RC

General Improvements

In addition to language specific improvements, you will also benefit from several general code navigation improvements. Go To, a completely new navigation feature, allows you to quickly perform complete searches to find types, functions, files, and more. Results can be filtered down based on category, to provide a single location for fast code navigation.

Navigation with Go To (ctrl + t or ctrl + ,)

When working with large projects or libraries, often the number of results in completion lists can get quite large. To help you quickly cut down the size of these lists, you can now filter the completion lists by categories such as functions and properties. All of these filters can be quickly toggled with logical hotkeys, which can be easily discovered by hovering over the filter button icons in IntelliSense.

IntelliSense filtering on functions (alt + m)

To read more about the above improvements and get an overview of all the general productivity improvements coming in Visual Studio 2017, check out this post by Mark Wilson-Thomas on Productivity Improvements in VS 2017 RC.

Send Feedback

We hope you’re excited to take your JavaScript development productivity to a new level in Visual Studio 2017 RC. Check out this quick video to see some of the above features in more detail, but we encourage you to download it yourself and give it a spin. Feel free to log any problems using the Report a Problem tool in the upper right corner of the IDE or the installer. You can also submit any suggestions through UserVoice.

Happy hacking!

Bowden Kelly, Program Manager, VS Client
@bowdenk7 

Bowden works on the JavaScript editing experience with a focus on helping developers be more productive in Visual Studio. Outside of work he enjoys playing soccer, teaching the basics of programming, and attempting to be a triathlete.

Productivity in Visual Studio 2017 RC

$
0
0

We know that many developers choose Visual Studio because of its powerful, yet natural, productivity features that help you stay “in the zone”. Visual Studio 2017 RC brings many improvements in this regard, helping you stay even more focused on your program rather than on the tools you use to build it. Download it now to see how you can save time and effort on the tasks that you do day-in, day-out.

We’ve focused our improvements in three main areas where we know most developers spend their time: code editing, navigation and debugging. In this post I’ll go into details highlighting features in each area.

Code Editing

IntelliSense filtering

IntelliSense makes exploring a new API faster by allowing you to narrow down the set of values by category. This means if it’s a variable you need, you don’t need to wade through lots of types to get to it. As an example, the screenshot below shows using the filter to just show variables and constants in the IntelliSense results for a C++ code file:

All the filters have convenient keyboard shortcuts as you’d expect. For example as you’re typing C# code you can quickly press Alt+P to filter down to Properties, or Alt+M to filter out extension methods. Just hover the filter bar to discover all the shortcuts that are relevant to your current situation.

Match highlighting

When you use techniques like camel case matching to home in on a result faster, it can sometimes be hard to tell why an item is matching. That’s why IntelliSense in C#,VB, JavaScript and TypeScript now lets you see why an item is matching your search by bolding the matching letters as shown below. Match highlighting is an extensibility point, so any language can add support for this; you can expect to see more languages supporting this over time.

If you don’t like the filtering or match highlighting features, you can easily turn them off in the IntelliSense settings for your language. Look in Tools-Options-Text Editor, under the language you are using. For instance Tools-Options-Text Editor- C# – IntelliSense will let you control these features for C#.

Better IntelliSense behaviors

Many Visual Studio languages have made big strides this release in getting you better results when using IntelliSense. For instance:

  • C# and VB have “smart preselection”. This determines the target type you are likely to need, and preselects the items in the IntelliSense list that match that type, speeding your typing flow and removing the burden of figuring out what type you need. It’s applied without hitting any special keystroke on your part. Check out this video for an overview of all the new C# and VB productivity features.
  • XAML now has IntelliSense for namespace completion, lightbulb quick fix for missing namespace, sorting and removing unnecessary namespaces, and rename refactoring support for namespace prefixes. In addition, XAML IntelliSense has been improved to help you bind quickly and correctly when binding events, paths and functions with x:Bind; better filtering so that you see only relevant information; and camel case matching support (for example, “RTB” will complete as “RichTextBox”). Watch these features in action in this video.
  • C++ has an experimental Predictive IntelliSense feature that shows a filtered list of IntelliSense results. This means you don’t have to scroll through a long list of irrelevant matches. Only items of the expected type are listed based on need-based probability. You can turn on this feature in Tools > Options > Text Editor > C/C++ > Experimental. See this article on the C++ blog for more details on how this works.
  • The JavaScript language service has been completely revamped to improve its IntelliSense. Previously, as you typed, a JavaScript engine continuously executed your code to provide runtime-like completion lists and signature help. This was great for dynamic JavaScript code, however it often provided an inconsistent editing experience. The new language service uses static analysis powered by TypeScript to provide more detailed IntelliSense, full ES6/ES7 coverage, and a more consistent editing experience. See more details in this post by Bowden Kelly on more productive JavaScript in VS 2017 RC.

Coding Convention Support via .editorconfig

You’ve told us that keeping consistent coding standards in your codebases is a boon to team productivity. It makes it easier to read code written by all team members, but it’s hard work to enforce these standards. To help you achieve consistent formatting on your projects, we’ve introduced built-in support for the public editorconfig convention file format. This lets you define formatting rules that travel with your codebase wherever it goes. This means the code that gets checked in follows the codebase’s conventions and preferences rather than the individual developer’s. You can even supply different conventions for different parts of your codebase, such as when you have some legacy code that follows a different formatting style that you might not wish to change. The format is a standard recognized by a wide range of other editors and IDEs. To get started, just add an editor config file (.editorconfig) to your project. See more details in the documentation here.

Code Analysis for C# and Visual Basic

In C# and Visual Basic, we have gone a step further in coding convention support. We’ve expanded the reach of live code analysis to include code style enforcement—empowering developers to enforce consistent code style and naming conventions across their repo or team. We also are continuously working to help you clean up and move your code forward with new refactorings and code fixes. The coolest ones added in the RC are: Move Type to Matching File, Sync File and Type Name, and Convert to Interpolated String. Check out Kasey Uhlenhuth’s article on C# and Visual Basic Productivity Improvements to learn more.

Live Editing experiences

Improving code quality as early as possible in the development process matters – finding issues sooner is better. Visual Studio 2017 RC makes useful data available at the time of editing, instead of much later in the process, so you can code with even more confidence. Live Unit Testing (a new feature available for C# and VB users on the .NET Framework) gives you the ability to instantly tell whether your unit tests are still passing as you write your code! Check out Joe Morris’s article on Live Unit Testing to get lots more details.

Navigation

Many of you tell us that you spend much of your time working with large existing bodies of code. Having the ability to quickly and easily navigate your code is immensely powerful and can dramatically improve productivity . Whether you’re drilling into a bug, finding the implications of a refactoring, or just figuring out an unfamiliar codebase, tools that get you around quickly and confidently, and help you know where you are will make a big difference. That’s why we’ve added several new navigation features to help:

Go To

Go To (Ctrl + , or Ctrl + T) is a fast, complete search that lets you quickly find files, types, methods, and other kinds of symbols in your code. It gives you a one-stop way to go to any kind of item you need, which is a particular benefit when working in larger code bases.

The new GoTo feature also lets you filter down easily, and choose to look just for one kind of item. You can do this via keyboard shortcut (check out the Edit-GoTo menu to find those shortcuts), mouse clicking on the filter icons in the Go To panel, or by using the speedy query syntax as shown in the example here. Notice the “t” before the search term which tells the search to filter down to just types. So it’s easy to change filter mid-flow as you figure out what you’re looking for.

As you move through your search list, you’ll see a preview of the selected location in a temporary pane. You can riffle through the results quickly to get to just the one you need without leaving a lot of clutter in your wake, as shown below.

GoTo is customizable too – hit the gear icon in the toolbar to change the preview behavior for instance.

Find All References

Find all references (Shift+F12) now helps you get around fast even in really complex codebases. It does so by providing advanced grouping, filtering, sorting, and searching within your results. For some languages, such as C#, the results are colorized just like they are in the editor. C++ lets you see which references are read and which are write. All this gets you a clear understanding of your references and gets you to that line of code you need with confidence.

For an example of how this can speed you to the right code, take a look below. Here I’m looking to understand the consumers of my BaseViewModel class. I can see structural detail on where those dependencies lie because I’ve selected a grouping that includes the path. This means I can quickly see that I have six viewmodels and one helper class that refer to it, and I can hover to see exactly what code is making that helper reference.

The “Group By” dropdown provides useful preset groupings, and you can even create your own by right clicking within the FAR results and using the Grouping context menu. You can also see multiple reference search result sets. This is great for those times when you’re in the middle of using a reference list to check code before refactoring, but find you need to drill on a different reference as you go. Just hit “Keep Results” to freeze the results you have and you’ll get a brand new references window to work with when you next find references.

Structure Visualizer

It’s important to have a clear sense of where you are structurally in your code when reading. To that end, we’ve added a favorite feature from the Productivity Power Tools extension into Visual Studio: Structure Visualizer. This draws structure guide lines (aka indent guides) on your code so you can easily visualize and discover what block of code you’re in at any time without needing to scroll. Hovering the lines shows tooltips that let you see the opening of that block and its parents. This is particularly useful when those blocks are scrolled off-screen. The guides are also handy for checking whether your code is at the right indent level!

In Visual Studio 2017 RC, Structure Visualizer works for XAML, C# and VB files, and for all the languages supported via TextMate grammars, as shown in the screenshot below of a Ruby file. You can expect to see more languages add support later. For some languages (like C#, VB), the tooltips are colorized just like the code they reflect too.

If you prefer not to see the lines, you can easily turn them off in Tools-Options-Text Editor-General-“Show structure guide lines”. You can also alter their color via the Text Editor “Block Structure Adornments” display item in Fonts and Colors.

Debugging

Run to Click

You can now more easily skip ahead without setting a breakpoint to stop on the line you desire. When stopped in the debugger, simply click the icon that appears next to the line of code your mouse is over. Your code will run and stop on that line the next time it is hit in your code path.

New Exception Helper

Use the new Exception Helper to view your exception information at a glance in a compact non-modal dialog with instant access to important information:

  • See what is null: Quickly see what is null right inside the Exception Helper when diagnosing your NullReferenceException in C# and access violation in C++. When you break on a line of code caused by a null value, read the message and look at the bolded variable in the Exception Helper to clue you in to what was actually null.
  • See Inner Exceptions: If the exception you break on has any inner exceptions, you can immediately see their details in the Exception Helper and use the arrows to navigate through the tree of inner exceptions.
  • Ignore exceptions from certain modules: In the Exception Settings section of the Exception Helper, you can now check a box to ignore that exception type when thrown from that current module. That way, the next time you debug that code path, you won’t break on that exception. You can reset these conditions from the Debug > Exception Settings window.

Attach to Process Filter and Reattach

Easily search in the “Attach to Process” dialog to quickly find the process you want to attach the debugger to. After you have attached to a process and stopped debugging or detached from it, you can use the new “Reattach to Process… (Shift + Alt +P)” command in the Debug menu to attach again. Use this feature to save you time and the hassle of always needing to open the “Attach to Process…” dialog when you are debugging a similar process repeatedly.

Keyboard Shortcuts

Power users of Visual Studio tell us that they feel more productive when they use keyboard shortcuts; you can get a useful concise guide to the shortcuts you’ll want to know for many of the features above here.

Send Us Feedback

I hope this has given you a flavor of how Visual Studio 2017 will help you get even more productive in your everyday development work. If you want to learn more about the full set of new features in the product, check out the overview on visualstudio.com, and of course the release notes.

Please try the Visual Studio 2017 Release Candidate today, and send us your feedback; we’d love to hear how the new features are working for you. If you see issues, please be sure to report them using the Report-a-problem tool in the upper right corner either in the IDE or the installer. Track your feedback on the developer community portal. And if you have suggestions, let us know through UserVoice. Thanks!

Mark Wilson-Thomas – Senior Program Manager, Visual Studio IDE Team
@MarkPavWT

Mark is a Program Manager on the Visual Studio IDE team, where he’s been building developer tools for nearly 10 years. He currently looks after the Visual Studio Editor. Prior to that, he worked on tools for Office, SQL, WPF and Silverlight.

Recognizing the top Database Systems contributors on MSDN forums!

$
0
0

We are planning to launch a monthly leaderboard for the top contributors on MSDN forums. This is a pilot effort for Database Systems, including SQL Server, Azure SQL Database, Azure SQL Data Warehouse, and SQL Server VMs on Azure questions on MSDN. Read more about it on the Azure blog and send in your feedback to leaderboard-sql@microsoft.com.

Congratulations to our October 2016 Top 10 contributors!

MSDN Contributors Leaderboard


New Exchange Online migration options

$
0
0

We are in the process of rolling out a new migration experience that will greatly simplify your journey to Office 365 and Exchange Online.

This new experience will help any customer running at least one Exchange 2010, 2013 and/or 2016 server on-premises to migrate to the cloud seamlessly. When you initiate the migration, we evaluate what you have configured already in Exchange Online and we walk you through the Hybrid Configuration Wizard to evaluate the on-premises environment. Once all the information on your current state is collected, we ask a couple of questions about your desired state (things like how fast you want to move to Exchange Online and whether you require advanced features). The hybrid wizard then walks you through the configuration needed to migrate your users to Exchange Online.

Based on your current configuration and the options selected while running the hybrid wizard, you will be taken down one of the following paths.

  • Full Hybrid: This is a common configuration for customers that are larger in size and will take some time to migrate or customers that will not be able to move all their mailboxes to Exchange Online in the short to medium term. This is the most complex option to configure, but will give you enhanced features like cross-premises free/busy and enhanced mail flow options. For more on Full Hybrid you can go here.
  • Minimal Hybrid: This is a recently introduced option that was added to the Hybrid Configuration Wizard in June. It allows you to configure your environment to support hybrid migrations and recipient administration without the need for the additional overhead of configuring free/busy and other enhanced features of full hybrid. Often this is used for customers that want to move all their mailboxes to Exchange Online over the course of a couple of months or less, but want to keep directory synchronization in place. For more information on Minimal Hybrid please go here.
  • Express Migration: The newest option we have added is the Express Migration. This is the path in the Hybrid Configuration Wizard that will benefit smaller customers or a customer that truly wants to move to Exchange Online over the course of a couple of weeks or less. If you have a need to keep directory synchronization in place, then this is not the option for you. This option will configure your users and walk you through the new migration experience to get the mailboxes to Exchange Online with minimal disruption for your users.

More About Express Migration

In the past, an administrator of the small to medium business had to choose to either take the complex configuration route of hybrid or the complex user experience of a cutover or staged migration. Now you can get a greatly simplified Express Migration experience.

With the Express Migration option, you will get a onetime directory synchronization of your users along with the Minimal Hybrid configuration to allow you to perform the migrations. After that initial synchronization of user accounts, directory synchronization will be automatically disabled in both Office 365 and on-premises. This will give small and medium customers that would have previously perform a cutover migration the ability to get the benefits of the hybrid migration without the overhead.

The following are the benefits of performing an Express Migration over a more traditional cutover migration:

  • Usernames and passwords will sync from on-premises
  • Users will not have to recreate Outlook profiles
  • Mail flow will continue to work between users before, during, and after the migration
  • There is essentially no down time for users during the migration

How to initiate the migration

All the migration approaches discussed in this article (Full, Minimal, and Express) can be initiated from one interface now. We will guide you to the proper option as we go.

One of key components in this new experience is the migration pane. This is a new pane we have created in the Office 365 Admin Portal that will match the modern look and feel of the rest of the portal. However, it is not just the look and feel that is revamped, we also have a lot of intelligence built in. For instance, when you enter the migration pane we will detect if you have executed the Hybrid Configuration Wizard, already synchronized your users, and whether there is a migration endpoint already created. Depending on what is already in place we can take you toward the proper migration approach.

To get to the new migration experience you will have to expand the “Users” section in the portal (Http://portal.office.com) and then select the “Data Migration” option. Once there, select the Exchange email source to initiate the experience. This is a page where we list various sources from where you can migrate. In this case, you would select the Exchange option.

image

Once the source is selected we perform a quick check of the tenant to see if you have executed the Hybrid Configuration Wizard. If you have not yet executed it, that means we know you have not prepared your on-premises environment for migration. Therefore, we will take you through downloading and running the hybrid wizard.

When in the hybrid wizard you will see a welcome screen, just select next on that:

image

You will then see the Server detection screen, again just select next since the correct server should be detected. By default, we will try to connect to the Exchange server running the latest version.

image

Provide your credentials for both Exchange on-premises and Exchange Online.

Select the appropriate migration option. For this example, we are demonstrating Express Migration so we will select the Minimal Hybrid option.

image

Select update, which will perform all the configurations needed to allow you to start moving mailboxes at a later step.

image

Next up: Provisioning users

If you have not synchronized your users already at this point you will see an option to perform a onetime sync of your users or to install AAD Connect separately. As mentioned, if you plan on moving all of your mailboxes to Exchange Online and do not have the need to keep directory synchronization around, then select the one-time sync option. Selecting this option is what we consider an “Express Migration”. If you need directory synchronization for any reason, then you need to install and setup AAD Connect separately.

Note: if you did select the one-time sync and later decided that you do need to have directory synchronization, you can setup AAD Connect to perform directory synchronization.

image

If you did not select Minimal Hybrid as an option in the wizard, then you will not be given the one-time directory synchronization option. The reason you would not get it if you opted for Full Hybrid is because that deployment scenario requires the advanced coexistence features and directory synchronization.

Once the option for “Synchronize my users and passwords one time” is selected, the hybrid wizard displays a progress bar. The wizard is waiting for the AAD Connect to be configured and for the initial set of users to synchronize.

To complete the hybrid configuration setup, you will need to configure AAD Connect. In almost all cases the default options in AAD Connect are the best options.

image

Once completed you will see the ending page for the hybrid application that will allow you to give feedback. Once closed you will be taken to the user list page to start moving mailboxes.

image

On the user list page you will have the option to select the users you want to migrate. Under the hood this is using MRS to migrate the users just like a hybrid migration. You can use this new pane to migrate mailboxes, regardless of the hybrid deployment option chosen. The experience is as simple as selecting the users and clicking start migration. At that time, we will perform a lookup to see if the prerequisites are in place. If anything is missing, we will walk you through taking care of the missing prerequisite.

image

Limitations

There are some limitations with the new Migration pane that need to be called out. We are working to overcome these limitations in the future:

  • Only one migration endpoint is supported: If there is more than one endpoint we will choose the one created by the Hybrid wizard or by the new Migration experience.
  • Only one batch can be started at a time: we do not yet support multiple batches with this migration pane. This means that you need to wait for the previous migration to finish before you can start another migration. We know multiple batch support is important for medium and larger customers, we have this as a top priority.
  • We do require you license users separately: we require that all users being migrated through this experience be licensed before the migration begins (except for shared mailbox object type), this is not an automatic process so you need to license users before migrating.

Conclusion

These updates will make the Exchange Online onboarding experience more seamless for many Exchange customers. We have created and are continuing to improve the Migration pane to meet the needs of our customers. While running through the experience if you have any feedback please use the provided feedback button that are available throughout the experience.

Office 365 On-boarding Team

Getting the most out of Git

$
0
0

Posted on behalf of guest blogger: Tobias Günther, CEO Fournova . Git Tower and Team Services together provide an awesome Git solution for your team, on Mac and (now!) Windows. 

In the last few years, millions of developers have started to use Git. But just a fraction of them are using it confidently and productively: Git’s large feature set and its even larger number of parameters and flags make it hard to master.

The question, therefore, is not if you are using Git in your team. The question is if it helps you become a more professional and productive developer.

 

Making Git Easier to Use

We faced this question in our own team, too, and decided on a rather radical solution: we developed Tower, a desktop GUI that makes Git easier – for us and over 80,000 customers like Google, Amazon, Salesforce and IBM. After being a Mac-only application for the last 7 years, it is now finally available on Windows, too.

We were eager to make our lives easier and not surrender in the face of Git’s steep learning curve. Let’s look at a couple of situations that we found particularly frustrating – and how we tackled them in Tower.

 

Managing Remote Repositories

A particularly tedious part of developers’ everyday work is repository management: you can spend hours fiddling with remote URLs, passwords, usernames, and authentication tokens. After connecting e.g. your Visual Studio Team Services or Team Foundation Server account in Tower’s “Services Manager”, cloning and creating repositories become a matter of a single click!

Git Tower windows client

Undo & Conflict Wizard

The possibility to undo mistakes is one of Git’s greatest advantages. However, knowing all the commands and parameters to be able to use these undo functions is quite a different story. Tower makes these helpful features easily accessible through a well-designed UI.

For example when a merge conflict occurs, Tower helps you understand and solve it by presenting it in a visual way, via its unique “Conflict Wizard” interface.

Git tower conflict wizard

Usability & Workflows

Since our main goal is to make our users more productive, many usability and workflow improvements found their way into Tower:

  • Auto-Fetch: New changes are automatically fetched in the background for you.
  • Unsynced Commits: Instantly see commits that haven’t been pushed or pulled, yet.
  • Auto-Stashing: In appropriate situations, Tower asks you to stash any lingering local changes for you – and thereby reduce the risk of conflicts.

Git tower windows working copy

Try Tower Free for 30 Days

We created Tower to make Git easier to use. To let people access Git’s powerful feature set without shooting themselves in the foot.

Of course, you don’t have to take our word for granted: you can download & try the new Tower for Windows free for 30 days. We’re eager to hear what you think!

Standard C++ and the Windows Runtime (C++/WinRT)

$
0
0

The Windows Runtime (WinRT) is the technology that powers the Universal Windows Platform, letting developers write applications that are common to all Windows devices, from Xbox to PCs to HoloLens to phones.  Most of UWP can also be used by developers targeting traditional desktop applications.

WinRT APIs are easily accessible from managed languages like C#, however for native C++ developers, using WinRT either requires a lot of complex COM code, or the use of Visual C++ component extensions, better known as C++/CX.  These language extensions allow C++ to understand the metadata describing WinRT objects, provide automatic reference counting of WinRT objects, and a variety of other things, but are not part of the standard C++ language.

Now there’s an easier way for native C++ developers to use the standard, modern C++ language with no extensions, and target the Windows Runtime.  C++/WinRT is a standard C++ language projection for the Windows Runtime implemented solely in header files.  It allows developers to both author and consume Windows Runtime APIs using any standards-compliant C++ compiler.  C++/WinRT is designed to provide C++ developers with first-class access to the modern Windows API.

Let’s look at a simple “Hello World” code sample to better understand this new library:


struct App : ApplicationT
{
    void OnLaunched(LaunchActivatedEventArgs const &)
    {
        TextBlock block;

        block.FontFamily(FontFamily(L"Segoe UI Semibold"));
        block.FontSize(72.0);
        block.Foreground(SolidColorBrush(Colors::Orange()));
        block.VerticalAlignment(VerticalAlignment::Center);
        block.TextAlignment(TextAlignment::Center);
        block.Text(L"Hello World!");

        Window window = Window::Current();
        window.Content(block);
        window.Activate();
    }
}

And now, the C++/CX version of the same code:


ref class App sealed : public Application
{
    protected:
        virtual void OnLaunched(LaunchActivatedEventArgs^ e) override
        {
            TextBlock^ block = ref new TextBlock();
            block->FontFamily = ref new FontFamily("Segoe UI Semibold");
            block->FontSize = 72.0;
            block->Foreground = ref new SolidColorBrush(Colors::Orange);
            block->VerticalAlignment = VerticalAlignment::Center;
            block->TextAlignment = TextAlignment::Center;
            block->Text = "Hello World!";

            Window^ window = Window::Current;
            window->Content = block;
            window->Activate();
        }
};

As you can see, compared to the second snippet using C++/CX, the first snippet using C++/WinRT contains no “hats” (^) and no other language extensions.  It is 100% pure, modern C++ code.

If you have ever done any WinRT development, you already know that there are many APIs which are asynchronous and are required to be called as such.  With C#, this is easily done with the async/await construct.  With the C++/WinRT framework, this becomes just as easy using C++ coroutines (co_await). Here’s an example:


fire_and_forget Async(TextBlock block)
{
    FileOpenPicker picker;
    picker.FileTypeFilter().Append(L".png");
    picker.SuggestedStartLocation(PickerLocationId::PicturesLibrary);
    auto file = co_await picker.PickSingleFileAsync();

    if (file == nullptr)
        return;

    thread_context ui_thread;
    co_await resume_background();

    auto stream = co_await file.OpenAsync(FileAccessMode::Read);
    auto decoder = co_await BitmapDecoder::CreateAsync(stream);
    auto bitmap = co_await decoder.GetSoftwareBitmapAsync();
    auto engine = OcrEngine::TryCreateFromUserProfileLanguages();
    auto result = co_await engine.RecognizeAsync(bitmap);

    co_await ui_thread;
    block.Text(result.Text());
}

But what about performance?  As it turns out, C++/WinRT performs better and produces smaller binaries than C++/CX with identical code.  For example, the code sample above produces binaries sized as shown in the table below:

C++/WinRTC++/CXC#
Smallest Binary53KB + 594KB86KB + 594KB261KB + 3.31MB

But, in addition to size savings, code runs faster as well.  Here are two examples contrasting the performance of C#, C++/CX, and C++/WinRT:

picture1_revised

picture2_revised

C++/WinRT is an open source project and ready for use today with Visual Studio 15 Preview and Windows 10 Anniversary Update.  Here are some important links to get you started.

In the future, C++/WinRT will be expanded to allow WinRT component authoring as well as XAML designer support.  Stay tuned for those features, but in the meantime, get started with modern, pure C++ development with the Windows Runtime today!

The post Standard C++ and the Windows Runtime (C++/WinRT) appeared first on Building Apps for Windows.

Introducing Batch Mode Adaptive Memory Grant Feedback

$
0
0

SQL Server uses memory to store in-transit rows for hash join and sort operations. When a query execution plan is compiled for a statement, SQL Server estimates both the minimum required memory needed for execution and the ideal memory grant size needed to have all rows in memory.  This memory grant size is based on the estimated number of rows for the operator and the associated average row size.  If the cardinality estimates are inaccurate, performance can suffer:

  • For cardinality under-estimates, the memory grant can end up being too small and the rows then spill to disk, causing significant performance degradation compared to a fully memory-resident equivalent.
  • For cardinality over-estimates, the memory grant can be too large and the memory goes to waste. Concurrency can be impacted because the query may wait in a queue until enough memory becomes available, even though the query only ends up using a small portion of the granted memory.

You can sometimes address the cardinality misestimates through a variety of methods, such as statistics management (update frequency, increasing sample size), providing multi-column statistics, using intermediate result sets instead of one single complex query, or avoiding constructs such as table variables that have fixed cardinality estimates.  But for some scenarios, addressing poor estimates that impact memory grant sizing can be difficult to address directly without a significant refactoring of the statement or the use of hints such as MIN_GRANT_PERCENT and MAX_GRANT_PERCENT.

When it comes to improving cardinality estimation techniques, there is no one single approach that works for all possible statements.  With that in mind, the Query Processing team has been working on a new wave of adaptive query processing improvements to handle the more intractable cardinality estimation issues that often result in poor query performance.

Batch mode adaptive memory grant feedback is the first improvement under the adaptive query processing family of features to be surfaced in the public preview of the next release of SQL Server on Linux and Windows.  You can now test this feature for non-production workloads and this feature will also be surfaced in Azure SQL DB in a future update.

Addressing repeating-workloads, this improvement recalculates the actual memory required for a query and then updates the grant value for the cached plan.  When an identical query statement is executed, we will be able to use the revised memory grant size, reducing excessive memory grants that impact concurrency and fixing under-estimated memory grants that cause expensive spills to disk.

What kind of results can we expect to see?

For one internal Microsoft customer, they run a recurring process that generates summarized results from a very large telemetry data set.  They query this large data set fifteen times, each time pulling different metrics. Out of the fifteen separate queries, fourteen of them encounter spills to disk due to memory grant misestimates.

The following graph shows one example of using batch mode adaptive memory grant feedback. For the first execution of the customer’s query, duration was 88 seconds due to high spills:

DECLARE @EndTime datetime = '2016-09-22 00:00:00.000';
DECLARE @StartTime datetime = '2016-09-15 00:00:00.000';

SELECT TOP 10 hash_unique_bigint_id
FROM dbo.TelemetryDS
WHERE Timestamp BETWEEN @StartTime and @EndTime
GROUP BY hash_unique_bigint_id
ORDER BY MAX(max_elapsed_time_microsec) DESC

Memory Grant Feedback - Figure 1
With memory grant feedback enabled, for the second execution, duration is 1 second (down from 88 seconds) and we see spills are removed entirely and the grant is higher:
Memory Grant Feedback - Figure 2

How does batch mode adaptive memory grant feedback work?

For excessive grants, if the granted memory is more than two times the size of the actual used memory, memory grant feedback will recalculate the memory grant and update the cached plan.  Plans with memory grants under 1MB will not be recalculated for overages.

For insufficiently sized memory grants that result in a spill to disk for batch mode operators, memory grant feedback will trigger a recalculation of the memory grant. Spill events are reported to memory grant feedback and can be surfaced via the spilling_report_to_memory_grant_feedback XEvent event. This event returns the node id from the plan and spilled data size of that node.

Memory Grant Feedback - Figure 3

Can I see the adjusted memory grant in my execution plan?

Yes.  The adjusted memory grant will show up in the actual (post-execution) plan via the “GrantedMemory” property.  You can see this property in the root operator of the graphical showplan or in the showplan XML output:

Memory Grant Feedback - Figure 4
How do I enable batch mode adaptive memory grant feedback?

To have your workloads automatically eligible for this improvement, enable compatibility level 140 for the database.  For CTP1, you can set this using Transact-SQL.  For example:

ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 140;

What if my memory grant requirements differ significantly based on parameter values of consecutive executions?

Different parameter values may also require different query plans in order to remain optimal. This type of query is defined as “parameter-sensitive.” For parameter-sensitive plans, memory grant feedback will disable itself on a query if it has unstable memory requirements.  The plan is disabled after several repeated runs of the query and this can be observed by monitoring the memory_grant_feedback_loop_disabled XEvent.

Does this feature help singleton executions?

Feedback can be stored in the cached plan for a single execution, however it is the consecutive executions of that statement that will benefit from the memory grant feedback adjustments.  This improvement applies to repeated execution of statements.

How can I track when batch mode adaptive memory grant feedback is used?

You can track memory grant feedback events using the memory_grant_updated_by_feedback XEvent event.  This event tracks the current execution count history, the number of times the plan has been updated by memory grant feedback, the ideal additional memory grant before modification and the ideal additional memory grant after memory grant feedback has modified the cached plan.

Memory Grant Feedback - Figure 5

Why batch mode and not row mode for this improvement?

We are starting with batch mode, however we are looking to expand this to row mode as well for a future update.

Does this improvement work with Resource Governor and memory grant query hints?

The actual memory granted honors the query memory limit determined by resource governor or query hint.

What if the plan is evicted from cache?

Feedback is not persisted if the plan is evicted from cache.

Will this improvement work if I use OPTION (RECOMPILE)?

A statement using OPTION(RECOMPILE) will create a new plan and not cache it. Since it is not cached, no memory grant feedback is produced and it is not stored for that compilation and execution.  However, if an equivalent statement (i.e. with the same query hash) that did not use OPTION(RECOMPILE) was cached and then re-executed, the consecutive statement can benefit from memory grant feedback.

Will Query Store capture changes to the memory grant?

Memory grant feedback will only change the cached plan. Changes are not captured in Query Store for this version.

I’m interested in the other adaptive query processing features.  How can I stay informed, provide feedback and learn about how (and when) I can test my own workloads?

Please sign up for the adaptive query processing preview here: https://aka.ms/AdaptiveQPPreview

We’ll keep in touch with customers who fill out the survey and we will contact you regarding testing and feedback opportunities that will surface in early 2017.

HPE and Microsoft Advance Collaboration to Accelerate Hybrid Cloud Adoption

$
0
0

This post was authored by Mark Jewett, Senior Director Product Marketing, Cloud Platform Marketing.

Im here in London at the HPE Discover event.Today, Scott Guthrie, our Executive Vice President of Cloud and Enterprise, appeared in the keynote with Antonio Neri, Executive Vice President and General Manager, Enterprise Group at HPE.They discussed our shared view on the hybrid reality enterprises face as they transform their IT to cloud computing, as well as the great solutions we have around Azure as the hybrid cloud platform.They showcased many examples of progress that weve made in the year since the last HPE Discover event in London, and pointed to new solutions like Azure Stack coming soon. I encourage you to read this blog post from HPEs Ken Won, Director of HPE Cloud Solutions Marketing to learn more.

Viewing all 13502 articles
Browse latest View live


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