Mais uma vez fui surpreendido pelo final de mais um ano, é difícil acreditar que já passou mais um ano, em que tanta coisa ficou por concretizar!
A velocidade com que o ano passou está intimamente ligada à quantidade de trabalho que fomos mantendo na empresa – parte to qual ainda transita para 2012 – e que comprometeu outras coisas que gostava de ter feito em 2011, como aplicações ‘pessoais’ para Windows Phone 7, brincar com o Netduino, fazer mais (leia-se, algum…) TT com o Discovery e ter mais tempo para as minhas meninas.
Do ponto de vista da moving2u estamos na recta final de entrega do maior projecto que desenvolvemos até hoje, que começámos a desenvolver no final de 2010 e que brevemente estará nas mãos de até 3000 utilizadores na Península Ibérica, colaboradores de uma empresa espanhola que nos confiou tal desafio. Paralelamente fomos desenvolvendo outros projectos específicos, uns mais complexos, como a interessante solução de logística que estamos a ultimar, outros mais simples mas não menos satisfatórios, como a aplicação para controlo de entradas para a Last2Ticket. Demos ainda neste último trimestre os primeiros passos num projecto que visa uma das mais importantes cadeias retalhistas em Portugal. A par destes projectos mais específicos, o nosso produto bandeira, o m2uMobileSales, continuou o seu percurso no território nacional e começa a ser promovido em Angola, Cabo Verde e Moçambique. O elo entre todos estes projectos é a plataforma onde todos correm – e continuarão a correr durante anos – vista por muitos e pelo mercado como ‘moribunda’, mas que tecnicamente, seja do ponto de vista do desenvolvimento, das funcionalidades expostas aos utilizadores e da gestão está num nível diferentes das plataformas móveis de consumo da moda. Estamos a falar (como é óbvio para quem segue o meu blog) do Windows Mobile, agora designado de Windows Embedded Handheld 6.5.
Não obstante o Windows Mobile e a .NET Compact Framework, combinação em que apostámos desde a criação da empresa em 2003, nos ter garantido um volume interessante de trabalho em 2011, “parar é morrer” e não nos podemos dar ao luxo de ignorarmos outras plataformas, que nascendo do mercado do consumo, conquistam um lugar cada vez mais importante nas empresas, pelo que em 2011 encetámos alguns passos no sentido de preparar o maior desafio que teremos em 2012, o abarcar de novas plataformas móveis e de desenvolvimento. É um caminho que nos levantará grandes desafios a diferentes níveis, mas a crer pela excitação na empresa decorrente dessa decisão, posso antecipar que com esforço e dedicação os ultrapassaremos!
Vítima do esforço que a empresa me tem exigido, este blog e outras actividades têm sido relegadas para um plano secundário mas não esquecido 
Desejo a todos um óptimo ano de 2012, que recompense aqueles que não baixam os braços, e que possamos estar daqui a um ano a trocar balanços positivos!
Foi com satisfação que recebi no passado dia 1 de Outubro o título de MVP concedido pela Microsoft. É a 9ª vez que o recebo desde 2003, e tal como nos anos mais recentes, com a especialidade em “Device Application Development”, que é como quem diz, desenvolvimento de aplicações para dispositivos móveis com sistema operativo Windows CE/Windows Mobile/Windows Embedded Enterprise Handhelds.
Já há meses que não tenho actualizado este blog, o trabalho na moving2u tem exigido uma atenção suplementar nos últimos meses, o que em paralelo com as exigências da minha vida pessoal leva a que alguma coisa vá ficando para trás. Adicionalmente, a àrea em que me tenho concentrado profissionalmente e na qual tenho sido reconhecido pela Microsoft – o desenvolvimento de aplicações para os sistemas operativos acima mencionados, utilizando a .NET Compact Framework 3.5 – não tem sido pródiga em novidades por parte da Microsoft. Em concreto, os únicos anúncios relevantes neste campo nos últimos 12-18 meses foram a passagem do que até aí conhecíamos como Windows Mobile 6.5.3 para a alçada da àrea de Embedded, com a actualização do nome do sistema operativo para Windows Embedded [Enterprise] Handheld, e o anúncio recente da disponibilização daquela que se esperava ser a próxima versão da Sync Framework, a 4.0 que em beta se tinha chamado 3.0 e que estava em CTP há um ano, sob a forma de Sync Framework Toolkit com código-fonte disponível e suporte para .NET CF, mas infelizmente sem mecanismos de change tracking ao nível da base de dados cliente.
Se por parte da Microsoft este campo da mobilidade não tem sido fértil em novidades, felizmente por parte de outras entidades o cenário é diferente, e temos assistido ao lançamento de equipamentos novos e actualizações a correr o Windows Mobile 6.5.3 e WEEH 6.5.3, que são hoje a única opção para aqueles que necessitam de equipamentos com esta plataforma, à medida que os operadores, lojas e fabricantes foram escoando os seus stocks de equipamentos de consumo com Windows Mobile. Equipamentos como o Motorola ES400, com um índice de robustez superior aos de um equipamento de consumo, ecrã VGA, teclado frontal, 3G/Wifi/BT/GPS de série, descodificação eficiente de códigos de barras com a câmara fotográfica e integração com os SDK da Motorola, opções de bateria extendida, tudo isto por preços a rondar os 500€, têm tido uma grande procura:

Paralelamente, em termos de ferramentas de desenvolvimento, empresas como a Resco têm mantido e lançado novas versões dos seus produtos para empresas que desenvolvem para .NET Compact Framework:

Muitos perguntar-se-ão, “mas para quê estes lançamentos para uma plalaforma declarada morta por muita gente?”. Um estudo recente da Gartner continua a eleger o Windows Mobile e as ferramentas de desenvolvimento associadas (.NET CF 3.5 e VS2008) como a melhor escolha em termos de desenvolvimento de aplicações do tipo Line-of-Business (LoB) para equipamentos móveis neste campeonato que decorre em paralelo com o outro campeonato, o dos smartphones de consumo, onde os protagonistas são outros. Pessoalmente, em termos do que é a minha actividade na moving2u, continuamos com um volume significativo de projectos em curso e no curto prazo a assentar nesta plataforma. Se desprezamos as outras plataformas móveis, lançadas para o mercado de consumo, mas com uma presença cada vez maior nalguns sectores de actividiade? Claro que não!
A moving2u é uma empresa de Coimbra que tem como principal actividade o desenvolvimento de aplicações de índole profissional para equipamentos móveis, contando quer com soluções chave-na-mão, quer soluções desenvolvidas por medida.
Para admissão no curto prazo no seu departamento de I&D em Coimbra, procura um(a) profissional com o bons conhecimentos de desenvolvimento em .NET (C#), exigente consigo próprio e com vontade e predisposição para testar e adoptar novas tecnologias.
Dada a dificuldade em avaliar um profissional nesta àrea com uma mera entrevista, os candidatos serão desafiados a completarem um pequeno projecto, que abarca algumas das àreas que queremos passar a integrar no nosso portfolio.
O desafio passará pelo desenvolvimento em C# de um conjunto de pequenas aplicações (aplicação web em ASP.NET ou ASP.NET MVC ou Silverlight, web services ou WCF, e cliente em .NET Compact Framework, Windows Phone 7, Monodroid ou Monotouch), com a particularidade de as aplicações web correrem em Azure. As pequenas aplicações não têm nenhuma utilidade prática que não seja demonstrar a ligação entre os diferentes módulos da solução (aplicação web com 2 páginas, web services com 2 métodos, aplicação cliente com 2 ecrãs, base de dados com 2 tabelas). Serão disponibilizados mais detalhes e links para as diferentes ferramentas necessárias aos interessados.
Não temos prazos para a conclusão do desafio, mas gostávamos de avançar com o processo de selecção entre Maio e Junho.
Compreendemos que muitos profissionais potencialmente interessados que leiam este post não estejam familiarizado com estas tecnologias, e não se sintam confortáveis com aceitarem um desafio deste tipo. Respeitamos, mas declaradamente não é esse o perfil da pessoa que procuramos.
As candidaturas deverão ser enviadas para o endereço alberto.silva#moving2u.pt (substituír o # pela @ ) com carta de apresentação e CV.
(Nota: endereço de email corrigido)
Há tempos criei um objecto a partir de um script T-SQL no SQL Server Management Console, numa janela de 'New Query'. Na altura não reparei que essa janela não estava a apontar para a base de dados pretendida, e agora, semanas depois, não conseguia descobrir a que base de dados daquela instância teria ido parar.
A resolução foi simples, utilizando uma stored procedure interna não documenta do SQL Server, a sp_MSforeachdb, corri o seguinte comando...
Exec sp_MSforeachdb 'Select * From ?..sysobjects where name = ''nome do meu objecto'' '
...e depois foi só procurar no meio dos resultados! Encontrado um resultado, o output não exibia o nome da base de dados onde se encontrava... uma pequena alteração, et voila!
Exec sp_MSforeachdb 'Select ''?'', * From ?..sysobjects where name = ''nome do meu objecto'' '
Também se pode utilizar o operador LIKE caso se saiba apenas uma parte do nome a procurar, podendo filtrar adicionalmente por campos da sysobjects para por ex. restringir os resultados a um tipo de objectos.
A moving2u é uma empresa de Coimbra que tem como principal actividade o desenvolvimento de aplicações de índole profissional para equipamentos móveis, contando quer com soluções chave-na-mão, quer soluções desenvolvidas por medida.
Para admissão no curto prazo no seu departamento de suporte & implementações em Taveiro, Coimbra, procura um(a) profissional com o seguinte perfil: boa capacidade de interacção com clientes seja por contacto directo, telefónico ou escrito, sensibilidade a temas relacionados com a implementação de software de gestão, sentido crítico na busca da melhor configuração que se ajusta ao cenário em causa, capacidade de organização e conhecimentos de informática que compreendam a utilização do SQL Server.
Preferência: Experiência de implementação de aplicações de gestão, frequência anterior de curso de formação de formadores, conhecimentos de sistemas operativos servidores Windows, disponibilidade para deslocações no território nacional, carta de condução
As candidaturas deverão ser enviadas para o endereço rh#moving2u.pt (substituír o # pela @ ) com carta de apresentação e CV.
Quando utilizamos valores do tipo decimal que vêm do SQL Server, o nº de casas decimais definido no SQL Server acompanha o valor nas variáveis de tipo de dados Decimal, o que muitas vezes não é conveniente. Se é um facto que a formatação de valores numéricos para string permite dar conta desta situação, utilizando por exemplo a máscara de formatação 0.#####, hoje necessitei de remover os zeros não significativos à direita do ponto decimal de uma variável do tipo decimal. Como não encontrei feito aquilo que pretendia, criei o seguinte extension method:
public static decimal RemoveTraillingZeros(this decimal number)
{
return decimal.Parse(number.ToString("0.#######", new System.Globalization.CultureInfo("en-US")), new System.Globalization.CultureInfo("en-US"));
}
A opção pela cultura en-US não influencia o resultado, o importante é que a conversão em string e de novo em decimal seja feita sobre a mesma cultura para evitar problemas… culturais!
Para quem necessitar de fazer a mesma operação mas a nível do SQL Server, há UDFs na internet que o permitem fazer.
Recebi a seguinte mensagem de um visitante deste blog, que espelha muitas das preocupações de empresas que desenvolvem para Windows Mobile, que tomo a liberdade de transcrever:
Com o lançamento do Windows Phone 7, tanto quanto tenho lido em blogs, o SQL SERVER COMPACT EDITION vai desaparecer certo? O meu problema é o seguinte, a empresa para a qual trabalho desenvolve software que usa bd em sql server ce, e é desenvolvido em VS 2005. A minha duvida é se voce sabe se o projecto será compativel no Windows Phone 7 ou se há alguma maneira de migrar, ou tendo em conta que o WP7 assenta em silverlight, a unica hipotese é desenvolver a solução de raiz??
A minha outra duvida é será que a Microsoft apesar de lançar o WP7, irá manter a venda de Windows Mobile 6.5 ? de modo a continuar a dar suporte e assistência às milhares de aplicações que existirão em todo o mundo?
Não sei se me pode ajudar, mas como sou leitor assíduo do seu blog, junto lhe envio as minhas preocupações, que de momento me causam grandes dores de cabeça :) Na expectativa que me possa transmitir alguma informação adicional
Começando pelo fim, o Windows Mobile 6.5 não morre! A Microsoft anunciou há meses – publiquei um post dobre o assunto na altura – o Windows Embedded Handheld como a nova incarnação do que actualmente conhecemos como Windows Mobile. Esse ‘novo’ sistema operativo, que a Motorola já começou a adoptar e que outros fabricantes adoptarão, tem já um roadmap conhecido, que prevê uma evolução futura baseada em CE 7.0, mantendo sempre compatibilidade com a .NET Compact Framework 3.5, o SQL Server CE 3.5, continuando para já a exigir o VS2008 para desenvolvimento. É um facto que os fabricantes mais ‘comerciais’ como a HTC não venham a adoptar este sistema operativo, mas por ex., com os preços dos novos Motorola ES400 a descer dos 600€, não há razão para as empresas não adoptarem equipamentos com fiabilidade e robustez acrescida face aos equipamentos de consumo.
Continuando no tema do desenvolvimento, as aplicações actualmente feitas para .NET CF 3.5 não correm de todo nos equipamentos Windows Phone 7. A boa notícia é que projectos bem estruturados em termos de separação de lógica de negócio, acesso a dados e apresentação facilitam a migração e/ou partilha de código entre projectos para as duas plataformas (nota: julgo que as class library a partilhar terão de ser desenvolvidas no VS2008 para .NET CF 3.5).
Para terminar, o SQL Server Compact Edition não desaparece! Para além de ter sido anunciado o seu suporte alargado do lado do PC, incluíndo suporte para projectos ASP.net, que não é o que interessa para a questão, o SQL Server Compact Edition estará presente nos Windows Phone 7, simplesmente não está acessível aos programadores nesta primeira versão do Windows Phone 7 e respectivas ferramentas de desenvolvimento. Desconhece-se qual a forma como será exposto, admitindo que venha a sê-lo.
Espero ter respondido ao autor da mensagem, qualquer questão pf. usem os comentários.
No seguimento de um post anterior sobre o PDC2010 e as opções para assistir não-presencialmente, quem pretender assitir à keynote, a partir das 17:00 da próxima 5ª feira no auditório da Microsoft, deverá registar-se utilizando o seguinte link:
https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032465793&Culture=pt-PT
A seguir à keynote haverá espaço para discussão sobre as tecnologias que estarão em evidência no evento.
No próximo dia 28 de Outubro, às 17:00 portuguesas terá início a keynote de abertura do PDC2010. O evento deste ano tem um atractivo, realiza-se no Microsoft Campus em Redmond, que se revelou também ser um inconveniente, as inscrições esgotaram muito rapidamente. Costuma-se dizer que estes eventos são para quem pode, mas neste caso, mesmo entre quem já tinha alocado budget para o evento, muitos ficaram de fora.
Para esses e para todos os outros que pelas mais diversas razões não se poderiam deslocar a Redmond, as boas notícias são que o evento será transmitido para locais ao redor do mundo onde poderão com outras pessoas assistir a essas transmissões, como no auditório da Microsoft em Lisboa, mas, também poderão assistir live a partir dos V/ PC a partir do site do evento, e descarregar as sessões 24 horas depois de terem lugar!
Podem consultar a agenda e lista de sessões no site do evento, a partir de onde podem descarregar também lembretes para o Outlook.
Pessoalmente destaco as seguintes:
Windows Phone 7
Building Windows Phone 7 applications with the Windows Azure Platform, Steve Marx, Thursday, 11:30 AM-12:30 PM (GMT-7)
Learn how to build Windows Phone 7 applications that are backed by scalable cloud components hosted in Windows Azure. This demo-heavy session will cover best practices relating to communication, authentication, and data synchronization between phone applications and cloud components.
Mysteries of Windows Memory Management Revealed, Part 1 of 2, Mark Russinovich, Thursday, 2:00 PM-3:00 PM (GMT-7)
If you want to know the difference between System Committed memory and Process Committed memory, wondered what all those memory numbers shown by Task Manager really mean, or want to gain insight into the memory-related impact of a process, then this talk is for you. Using various memory analysis tools including: Process Explorer, VMMap, RAMMap, and others to highlight concepts throughout, the presentation starts with an overview of virtual memory management, describing types of process address space memory and how they impact system virtual memory. Then it dives into physical memory management, discussing how Windows manages process working sets, how it keeps track of physical memory, and how memory moves between different states. This is Part 1 of a two-part session.
Things I Wish I Knew Three Months Ago about Building Windows Phone 7 Applications, Jaime Rodriguez, Thursday, 2:00 PM-3:00 PM (GMT-7)
The Windows Phone clients for Twitter and Facebook are two new, native-looking Windows Phone applications. Come hear about all the lessons learned while developing these applications. Learn insights on UX as well as development/architecture patterns for building great, well-behaved, native-looking Windows Phone 7 apps.
Mysteries of Windows Memory Management Revealed, Part 2 of 2, Mark Russinovich, Thursday, 3:15 PM-4:15 PM (GMT-7)
If you want to know the difference between System Committed memory and Process Committed memory, wondered what all those memory numbers shown by Task Manager really mean, or want to gain insight into the memory-related impact of a process, then this talk is for you. Using various memory analysis tools including: Process Explorer, VMMap, RAMMap, and others to highlight concepts throughout, the presentation starts with an overview of virtual memory management, describing types of process address space memory and how they impact system virtual memory. Then it dives into physical memory management, discussing how Windows manages process working sets, how it keeps track of physical memory, and how memory moves between different states. This is Part 2 of a two-part session.
Optimizing Performance for Silverlight Windows Phone 7 Applications, Oren Nachman, Thursday, 3:15 PM-4:15 PM (GMT-7)
Hear about the key tips, tricks and common mistakes that were learned by analyzing several real world applications. See demos of how real apps are debugged. Also learn how to write world class applications with animations running at 60fps.
3-Screen Coding: Sharing code between Windows Phone, Silverlight, and .NET, Shawn Burke, Thursday, 4:30 PM-5:30 PM (GMT-7)
Get a preview of upcoming Visual Studio features that will allow you to share code between Microsoft .NET platforms. You’ll learn how to structure applications to maximize the amount of shared code, how to write an app that’s used across Silverlight Desktop and Windows Phone, and how to build business logic and helper functions that work across all 3 Screens plus the cloud.
Things You Need to Know Before Building XNA Games for Windows Phone 7, Shawn Hargreaves, Friday, 11:30 AM-12:30 PM (GMT-7)
So you have a cool idea for a game. This session covers some of the less obvious things you will need to know to turn your idea into reality using XNA Game Studio for Windows Phone. Topics include how to choose the best orientation and resolution, how game content differs from typical productivity or web applications, how to deal with tombstoning, speed up load times, and how to proceed if you are interested in getting access to Xbox LIVE on the phone.
Real-World Analysis and Optimization of XNA Framework Games on Windows Phone 7, Jeff Petkau, Friday, 2:00 PM-3:00 PM (GMT-7)
Good code design, performance tips, and a solid understanding of the platform are all essential to game development. Learn how to use the Microsoft’s Advanced Technology Group's (ATG) battle-tested techniques to find and fix performance-killing issues in Windows Phone 7 XNA Framework game code. Also, hear about real-world analysis and optimization of XNA Framework games on Windows Phone 7.
The Rich Mobile Web – Today and Tomorrow, Joe Marini, On Demand
Come learn how to plan and design for today's - and tomorrow's - Rich Mobile Web, whether you have an existing site that you want to get mobilized or are starting from scratch.
Making Money with the Windows Phone Market Place, Karen Luk, On Demand
In Windows Phone 7, Microsoft provides a central mechanism for distributing your application or game to all Windows Phone users: the Windows Phone Marketplace. In this session, we’ll review the high level workings of the Marketplace, but more importantly, we’ll drill deep on the functional criteria your application must meet, and the practices you should use in order to meet them.
Build Outstanding User Experiences in Windows Phone 7, Bryan Agnetta, On Demand
Come hear how the Windows Phone design system, codenamed "Metro", will help developers deliver outstanding user experiences on Windows Phone 7. Learn how the Windows Phone 7 application platform makes it easier than ever to build experiences that leverage the Metro design system. This session will go in depth into not only how to use the new controls, but also how to design your application experience to leverage this compelling new application paradigm.
Tecnologias de sincronização
Creating Custom OData Services: Inside Some of The Top OData Services, Pablo Castro, Thursday, 3:15 PM-4:15 PM (GMT-7)
What does it take to build a real-world OData (Open Data Protocol) service that’s secure, scalable and works great with all clients across the Web? Come to hear all the details on how some of the most popular OData services are built. We will discuss how WCF Data Services is used in typical and not-so-typical contexts, how we layer-in business logic and security, how we deal with custom back-ends that don’t look like databases, and more.
Building Offline Applications using the Sync Framework and SQL Azure, Nina Hu, On Demand
In this session you will learn how to build a client application that operates against locally stored data and uses synchronization to keep up-to-date with a SQL Azure database. See how Sync Framework can be used to build caching and offline capabilities into your client application, making your users productive when disconnected and making your user experience more compelling even when a connection is available. See how to develop offline applications for Windows Phone 7 and Silverlight, plus how the services support any other client platform, such as iPhone and HTML5 applications, using the open web-based sync protocol.
Aqui vai mais uma série de links para artigos relacionados com o desenvolvimento para WP7 e outras questões relacionadas, como o marketplace. Continuo impressionado com a quantidade, variedade, regularidade e qualidade de artigos publicados por alguns bloggers!
Entretanto foi disponibilizada a lista dos primeiros equipamentos Windows Phone 7 a estarem disponíveis cá em Portugal, sejam ‘livres’, sejam de operador, ressalvando que por agora todos os equipamentos vêm em inglês.
Série de videos ‘How do I’
How Do I: Use MVVM in a Windows Phone 7 Application?
How Do I: Use Page Turn Animation in a Windows Phone 7 Application?
How Do I: Use XNA for Game State Management in a Windows Phone 7 application?
How Do I: Use Touch Manipulation in a Windows Phone 7 Application?
How Do I: Migrate an iPhone Application to a Windows Phone 7 Application?
How Do I: Migrate an Android Application to a Windows Phone 7 Application?
How Do I: Implement Tombstoning in Windows Phone 7 Applications?
How Do I: Implement Tilt Effects in a Windows Phone 7 Application?
WP7 Development Tip of the Day pelo Brad Tutterow
IsolatedStorageSettings
Which UriKind to use when navigating using NavigationServer.Navigate
Navigating between pages: NavigateUri vs. NavigationService
Série de artigos sobre a GeoLocation API pelo Dragos Manolescu
WP7 Code: Geofencing with the GeoLocation API and Rx
WP7 Code: Reverse GeoCoding with the Bing Maps Service
WP7 Code: Distance Computations with the GeoLocation API
WP7 Code: Using the GeoLocation API
31 Days of Windows Phone pelo Jeff Blankenburg (continuação)
Day #16: Panorama Control
Day #17: Pivot Control
Day #18: WebBrowser Control
Day #19: Push Notification API
Day #20: Map Control
Architecting WP7 pelo Shawn Wildermuth
Part 1 of 10: Navigation Framework
Part 2 of 10: Pivot and Panorama Issues
Part 3 of 10: Enough Architecture (or Where is my VM)
Part 4 of 10: Client-side Data
Part 5 of 10: Tombstoning
Diversos
iPhone to Windows Phone 7 – Animation and Games (Part 2)
http://jesseliberty.com/2010/10/19/iphone-to-windows-phone-7-xna-animation-and-games-part-2/
Enabling your WP7 application to be installed in Trial Mode
http://devlicio.us/blogs/derik_whittaker/archive/2010/10/18/enabling-your-wp7-application-to-be-installed-in-trial-mode.aspx
Conditional Logic During Start Up of a Windows Phone App
http://rhizohm.net/irhetoric/post/2010/10/18/Conditional-Logic-During-Start-Up-of-a-Windows-Phone-App.aspx
Windows Phone 7 Turnstile Control for Silverlight
http://www.codeproject.com/KB/windows-phone-7/WP7Turnstile.aspx
New Silverilght/Windows Phone 7 Video Tutorial: Learn how to make a Turnstyle Control
http://www.windowspresentationfoundation.com/?p=754
How to: Use Share Picker Extensibility for Windows Phone
http://msdn.microsoft.com/en-us/library/ff967563(VS.92).aspx
Resume the User’s music after MediaPlay
http://gdwp7dev.wordpress.com/2010/10/19/resume-the-users-music-after-mediaplay/
Google Maps for Windows Phone 7 using the Bing Maps Control
http://dotnetbyexample.blogspot.com/2010/10/google-maps-for-windows-phone-7.html
PicFx – Windows Phone Picture Effects Application – Part 2
http://blogs.msdn.com/b/coding4fun/archive/2010/10/19/10077086.aspx
Windows Phone 7–Asynchronous Programming
http://csainty.blogspot.com/2010/10/windows-phone-7asynchronous-programming.html
Ninja Database Pro (motor BD para WP7 entre outros, especificações e comparação)
http://www.kellermansoftware.com/p-43-ninja-database-pro.aspx
http://www.kellermansoftware.com/t-kellerman-ninja-database-procompetition.aspx
New licensing deal for Perst
http://mobileworld.appamundi.com/blogs/andywigley/archive/2010/10/12/new-licensing-deal-for-perst.aspx
Porting an iPhone Application to Windows Phone 7 (PDF)
http://cdn.microsoftplatformready.com/assets/PortingIPhoneToWindowsPhone7.pdf
Silverlight TV 49: Creating Rich Interactive Prototypes with Sketchflow - Part 2
http://channel9.msdn.com/Shows/SilverlightTV/Silverlight-TV-49-Creating-Rich-Interactive-Prototypes-with-Sketchflow-Part-2
Inside Windows Phone #05:Windows Phone Silverlight Toolkit (DatePicker, TimePicker, ContextMenu, ToggleSwitch, WrapPanel e GestureService)
http://channel9.msdn.com/Shows/Inside+Windows+Phone/Inside-Windows-Phone-05Windows-Phone-Silverlight-Toolkit
Using WCF on Windows Phone 7: Walk-through
http://blogs.msdn.com/b/andypennell/archive/2010/09/20/using-wcf-on-windows-phone-7-walk-through.aspx
Using Pivot and Panorama Controls (Lab)
http://channel9.msdn.com/Learn/Courses/WP7TrainingKit/WP7Silverlight/UsingPivotAndPanoramaControls
Microsoft Windows Phone 7 Resources
http://blogs.msdn.com/b/rafalkwiek/archive/2010/10/08/microsoft-windows-phone-7-resources.aspx
Getting controls from inside a DataTemplate
http://zetitle.wordpress.com/2010/10/19/getting-controls-from-inside-a-datatemplate/
New Silverlight/Windows Phone 7 Video Tutorial: Use ManipulationDelta to Create a Multi-Touch Application
http://www.windowspresentationfoundation.com/?p=749
Tip 5–Don’t use formatting in your Marketplace Descriptions
http://rd3d2.wordpress.com/2010/10/14/tip-5dont-use-formatting-in-your-marketplace-descriptions/
Anatomy of a WP7 Application Submission
http://pchenry.com/Home/tabid/36/EntryID/354/Default.aspx
How to: Localize an Application Title for Windows Phone
http://msdn.microsoft.com/en-us/library/ff967550(v=VS.92).aspx
Já com os 40 posts à vista dedicados ao tema do desenvolvimento para Windows Phone 7, aqui vão mais uns quantos links que achei importante partilhar:
Launchers and Choosers (video)
http://www.silverlight.net/learn/videos/windows-phone/launchers-and-choosers/
Silverlight On Mobile : Launchers in Windows Phone 7
http://pendsevikram.blogspot.com/2010/10/silverlight-on-mobile-launchers-in.html
How to install the Windows Phone Developer Tools on Windows Server 2008
http://blogs.msdn.com/b/astebner/archive/2010/05/02/10005980.aspx
Windows Phone 7 – Application Lifecycle – Ocean for the Phone
http://karlshifflett.wordpress.com/2010/10/17/windows-phone-7-application-lifecycle-ocean-for-the-phone/
Windows Phone 7 Line of Business App Dev :: Moving your WCF REST + JSON Service to Windows Azure
http://robtiffany.com/azure/windows-phone-7-line-of-business-app-dev-moving-your-wcf-rest-json-service-to-windows-azure
Netflix Browser for Windows Phone 7 - Part 1 (pivot, panorama, navegação, OData, …)
http://www.codeproject.com/KB/windows-phone-7/NetflixBrowser.aspx
Help! Can't unlock my Windows Phone 7, can't deploy my XAP file, or can't run my app! (troubleshooting…)
http://blogs.msdn.com/b/velloso/archive/2010/10/15/help-can-t-unlock-my-windows-phone-7-can-t-deploy-my-xap-file-or-can-t-run-my-app.aspx
Three Reasons Developers Should Use Expression Blend (será que querem desculpas para continuarem a fazer aplicações feias?)
http://channel9.msdn.com/Blogs/SlickThought/Three-Reasons-Developers-Should-Use-Expression-Blend
Using the Rating Control in Windows Phone 7
http://wp7wonders.wordpress.com/2010/10/15/use-the-rating-control-in-windows-phone-7/
Windows Phone 7 Developer Resources
http://www.jeffblankenburg.com/page/Windows-Phone-7-Resources.aspx
Anti-aliased Lines And Optimizing Code for Windows Phone 7–First Look
http://nokola.com/blog/post/2010/10/14/Anti-aliased-Lines-And-Optimizing-Code-for-Windows-Phone-7e28093First-Look.aspx
Flickr API for Windows Phone 7 – Part 11- Group Membership
http://dotnet.dzone.com/articles/flickr-api-windows-phone-7-–-9
Flickr API for Windows Phone 7 – Part 12 – Group Pools
http://dotnet.dzone.com/articles/flickr-api-windows-phone-7-–-10
Localize a Windows Phone 7 Application
http://wp7wonders.wordpress.com/2010/10/17/localize-a-windows-phone-7-application/
Monetize your Windows Phone 7 Apps (com o MS Ad SDK)
http://advertising.microsoft.com/mobile-apps
Test Driven Development (TDD) and Windows Phone 7
http://simonguest.com/2010/10/18/test-driven-development-tdd-and-windows-phone-7/
Fiddler and the Windows Phone 7 Emulator
http://blogs.msdn.com/b/fiddler/archive/2010/10/15/fiddler-and-the-windows-phone-emulator.aspx?utm_medium=Twitter&utm_source=Shared
PhoneApplicationService.ApplicationIdleDetectionMode Property (importante para o App live cycle)
http://msdn.microsoft.com/en-us/library/microsoft.phone.shell.phoneapplicationservice.applicationidledetectionmode(VS.92).aspx
Azure + Bing Maps: Expose data to the world with WCF Data Services (também deve poder ser consuimido com WP7
)
http://blogs.msdn.com/b/windows-azure-support/archive/2010/10/13/azure-bing-maps-expose-data-to-the-world-with-wcf-data-services.aspx
Using reactive extensions with WebRequest
http://zetitle.wordpress.com/2010/10/14/using-reactive-extensions-with-webrequest/
Important Info for WP7 Application Developers (relacionado com Marketplace)
http://chriskoenig.net/2010/10/14/important-info-for-wp7-application-developers
Getting your App published on Windows Phone Marketplace
https://rd3d2.wordpress.com/2010/10/12/getting-your-app-published-on-windows-phone-marketplace/
When a WP7 app fails the Marketplace submission process, it looks like this...
http://www.wpcentral.com/when-wp7-app-fails-marketplace-submission-process-it-looks-this
Failed first attempt at WP7 application submission (updated with reasons)
http://www.pchenry.com/Home/tabid/36/EntryID/360/Default.aspx
Beware of .cache files on IsolatedStorage
http://blogs.ugidotnet.org/corrado/archive/2010/10/15/beware-of-.cache-files-on-isolatedstorage.aspx
Make Your PC Look Like Windows Phone 7 (não, não tem nada a ver com desenvolvimento!)
http://www.howtogeek.com/howto/13901/make-your-pc-look-like-windows-phone-7/
Tip 4–Don’t use ‘washed out’ colours for your Marketplace background.
https://rd3d2.wordpress.com/2010/10/14/tip-4dont-use-washed-out-colours-for-your-marketplace-background/
Professional Windows Phone 7 Application Development: Building Applications and Games Using Visual Studio, Silverlight, and XNA (& outros na Amazon, restam esperar que cheguem à Amazon.co.uk!)
http://www.amazon.com/Professional-Windows-Phone-Application-Development/dp/0470891661/ref=sr_1_8?ie=UTF8&qid=1287016757&sr=8-8
31 Days of Windows Phone 7 (continuação)
Day #12: Vibration Controller
Day #13: Location Services
Day #14: Tombstoning
Day #15: Isolated Storage
O trabalho não me tem permitido manter o blog actualizado, tendo até deixado passar algumas novidades
- A versão final das ferramentas de desenvolvimento para Windows Phone 7 foi libertada, e para aqueles que não tenham uma edição paga do Visual Studio 2010, vem gratuitamente com uma edição Express e o Expression Blend.
- Foi anunciado o suporte futuro oficial à utilização de Visual Basic.net para desenvolvimento de aplicações Silverlight para Windows Phone 7. Ter em conta que o XNA só suporta C# e que a pre-release (CTP) não é suportada pelo VS2010 Express
- Vai decorrer o evento Microsoft WebDay 2010 no Porto e em Lisboa, a 12 e 14 de Outubro respectivamente, que entre diversos temas ligados ao desenvolvimento para a web & cloud, inclui também uma sessão sobre o Windows Phone 7 enquanto plataforma aplicacional. Na véspera de cada um dos eventos haverá uma pré-conferência dedicada ao desenvolvimento para Windows Phone 7, usando quer Silverlight, quer XNA.
Site do Webday (agenda, registo, locais, …)
- Pela primeira vez o meu nome é referido num prefácio num livro
Claro que essa é a última razão porque comprariam um livro, mas há muitas e boas razões para fazê-lo! O livro é o ‘Silverlight 4.0 – Curso Completo’ pelo Luís Abreu, MVP de ASP.NET, que versa diversos temas ligados ao desenvolvimento para Silverlight, quer no modelo de execução no browser, quer fora do browser, podendo ser lido por aqueles que conhecendo .NET não se iniciaram ainda no desenvolvimento para SL, bem como por aqueles que tendo vir a acompanhar o SL querem saber mais sobre a versão 4.0. Infelizmente este livro não cobre o desenvolvimento para Windows Phone 7, mas ainda assim é uma excelente opção para quem ao desenvolver com SL para Windows Phone 7 pretende aproveitar os conhecimentos adquiridos de SL para desenvolver para web e desktops. Importante para muitos é o facto de este livro estar escrito em Português.
(clicar no livro para ir para o site da FCA)
- Last but not least, fui nomeado de novo MVP pela Microsoft! Continuo com a competência ‘Device Application Development’ pelas minhas contribuições ligadas ao desenvolvimento de aplicações em .NET Compact Framework para Windows Mobile e ao SQL Server Compact

Actualizei o artigo original para reflectir algumas contribuições de membro do Portugal a Programar
As empresas que produzem software de gestão estarão neste momento a par da necessidade de a partir de 1 de Janeiro de 2011 disponibilizarem aos seus clientes novas versões das suas aplicações que implementem os requisitos necessários à chamada ‘certificação de software’. O mecanismo a implementar passa por no momento da gravação de um documento criar um hash a partir das suas características, baseado num certificado asimétrico, que garantirá que nenhum dos elementos importantes do documento é editado depois de emitido.
A moving2u, apesar de não criar software de gestão na perspectiva ‘stand alone’, dado que a nossa solução de mobilidade para PDAs integra sempre com um sistema de gestão de terceiros (actualmente contempla Primavera, PHC, Eticadata, SAP Business One, Gexor, entre outros), também é visada por este processo de certificação. Assim sendo, no sentido de garantir a legalidade da sua utilização por parte dos nossos clientes visados por essa regulamentação, encetámos os passos necessários ao seu cumprimento, no sentido de disponibilizar até ao final do ano uma nova versão que assine cada um dos documentos legais com o referido hash, que imprima a informação requerida pela portaria e que permita gerar o ficheiro SAFT-PT, que até agora era sempre emitido pelo sistema onde os documentos eram integrados.
Para o processo da assinatura em si, passo a descrever os passos necessários para a geração do hash em aplicações .NET:
- descarregar o OpenSSL para Windows para criar as chaves privada e pública e gerar um hash para teste
http://www.shininglightpro.com/products/Win32OpenSSL.html
- descarregar o OpenSSLKey para poder converter a chave privada no formato PEM no formato XML
http://www.jensign.com/opensslkey/ (link no final da página)
- criar a chave privada
openssl genrsa -out MinhaChavePrivada.pem 1024
- criar a chave pública a aprtir da chave privada
openssl rsa -in MinhaChavePrivada.pem -out MinhaChavePublica.pem -outform PEM -pubout
- exportar a chave privada de ‘pem’ para ‘xml’
Correr o opensslkey, indicar o caminho do ficheiro PEM, na consola obtem-se entre outras coisas a chave privada em formato XML, copiar essa parte para um ficheiro .XML
- gerar um hash utilizando o openSSL para testar. Ter em conta que o Windows acrescenta um CR+LF ao echo, pelo que o valor obtido será sempre diferente do que as finanças obteriam para a mesma string
echo 2010-05-18;2010-05-18T11:22:19;FAC 001/14;3.12; | openssl dgst -sha1 -sign MinhaChavePrivada.pem | openssl enc -base64 –A
- gerar um hash utilizando o openSSL para testar. Criar um ficheiro string.txt com o conteúdo da string a encriptar, sem linefeed no final! …
copy con string.txt<ENTER>
2010-05-18;2010-05-18T11:22:19;FAC 001/14;3.12; <CTRL-Z><ENTER>
…e utilizar o seguinte comando
openssl dgst -sha1 -sign MinhaChavePrivada.pem string.txt| openssl enc -base64 –A
- código em VB.net (adicionar referência ao System.Security.Cryptography):
Imports System.Security.Cryptography
Imports System.Text
Module Module1
Sub Main()
' descomentar o vbCrLf caso se pretenda obter um hash comparável com o obtido com o openssl em Windows
Dim stringToHash As String = "2010-05-18;2010-05-18T11:22:19;FAC 001/14;3.12; " ' + vbCrLf
Using privatekey As RSACryptoServiceProvider = New RSACryptoServiceProvider
Dim privateKeyXML As String = System.IO.File.ReadAllText("C:\Trabalho\OpenSSL-Win64\bin\MinhaChavePrivada.xml")
privatekey.FromXmlString(privateKeyXML)
Dim buffer As Byte() = Encoding.GetEncoding("Windows-1252").GetBytes(stringToHash)
Dim signature As Byte() = privatekey.SignData(buffer, "SHA1")
Console.WriteLine(Convert.ToBase64String(signature))
End Using
End Sub
End Module
- A .NET CompactFramework 3.5 não suporta o método FromXmlString pelo que é preciso instanciar um objecto do tipo RSAParameters e preenchê-lo ‘manualmente’ (adicionar referências ao System.Xml e System.Xml.Linq):
Imports System.Security.Cryptography
Imports System.Text
Module Module1
Sub Main()
' descomentar o vbCrLf caso se pretenda obter um hash comparável com o obtido com o openssl em Windows
Dim stringToHash As String = "2010-05-18;2010-05-18T11:22:19;FAC 001/14;3.12; " ' + vbCrLf
Using privatekey As RSACryptoServiceProvider = New RSACryptoServiceProvider
Dim privateKeyXML As String = "..." ' carregar o xml da chave privada para esta string
Dim xe As XElement
xe = XElement.Load(privateKeyXML)
Dim rsaP As RSAParameters = New RSAParameters() With {.Modulus = Convert.FromBase64String(xe.Element("Modulus").Value), _
.Exponent = Convert.FromBase64String(xe.Element("Exponent").Value), _
.P = Convert.FromBase64String(xe.Element("P").Value), _
.Q = Convert.FromBase64String(xe.Element("Q").Value), _
.DP = Convert.FromBase64String(xe.Element("DP").Value), _
.DQ = Convert.FromBase64String(xe.Element("DQ").Value), _
.InverseQ = Convert.FromBase64String(xe.Element("InverseQ").Value), _
.D = Convert.FromBase64String(xe.Element("D").Value)}
privatekey.ImportParameters(rsaP)
Dim buffer As Byte() = Encoding.GetEncoding("Windows-1252").GetBytes(stringToHash)
Dim signature As Byte() = privatekey.SignData(buffer, "SHA1")
Debug.WriteLine(Convert.ToBase64String(signature))
End Using
End Sub
End Module
Actualizado em 2010/09/08 para usar um ficheiro com a string da qual queremos gerar o hash sem o problema do Echo em Windows. Outra alternativa é utilizar um comando Echo portado do equivalente em Unix e que com o switch –n não gera o linefeed.
Todos os processos e o código apresentados servem apenas para exemplificar a forma de obtenção do hash do documento, sem ter em conta regras de boas práticas de desenvolvimento, performance ou segurança, não devendo ser considerado para produção. Obviamente serão declinadas quaisquer reclamações sobre a utilização do mesmo.
Ideias para o seu desenvolvimento foi obtido a partir do fórum ‘Portugal a Programar’ http://www.portugal-a-programar.org/forum/index.php/topic,48555.15.html onde sugiro que sejam discutidas questões relacionadas com este tópico
Este post não tem como objectivo defender ou criticar o processo da certificação de software, pelo que todos os comentários nesse sentido não serão publicados.
More Posts
Next page »