Sites e uma Web livre de plug-ins

Estamos no processo de transição para uma Web livre de plug-ins. Todo site que usa plug-ins precisa entender as vantagens de uma navegação sem plug-ins para seus clientes. Grande parte da navegação na Web hoje acontece em dispositivos que simplesmente não dão suporte a plug-ins. Mesmo os navegadores que dão suporte a plug-ins oferecem muitas formas de execução sem plug-ins.

O IE estilo Metro é executado sem plug-ins para aumentar a vida útil da bateria, bem como a segurança, a confiabilidade e a privacidade dos consumidores. Anteriormente, escrevemos sobre como usamos a lista CV (Modo de Exibição de Compatibilidade) para garantir que os sites que oferecem uma experiência livre de plug-ins para outros navegadores ofereçam essa mesma experiência aos usuários do IE10. Esta postagem descreve uma forma de os sites que continuam dependendo de plug-ins oferecerem a melhor experiência possível aos consumidores que navegam com o IE estilo Metro.

Os desenvolvedores com sites que precisam de plug-ins podem usar um cabeçalho HTTP ou marca meta para sinalizar o Internet Explorer estilo Metro a exibir um aviso ao usuário.

Cabeçalho HTTP

X-UA-Compatible: requiresActiveX=true


Marca META

<meta http-equiv="X-UA-Compatible" content="requiresActiveX=true" />

O IE10 estilo Metro detecta esses sinalizadores e oferece ao consumidor uma opção com apenas um toque para usar o IE10 na área de trabalho:

Captura de tela de um site de vídeos fictício mostrando um aviso com o texto [The site uses add-ons that require Internet Explorer on the desktop.] (O site usa complementos que exigem o Internet Explorer na área de trabalho.) Três botões de ação são exibidos: [Open] (Abrir), [Don't show again for this site] (Não mostrar novamente para este site) e [Close] (Fechar).

Além de respeitar esses sinalizadores X-UA-Compatible especificados pelo desenvolvedor, a lista CV (Modo de Exibição de Compatibilidade) também pode especificar um site que precisa ser executado na área de trabalho.

Esse mecanismo oferece uma solução temporária. A navegação na área de trabalho e a maioria dos plug-ins não foram criados para telas pequenas, restrições de bateria e experiência sem o uso do mouse. Oferecer um caminho fácil para a área de trabalho do Windows é o último recurso enquanto não houver uma alternativa ao conteúdo que depende de plug-ins.

Uma Web livre de plug-ins beneficia os consumidores e desenvolvedores e todos fazemos parte da transição. O IE10 facilita o oferecimento da melhor experiência possível enquanto você migra o seu site.

—John Hrvatin, gerente de programas geral, Internet Explorer

The Gmail man!

I have to admit that this advertisement by Microsoft, poking fun at Google and Gmail – with an advert for its Office 365 service – is pretty funny.

In it, they take shots at Google’s habit of scanning your email messages and extracting keywords and tokens in order to better target advertisements that cross your screen.  So, if I were to email people about the broker I use, say, TD Ameritrade, and talk about the run up in the Nasdaq we’ve had since the start of the year, then Gmail would serve me ads about investment seminars and trading products and maybe even advertisements for cheaper brokers.

On the one hand, I like targeted advertisements that are relevant to me.  There are certain things I care about:

  • Thai food
  • Magic books
  • Software that would make stock trading easier so I don’t have to write it all myself using tons of copy/pasting in Excel

But do I want Gmail reading my email, looking for keywords?  Do I care about targeted advertising that much?

Which do I value more?  Keeping my email private or having relevant products brought to me for my perusal?  Which do you value more?

Managing Requirements and Tracking Defects with Team Foundation Server 2010

 

Register here for the Managing Requirements and Tracking Defects with Team Foundation Server 2010 Webinar !

Wednesday, March 7, 2012 at 2:00PM EST

Microsoft and ALP International invite you to a one hour webcast during which we’ll demonstrate the requirements management and defect tracking capabilities of Microsoft Visual Studio and Team Foundation Server 2010.

Visual Studio 2010 introduces a new set of tools and capabilities that enable analysts and testers to easily manage requirements and track defects.

• Learn how to manage requirements and defects through the lifecycle, including planning, workflow, traceability, review, change management, and reporting

• See how you can link each test case to the relevant requirements or user stories, depending on your project management methodology

• When requirements or user stories, or features are ready to be tested, you can run your tests for each configuration that you specified

• Explore reporting options for traceability and requirement validation documentation

C++ AMP Open Specification

As an industry trend, advancement in heterogeneous hardware has progressed at a rapid pace.  This in turn has fueled developer desire to target such hardware for accelerated computation, necessitating a significant step forward in programming models to enable such practices. 

C++ Accelerated Massive Parallelism (C++ AMP) is a new technology implemented in Visual Studio 11 that helps C++ developers use accelerators such as the GPU for parallel programming. I’ve blogged about it since its initial disclosure, including discussing our intention to share the C++ AMP specification so as to help bring general purpose GPU programming to all C++ developers, regardless of whether they’re using Visual C++. I am excited today to deliver on that commitment.

Today at the GoingNative 2012 event, Microsoft announced publication, under the Microsoft Community Promise license, of the C++ AMP open specification. This release means compiler developers and vendors now have the ability to implement C++ AMP in their compilers, just as Microsoft has done, broadening access for C++ developers everywhere to the possibilities offered by heterogeneous hardware.

Please send any feedback you have on this to the C++ AMP team via their blog.

Namaste!

Windows Azure Toolkit for Social Games Updates

The Windows Azure Toolkit for Social Games makes it easier for developers to quickly build social and casual games using Windows Azure. Last week, we released version 1.2.2 of the toolkit. You can download the source here or the self-extracting package here. This version adds significant performance increases, improved stability, and now uses Autofac for dependency injection. Additionally, as part of this release, we have moved the toolkit Github – this allows you to easily fork, clone, and contribute back to the toolkit in the same fashion you can with the open sourced Windows Azure SDKs.

For those who haven’t downloaded or used the social gaming toolkit yet I would encourage you to check it out. There are a lot of common patterns and tons of reusable code in the toolkit that applies for many scenarios besides the gaming space. With more and more applications relying on real-time communication, sharing, and feedback the mechanisms that are used in games can be applied to many kinds of software.

The core features of this toolkit are:

  • Samples Games (Tic-Tac-Toe and Four in a Row)
  • Authentication with ACS (Access Control service)
  • JavaScript Tests
  • Leaderboard
  • Game Friends
  • User Profiles
  • Invites and Notifications
  • Tests for both server and client code
  • Reusable JavaScript libraries

You can read more about the social gaming toolkit on the project site’s wiki. We have documents that will help you get started using the toolkit and deploying the toolkit. Additionally, you will find blog posts about this release and other on my blog.

Sometimes MMM is MMMM, other times MMM is M! (aka Not all abbreviations are created equal)

There are several LCTYPE values suitable for use by GetLocaleInfo and GetLocaleInfoEx that act as abbreviations.

Like the seven LOCALE_SABBREVDAYNAME* values representing the days, which are documented as:

Native abbreviated name for [Day]. The maximum number of characters allowed for this string is 80, including a terminating null character.

Or like the twelve LOCALE_SABBREVMONTHNAME* values representing the months, which are documented as:

Native abbreviated name for [Month]. The maximum number of characters allowed for this string is 80, including a terminating null character.

And there are helpful doc topics like Day, Month, Year, and Era Format Pictures that say things like:

d Day of the month as digits without leading zeros for single-digit days.
dd Day of the month as digits with leading zeros for single-digit days.
ddd Abbreviated day of the week as specified by a LOCALE_SABBREVDAYNAME*value, for example, “Mon” in English (United States).
dddd Day of the week as specified by a LOCALE_SDAYNAME* value.
M Month as digits without leading zeros for single-digit months.
MM Month as digits with leading zeros for single-digit months.
MMM Abbreviated month as specified by a LOCALE_SABBREVMONTHNAME* value, for example, “Nov” in English (United States).
MMMM Month as specified by a LOCALE_SMONTHNAME* value, for example, “November” for English (United States), and “Noviembre” for Spanish (Spain).

Very helpful, right? :-)

Well, they might have done a few abbreviated other language examples, but I suppose we can guess what they might be. No harm, no foul….

Any developer can wrap their head around these examples and this information.

Go for it, developers!

Oh, wait — before I forget, there are some problems with going forward with this knowledege here.

Like the not insignificant number of locales that don’t have abbreviated names that are any different than the regular month names.

So (for example) many locales will have a LOCALE_SABBREVDAYNAME5 that is identical to LOCALE_SDAYNAME5, a LOCALE_SABBREVMONTHNAME10 that is identical to LOCALE_SMONTHNAME10. And so on.

They don’t want to mention that? Seems like oit ought to be in there somewhere….

It may certainly put a cat among the pigeons for some unususpecting developers!

Oh yeah, and it gets worse.

Like let’s look at the Japanese abbreviated month names:

1
2
3
4
5
6
7
8
9
10
11
12

Um, wait.

Isn’t that what M (Month as digits without leading zeros for single-digit months) is supposed to be for? That’s just unexpected.

We do not’ document that either — even though we’ve been doing it for years!

And there are other strange examples, too. Perhaps you have a favorite?

There is of course what we do for zh-CN abbreviated and full month names:

1? ??
2? ??
3? ??
4? ??
5? ??
6? ??
7? ??
8? ??
9? ??
10? ??
11? ???
12? ???

Just keep in mind in that ? is “month” and you are pretty much reading Chinese now, right? :-)

Now I’m not saying it’s wrong — it is right, but it is odd if you are not Chinese to think of the difference here as being abbreviated versus full month names.

Remember what we have for the Japanese abbreviated month names? We have the same thing for Korean — oh, and also Czech and Slovak, too!

1
2
3
4
5
6
7
8
9
10
11
12

I am fully prepared to assume that this different approach might be expected in East Asia.

But that it might also be in Slovakia and the Czech Republic too? That’s new information!

It is hardly my first intuitive guess that those are the expected abbreviations for these Czech and Slovak month names, right?

leden január
únor február
b?ezen marec
duben apríl
kv?ten máj
?erven jún
?ervenec júl
srpen august
zá?í september
?íjen október
listopad november
prosinec december

Now all I know is that if I am a developer I have a somewhat foggy notion of what MMM means.

Any developer or designer trying to create a calendar might.

But for many locales, it clearly ought to be documented in some conceptual topic that I should be ready to assume that MMM might be MMMM. Or even M!

Kinect for Windows ab sofort für Unternehmen erhältlich

Ab sofort ist das kommerzielle Kinect for Windows Programm in Deutschland erhältlich: Microsoft ermöglicht damit Unternehmen auf der ganzen Welt, Kinect auf eine völlig neue Art und Weise zu nutzen. Microsoft arbeitet im Rahmen des Kinect for Windows Pilotprogramms bereits mit mehr als 300 Konzernen aus über 25 Ländern an innovativen Wegen, Kinect einzusetzen.  Unternehmen wie UnitedHealth Group, American Express, Matell, Telefonica und Toyota erforschen mit Kinect for Windows Möglichkeiten, mit denen sie nicht nur ihre eigenen Arbeitsprozesse verbessern und neue Kundenerlebnisse schaffen, sondern potenziell eine gesamte Industrie revolutionieren können.

„Kinect für Xbox 360 kam vor gut einem Jahr auf den Markt und wir haben gerade erst begonnen alle Möglichkeiten, die Kinect bietet, zu erforschen“, sagt Craig Eisler, General Manager von Kinect for Windows. „Wir stellen Visionären auf der ganzen Welt Hardware und Software zur Verfügung, die speziell für Windows Anwendungen entwickelt wurde.  Wir hoffen, dass Unternehmen dazu inspiriert werden, revolutionäre Anwendungen mit Kinect zu erzielen. Kinect for Windows ermöglicht nun Unternehmungen den Schritt aus verschiedenen Branchen, beispielsweise in den Bildungssektor, die Medizinbranche und den Einzelhandel, Anwendungsszenarien für ihre Produkte und Services zu entwickeln.“

Der umfassend getestete Kinect for Windows Sensor wurde für Entwickler konzipiert und bietet eine Reihe von Features. Zum Beispiel gibt es ein verbessertes Skelett-Tracking und dank der neuesten Microsoft Speech Komponenten erweiterte Sprach- und Audioleistungen. Außerdem sind Objekte mit dem integrierten „Near Mode“ bis zu 40 cm vor dem Sensor noch gut zu erkennen.

Die kommerzielle Lizenz und Hardware von Kinect for Windows ist neben Deutschland weltweit in elf weiteren Ländern für eine unverbindliche Preisempfehlung von 249€ verfügbar. Der Preis beinhaltet eine einjährige Garantie und Zugriff auf fortlaufende Software Updates für die Sprachsteuerung sowie die Bewegungserkennung.  Kinect for Windows Sensoren und Zubehör können online oder im Handel erworben werden. Eine Liste der Händler gibt es unter KinectforWindows.com.

Weitere Informationen sind unter KinectforWindows.com oder auf dem Kinect for Windows Blog zu finden.

Come risolvere il problema dei pagamenti per l’iscrizione come Developer al Windows Phone Marketplace – AppHub

Se non riuscite ad iscrivervi al Marketplace di Windows Phone per poter pubblicare le vostre applicazioni ricevendo un errore sulla validazione della carta di credito, dovete seguire queste istruzioni:

  1. Please go to https://account.microsoft.com and sign in with the Live ID and password you used in App Hub
  2. Click Payment Options
  3. Add Payment Option
  4. Fill in your details and click next
  5. Sign back into App Hub and your payment method will display in step 5 “Hit confirm Payment”

I problemi dovrebbero “magicamente” risolversi Sorriso

Naturalmente se anche seguendo questi passi non riuscite ad iscrivervi potete sempre contattarci tramite itamsdn@microsoft.com e cercheremo di risolvere il problema.

p.s. se durante la procedura di pagamento ricevete un SMS indicando il pagamento di 1€ a favore di Microsoft, si tratta dell’importo utilizzato per verificare la validità della carta di credito, e non verrà effettivamente addebitato, infatti non lo troverete nell’estratto conto.

Hotfix available if your audio device is missing after a restart (KB975538)

hotfix available

Audio devices are missing or are displayed as "Not plugged in" after you restart a the computer that is running Windows 7 or Windows Server 2008 R2

You have a computer that is running Windows 7 or Windows Server 2008 R2. You connect an audio device to an HDMI endpoint on this computer. At first, the audio device works correctly. However, after you restart the computer, you cannot hear any sound from the audio device. Additionally, in the Sound window, the status of the corresponding audio device is "Not plugged in."

Read more at the full KB article (KB975538)

get more help on sound and audio problems in Windows 7

Rob

Technorati Tags: ,,,,

Outlook Add-in: Monitor add-ins load time

An Extensibility Add-in code sample for monitoring Add-ins load time in Outlook: The add-in uses the OnStartupComplete event, gets the Outlook process start time and writes an event in the Application event log.

The event will be similar to:

Log Name:       Application
Source:            Outlook Startup Monitor
Date:               27/01/2012 14:22:54
Event ID:          1
Task Category: None
Level:               Information
Keywords:        Classic
Message:         Outlook was started at 03/02/2012 08:25:39 and it finished loading add-ins at 03/02/2012 08:30:25

namespace OutlookStartupMonitor{    using System;    using Extensibility;    using System.Runtime.InteropServices;    using System.Reflection;    using System.Diagnostics;

    #region Read me for Add-in installation and setup information.    // When run, the Add-in wizard prepared the registry for the Add-in.    // At a later time, if the Add-in becomes unavailable for reasons such as:    // 1) You moved this project to a computer other than which is was originally created on.    // 2) You chose 'Yes' when presented with a message asking if you wish to remove the Add-in.    // 3) Registry corruption.    // you will need to re-register the Add-in by building the OutlookStartupMonitorSetup project,     // right click the project in the Solution Explorer, then choose install.    #endregion

    /// <summary>    /// The object for implementing an Add-in.    /// </summary>    /// <seealso class='IDTExtensibility2' />    [GuidAttribute("E2BAED2C-4B20-479F-A874-611B2AA35AD2"), ProgId("OutlookStartupMonitor.Connect")]    public class Connect : Object, Extensibility.IDTExtensibility2    {        /// <summary>        /// Implements the constructor for the Add-in object.        /// Place your initialization code within this method.        /// </summary>        public Connect()        {        }

        /// <summary>        /// Implements the OnConnection method of the IDTExtensibility2 interface.        /// Receives notification that the Add-in is being loaded.        /// </summary>        /// <param term='application'>        /// Root object of the host application.        /// </param>        /// <param term='connectMode'>        /// Describes how the Add-in is being loaded.        /// </param>        /// <param term='addInInst'>        /// Object representing this Add-in.        /// </param>        /// <seealso class='IDTExtensibility2' />        public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)        {            applicationObject = application;            addInInstance = addInInst;        }

        /// <summary>        /// Implements the OnDisconnection method of the IDTExtensibility2 interface.        /// Receives notification that the Add-in is being unloaded.        /// </summary>        /// <param term='disconnectMode'>        /// Describes how the Add-in is being unloaded.        /// </param>        /// <param term='custom'>        /// Array of parameters that are host application specific.        /// </param>        /// <seealso class='IDTExtensibility2' />        public void OnDisconnection(Extensibility.ext_DisconnectMode disconnectMode, ref System.Array custom)        {        }

        /// <summary>        /// Implements the OnAddInsUpdate method of the IDTExtensibility2 interface.        /// Receives notification that the collection of Add-ins has changed.        /// </summary>        /// <param term='custom'>        /// Array of parameters that are host application specific.        /// </param>        /// <seealso class='IDTExtensibility2' />        public void OnAddInsUpdate(ref System.Array custom)        {        }

        /// <summary>        /// Implements the OnStartupComplete method of the IDTExtensibility2 interface.        /// Receives notification that the host application has completed loading.        /// </summary>        /// <param term='custom'>        /// Array of parameters that are host application specific.        /// </param>        /// <seealso class='IDTExtensibility2' />        public void OnStartupComplete(ref System.Array custom)        {            try            {                Process olProc = Process.GetCurrentProcess();

                string sSource;                string sLog;                string sEvent;

                sSource = "Outlook Startup Monitor";                sLog = "Application";                sEvent = "Outlook was started at " + olProc.StartTime.ToString() + " and it finished loading add-ins at " + DateTime.Now.ToString();

                if (!EventLog.SourceExists(sSource))                {                    EventLog.CreateEventSource(sSource, sLog);                }

                EventLog.WriteEntry(sSource, sEvent, EventLogEntryType.Information, 1);

            }            catch (Exception ex)            {

            }        }

        /// <summary>        /// Implements the OnBeginShutdown method of the IDTExtensibility2 interface.        /// Receives notification that the host application is being unloaded.        /// </summary>        /// <param term='custom'>        /// Array of parameters that are host application specific.        /// </param>        /// <seealso class='IDTExtensibility2' />        public void OnBeginShutdown(ref System.Array custom)        {        }

        private object applicationObject;        private object addInInstance;    }}

I am also attaching the Visual Studio solution.