Category: .NET

Playing around with Xbox controller

Posted on 2:27pm 12/24/2007 by Bruno Silva in .NET, Programming, XBox 360, XNA

Xbox 360 Controller

This Christmas a friend gave me a Xbox wired controller. I don’t have a Xbox 360, but I wanted to try XNA development and use the controller to develop some different user-interfaces on windows-based applications. This weekend I managed to put the first pieces to work :)

Based on XNA framework which has support for Xbox 360 controller I built an component that you can drag and drop into your windows forms application. You can assign each control instance to a different controller (up to 4) and set the interval between hardware changes checking (the default is 100 miliseconds). This component raises events when the controller status changes. It has a general onChange event, and an event for each button, trigger and stick status change. It has also a method to control the controller vibration.

This component is not a big deal. When it is instantiated, the component creates a new thread which waits for a period of time before returning into the main thread. When it returns it checks for controller changes using the Microsoft.Xna.Framework.Input.GamePad class. This check is made by comparing the current GamePadState with the previous one. For each change it is raised an event to which you can subscribe in your windows application. I tried to use it in a WPF application. It worked, but I had to create the component in code. It didn’t appear in the toolbox.

You can download the component source code and an example here. I added some comments into the code, but I think that it is pretty simple to understand even to people with little experience with C#. Any question/suggestion feel free to comment!

I’ve tried it in a virtual machine in order to find out the software requirements. I had to install XNA Game Studio 2.0 to put it to work… The XNA redistributable wasn’t enough. If someone can tell me how to distribute my examples with minimum software requirements I’ll be glad to hear from you ;)

This is also a great change for you to try Visual Studio 2008, since the solution in the zip package has to be opened in VS2008. If you don’t have access to this software, or you’re having trouble migrating the code into a VS2005 environment just tell me, and I will help you out.

As soon as I develop some applications using Xbox controller I’ll publish them here in my blog.

Microsoft Press Free E-Book

Posted on 4:42pm 12/19/2007 by Bruno Silva in .NET, ASP.NET, Microsoft, Programming, Silverlight

Microsoft Learning

MS Press has just released an e-book on Visual Studio 2008 technologies and are giving it away for free. The e-book includes excerpts from three recent book releases and provides a wealth of information and insights from top experts:

You can see the first chapter of these books for free. When you register, you’ll be able to download a lot more content of those books, packaged as an e-book.

MSDN - Novas Tecnologias para Desenvolvimento - relato

Posted on 10:46pm 11/21/2007 by Bruno Silva in .NET, Events, Microsoft, SQL Server, Silverlight, Windows Live

Pois é! Como tinha anunciado há uns dias/semanas no blog hoje houve um evento da Microsoft no hotel Sheraton, em Lisboa. Este evento foi realizado à imagem do evento do Porto, mas no entanto a versão lisboeta apenas tinha uma track. Sempre facilitou a escolha (ou falta dela) :P

O evento começou com a intervenção da Cristina Carvalho (Microsoft Portugal). Realço 2 pontos da intervenção.

1º - Concurso de Gadgets 2007 Portugal - Faz uma daquelas coisas giras (e tantas vezes inúteis) para colocar na barra lateral do Windows Vista, ou na tua área personalizada do Windows Live. A ideia é ser original mas acima de tudo fazer algo útil para o maior número de pessoas possíveis. O jurí é composto pelos utilizadores,e os prémios vejam no site :D

WebCast 4 Share - Ciclos de webcasts disponíveis gratuitamente para visualização online e download. Preciso dizer mais? É uma questão de aproveitar.

A segunda pessoa a intervir foi o Pedro Rosa (Microsoft Portugal). Começou por divulgar o TechDays 2008. Será de dia 11 a 14 de Março, sendo o lançamento do Windows Server 2008, Visual Studio 2008 e SQL Server 2008 no dia 11 de Março. Foi ele que realizou a primeira sessão subjacente ao tema Visual Studio 2008 e .NET Framework v3.5, o que há de novo?. Confesso que deste evento era a sessão que menos me interessava por já ter visto uma análoga no TechEd Developers. Deixo a referência para o que escrevi na altura do TechEd sobre este tema aqui. Mesmo assim gostei imenso da sessão, pois foi diferente da “versão espanhola” :P Foram feitas demonstrações de Silverlight e Popfly bem como LINQ, para aguçar o apetite para as sessões da tarde.

A sessão O que há de novo no SQL Server 2008 foi dada pelo Nuno Velho (Actual Training). Deixo de seguida a lista de algumas das novidades que foram expostas no que toca a este produto.

Nova instrução: MERGE. permite pegar nos dados de 2 tabelas para as consolidar numa só. Pode-se definir o comportamento do merge quando o registo existe nas 2 tabelas, apenas na de origem ou apenas na tabela de destino. É mais sintatic sugar do que outra coisa. Espero que já agora tenham optimizado o processo :)

Outo facilitador é a inserção dBruno Silva › Edit — WordPresse múltiplos registos num único comando insert (à imagem do mysql). INSERT INTO tbl_nome(campo) VALUES(’valor1′) (’valor2′) …

Passa-se a poder passar tabelas como parâmetro de Stored Procedures. Dentro das SPs a tabela é read-only e apenas pode ser definida como parâmetro de entrada (não de saída).

Resources Governor. Permite configurar por aplicação ou por regras específicas os recursos disponíveis para uma dada aplicação (ex:quantidade de memória e CPU).

Declarative Data Management - aplicação de políticas sobre a base de dados. Definir por exemplo que todas as tabelas com umas determinadas características devem começar por um prefixo TLB_. Existe um conjunto de objectos e atributos referentes às bases de dados e ao motor de bases de dados em si, bem como condições pré-definidas que podem ser usadas na construção das políticas.

Chage Data Capture - pode-se activar o logging de alterações na base de dados (inserção, edição e remoção de dados). Esta informação é guardada em tabelas extra. Futuramente o SQL Server incluirá um sistema de auditoria dos dados (exemplo: saber que utilizador alterou o quê e quando).

Data Compression - Compressão de dados. Pode-se não ter nenhuma, ter ao nível da linha ou da página de registos. Está prevista uma SP para calcular a percentagem de compressão, de forma a podermos tomar decisões sobre a aplicação de compressão. Atenção, como é óbvio estamos a trocar espaço em disco por tempo de processados em compressão/descompressão.

Mais um pormenor de sintatic sugar. UPDATE tabela SET campo+=10

Data Types - Novo tipo Filestream (ficheiros guardados em disco referenciados pela base de dados. Mas vão atrás quando se faz backup dela). O tipo Date passa a suportar valores desde 1-1-1 a 9999-12-31. O tipo time tem precisão de até 100 nano segundos. Novo tipo DateTimeOffset permite guardar qual o Offset GMT de uma data. Dados espaciais (coordenadas geográfias e geométricas) vem com um conjunto de funções para intersecção de rotas, áreas, etc.

A sessão O que é o LINQ foi apresentada pelo Luís Falcão (ISEL). Falou um pouco do LINQ to Objects, LINQ to SQL e LINQ to XML.

A sessão Desenvolvimento de Aplicações utilizando Silverlight foi apresentada pelo Nuno Godinho (Engifrota). A apresentação não trouxe nada de significativamente novo face à Expression European Designer Tour. Mas foi uma boa apresentação para quem não teve oportunidade de ir a este evento.

Por fim (the last but not the least) a sessão Serviços Live. Como criar aplicações utilizando os serviços Live foi dada pelo Pedro Rosa. Foi referido o BOOM que está a surgir do SaaS (Software as a Service) e de como os serviços Live fazem parte deste paradigma. Realço alguns serviços e respectivas funcionalidades.

Silverlight Streaming - a Microsoft aloja os teus vídeos juntamente com um player nos seus servidores, e apenas tens de colocar a referência onde o quiseres disponibilizar. 4Gb de alojamento gratuito para este tipo de conteúdos.

Windows Live Spaces Photo Control - Basicamente permite colocar num dado site um controlo com as fotos do teu Live Space. Podes escolher as fotos e passá-las para o teu site propriamente dito para serem processadas.

Windows Live ID - Facilita a vida aos utilizadores centralizando o processo de autenticação. Colocas o controlo no site, o login é feito nos servidores da Microsoft, e o teu site recebe um token respectivo ao utilizador. Com esse token consegues identificar o utilizador e potencialmente ter informação associada. No entanto passwords e nomes de utilizador não fazem parte das preocupações. Também é porreiro para poderes arrancar um site a partir do messenger já com a sessão iniciada!

Windows Live Contacts -Nada melhor do que um exemplo. Tens um site cheio de notícias, queres referenciar a notícia a um conjunto de amigos. Seleccionas de entre os teus contactos de messenger/e-mail (a partir de um controlo para o efeito) e envias somente essa informação para o site enviar os e-mails.

Windows Live Messenger - é possível colocar num site uma janela de conversação pública (ou mediante autenticação Live) para um contacto rápido de um visitante de um site ao responsável do mesmo. Tal pode ser usado como base para um Contact Center de uma empresa. Ou então para um tolo como eu que coloca no blog :) O link está debaixo da minha foto de perfil. Lá podem também ver outra funcionalidade. A exibição de um ícone com o estado do contacto. Todas estas funcionalidade se encontram desligadas por omissão. Para a activar e aplicar no vosso site sigam as instruções em MessengerSays.spaces.live.com.

No final ainda deu para ver uma demonstração da utilização de um comando da Wii ligado ao PC para controlar uma aplicação com o Microsoft Virtual Earth.

Devo realçar algumas falhas no evento. Escassez de espaço foi uma delas. 3 pessoas sentadas de seguida e a do meio mal podia respirar… Nos coffee breaks era missão quase impossível chegar às bebidas ou aos tabuleiros. Bem, pelo menos é sinal de uma grande adesão :) Outro problema notório foi a ligação à internet. Infelizmente já começa a ser hábito. No evento do Expression aconteceu o mesmo. Este problema recorrente prejudica a imagem dos produtos baseados na web que são apresentados. Alguns até podem ser lentos. Não discuto isso. Mas lentidão como vi hoje só pode ser fruto de uma ligação de má qualidade. Até porque já experimentei muita coisa em casa e não tive problemas de performance. No fundo tenho esperança que as pessoas ponham a mão na consciência e experimentem em casa antes de começar a dizer que os produtos são lentos. Se em casa forem lentos, então digam mal à vontade, porque então provavelmente têm razão.

TechEd 2007 - A developer diary on implementing Windows Cardspace

Posted on 1:31pm 11/08/2007 by Bruno Silva in .NET, TechEd-Developers

Windows CardSpace

A developer diary on implementing Windows Cardspace
Dominick Baier

Do you know Windows Cardspace? A new feature of .NET framework that allows authentication over the internet.
It is designed to be convenient and secure (avoiding phishing).
Nowadays authentication is application-centric. This means that which website has it’s own authentication system, stores information and the credentials of the users.
This design has some problems. People are registered in many sites. And they don’t want to memorize many passwords, so they tend to use the same password in almost all of them. If a hacker discovers one of them it can be a big big problem. By the other hand, many websites stores personal information, almost like a business card. But a year or so after the registration many informations can change (such as address, phone number and so on).
Windows Cardspace has a user-centric design. The information is stored in user’s computer. There is no need for a password. Windows Cardspace can also store information about the user (like a business card). When a user uses a card in a website, this website can refresh information about the user in their database.
This system can be used side-by-side with a old fashion way.

This system has a problem with mobility… To access websites from different computers you must backup a card into a disk or pen (protected by a password) an temporarily import it into the computer you want to use.

Alcides has told me about OpenID. I will have a look at it soon.
If you have Windows Vista try Windows Cardspace in SignOn.com

TechEd 2007 - Improvement in Visual Studio 2008 and .NET Compact Framework 3.5 for Windows Mobile developers

Posted on 9:59am 11/07/2007 by Bruno Silva in .NET, TechEd-Developers

Improvement in Visual Studio 2008 and .NET Compact Framework 3.5 for Windows Mobile developers
Andy Wigley

Not a great session. Compact Framework (CF) is a subset of .NET Framework for windows mobile devices.
It doesn’t have server technologies as ASP.NET and .NET Remoting. Doesn’t support Reflection. Some properties, events and methods were dropped from the original framework.
In about 10% of space of the original framework, it has about 30% of the functionality.

It has support for a subset of LINQ and WCF. The CF has now an audio API.

Visual Studio 2008 has support for Unit Testing, has a new version for the emulator (version 3.0) and supports Windows Mobile 5.0 SDK out of the box. VS 2008 has a Security Manager, which enables you to test your software in various possible security configurations in Windows Mobile.

TechEd 2007 - Introduction to Microsoft Sync Framework

Posted on 8:43am 11/07/2007 by Bruno Silva in .NET, TechEd-Developers

Introduction to Microsoft Sync Framework – Synchronization Framework for Enabling Roaming, Offline, and Collaboration Across Devices, Services & Apps

Philip Vaughn

Unfortunately, after 2 hours in Barcelona public buses, we were late for the first session of the day… I was supposed to go to a XNA development session. The only one of the event… Too bad. I used the time I had before the second session to put e-mail and blogging up to date.

I attended to a session about Sync Framework. It’s pretty nice! I hadn’t heard about it before this event. The big picture is captured the sentence

Your data wherever you are, on any PC, device or service without artificial barriers

This framework is meant to provide offline working and allow data to follow the user between systems.

As an offline working example we have Outlook Cached Mode, Mobile Work and Rich Experience on Web. By the other hand it allows collaboration as in Outlook contacts, Groove and Music Everywhere.

This framework allows applications to give a fast response, be always available, being optimized on storage questions (eg. Sending to server only what is needed).

The speaker talked about 3 main reasons to use Sync Framework.

It’s Powerfull. Deals with problems for us (conflicts, connection errors, corner cases)

It’s Flexible. Allows arbitrary data storages and data types, arbitrary protocols and topologies (one-way, peer-to-peer, etc.)

It’s Productive. Visual Studio 2008 is the ideal tool for quick development.

The first demo was called Contacts Anywhere. He created a contact entry in a custom application and synchronized it with Outlook and a mobile device.

A nice feature of this framework is that in a multiple synchronization hosts, when a conflict is solved between two of them, the conflict will not occur in the following synchronizations with other hosts, since it was already solved.

To work with Sync Framework you can use the built-in providers for file system synchronization, database synchronization and Simple Sharing Extensions (over RSS feeds).

There was a demo of the file system provider with the SyncToy application.

You can also add new providers to extend to other contexts.

I’ll try this framework as soon as I can. It is under development, but if you google it you can find a Beta version to try it out.

© Bruno Silva | Powered by Wordpress