|
Um blog sobre mobilidade, desenvolvimento para plataformas Windows Mobile e os obrigatórios Off-topic!
-
...são os meus votos para todos aqueles que acompanham este blog!!!
|
-
A Microsoft anunciou em Novembro o novo Internet Explorer Mobile 6, que como o seu nome indica, é uma versão do Internet Explorer para Windows Mobile baseada no motor do IE 6.0. Esta nova versão do Internet Explorer deverá surgir em alguns novos equipamentos durante 2009, ou em equipamentos para os quais os respectivos fabricantes decidam disponibilizar novas roms, não sendo possível a sua instalação pelo utilizador final nos seus equipamentos. Esse é mesmo o único inconveniente deste novo Internet Explorer 6 Mobile, e experimentá-lo torna ainda mais difícil encarar essa impossibilidade! Entre as novas funcionalidades destacam-se: - Suporte para WML
- Experiência melhorada de visualização e navegação, em equipamentos com e sem ecrã táctil
- Inclusão opcional do Adobe Flash Lite 3.1 (opção a cargo do fabricante)
- Optimizações de formatação de páginas para ecrãs de equipamentos móveis
- Suporte melhorado a diversos standards
- Suporte para AJAX e scripting
A partir do seguinte link podem descarregar emuladores Windows Mobile Professional e Standard em diferentes resoluções com o Internet Explorer Mobile 6, a partir dos quais podem testá-lo: Windows Mobile 6.1.4 Emulator Images http://www.microsoft.com/downloads/details.aspx?FamilyId=1A7A6B52-F89E-4354-84CE-5D19C204498A&displaylang=en Pessoalmente sugiro que para simularem uma ligação do emulador à internet, a partir do Device Emulator escolham a opção 'Craddle' do emulador em execução, para que o ActiveSync/WMDC reconheçam o emulador e partilhe a ligação à internet do host com o emulador (se tiverem dificuldade em conseguirem a ligação, deixem comentário) Ao experimentarem o novo browser poderão constatar que tem 2 modos de visualização, 'Mobile Device' para conteúdos optimizados para equipamentos móveis, e 'Desktop' para dispensar essas optimizações, obtendo-se uma visualização com grande fidelidade daquilo que o Internet Explorer para Windows disponibiliza. Neste modo podem fazer diversas experiências, como aceder à versão desktop do site de home banking do V/ banco (testei com sucesso o site da CGD, com introdução de credenciais de login no teclado flutuante), ver videos do YouTube e consultar outros sites cuja visualização até agora era penosa em Windows Mobile. Tendo experimentado o Opera que vinha com os Samsung i780 e HTC x7500, tenho a dizer que este novo IEm6 providencia uma experiência de navegação muito mais agradável e mais capaz que o Opera. Para saber mais sobre o novo IEm6, seja sobre as novas funcionalidades, seja sobre como tirar partido do mesmo na óptica do desenvolvimento de websites optimizados para equipamentos móveis, podem consultar o seguinte documento: Internet Explorer 6 Mobile http://download.microsoft.com/download/8/c/c/8cc611e7-ec6b-49ee-af4a-415559d53262/Internet%20Explorer%20Mobile%206.pdf Nesse documento descobrem por ex. que o seguinte HTML permite que um determinado link quando clicado despolete uma chamada telefónica para o nº indicado: <a href=“tel:123-5309”>Jenny</a> E ainda que tal como indicado neste post do Mark Arteaga, de onde copiei as imagens, para identificarem o novo IEm6 a partir das V/ aplicações web, basta atentarem ao conteúdo das user agent strings enviadas pelo browser: Modo 'Mobile Device': Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIE Mobile 6.0) Modo 'Desktop': Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Digitando about:version na barra de endreço obterão o conteúdo de uma ou outra das imagens apresentadas consoante o modo de visualização: 
|
-
Foi atribuída à moving2u a tarefa de 'simples' conversão de uma solução em .NET CF 1.0 para .NET CF 3.5, entre outras alterações, como suporte a diferentes resoluções e orientações de ecrã, passar a utilizar bases de daods SQL Compact localmente no PDA e suporte a impressão em impressoras portáteis A4 da HP. Ao correr a nova aplicação nos novos equipamentos da HTC os utilizadores com frequência 'perdiam-se', pois ao invocar o 'task manager' da HTC, surgiam várias 'instâncias' activas da aplicação. Tal comportamento, completamente oposto ao que deve ser uma aplicação .NET CF bem comportada, derivava da forma como os forms eram geridos por quem desenvolveu a versão inicial. Numa aplicação em que a navegação entre forms fosse 'explícita', ou seja, em que cada form antes de fechar-se abre sempre explicitamente outro form, assegurando-se que a cada momento há apenas um form activo, este problema não se colocaria, mas neste caso a 'retro-navegação' era implícita dado que os forms eram sempre exibidos com o método .ShowDialog() e fechado com o .Close(), a 'pilha' de forms activos era exibida no task manager. Para contrariar esse comportamento, impõem-se algumas regras, a mais simples das quais indica que para uma instância de um form activo não constar na lista de programas em execução, deve colocar-se o respectivo título (propriedade .Text do form) a vazio. Para não ter de a cada chamada guardar o texto do título do form chamador, limpá-lo, exibir o novo form e ao fechá-lo repor o título no form chamador, criei o seguinte extenseion method: public static class FormExtensionMethods
{
public static System.Windows.Forms.DialogResult ExibeDialogo(this System.Windows.Forms.Form newForm, System.Windows.Forms.Form currentForm)
{
string s = currentForm.Text;
currentForm.Text = "";
System.Windows.Forms.DialogResult r = newForm.ShowDialog();
currentForm.Text = s;
currentForm.Show();
currentForm.BringToFront();
return r;
}
}
Deste modo, bastou-me mudar as chamadas do tipo myForm.ShowDialog() por myForm.ExibeDialogo(this) para atingir o fim desejado :)
|
-
A avaliação da apresentação gráfica nas aplicações é algo sempre subjectivo, mas é uma evidência que numa altura em que a nível das aplicações para desktop os programadores têm neste momento excelentes ferramentas e tecnologias para darem largas à criatividade dos designers, do lado do Windows Mobile as coisas ainda não são bem assim, continando em termos de código managed basicamente restritos ao que a .NET CF expõe. No entanto, o João Paulo Figueira acabou de me chamar a atenção para este artigo que demonstra como ir com a .NET CF 3.5 bastante mais além em termos de apresentação gráficado que aquilo que habitualmente fazemos: Building Graphically Advanced Applications with the .NET Compact Framework 3.5 http://expression.microsoft.com/en-us/dd279543.aspx É claro que vai continuar a sobrar sempre espaço para a subjectividade, mas é inegável o nível do apuro gráfico conseguido com os exemplos do artigo: .png) .png) .png)
|
-
O Ricardo Queirós acabou de ver publicado pela FCA o seu livro "Programação para Dispositivos Móveis em Windows Mobile 6 - Curso Completo", que como o título deixa adivinhar, se destina aqueles que pretendem iniciar ou consolidar os seus conhecimentos de desenvolvimento para a plataforma Windows Mobile. Apesar do título referir explicitamente o Windows Mobile 6, a generalidade dos conteúdos também se aplica a versões anteriores, embora conte com um capítulo exclusivamente dedicado às funcionalidades expostas pelo SDK do Windows Mobile 6. Dos tópicos abordados no livro que já será possível encontrar nas livrarias destacam-se: - Introdução ao Windows Mobile
- Plataforma Microsoft .Net
- A Minha Primeira Aplicação Mobile
- Programação Orientada aos Objectos
- Visual Studio e o Desenho de Interfaces
- Teste, Debugging e Gestão de Erros
- Empacotamento, Distribuição e Instalação
- Persistência de Dados
- Tópicos Avançados
- Usando o SDK Windows Mobile 6
|
-
Nestas coisas das teorias sobre a melhor forma de separar as diferentes camadas de uma aplicação, há dois modelos que se destacam, o MVP e o MVC Com a Mobile Client Software Factory, infelizmente descontinuada, uma das factory disponibilizadas dizia respeito ao modelo CAB, Composite Application Block, que seguia as linhas orientadoras do modelo MVP, mas cuja implementação não conquistou muitos seguidores, dada a elevada dificuldade de implementação e penalização na performance das aplicações que a implementavam. Do modelo MVC não havia até agora que eu tivesse conhecimento nada dedicado ao assunto que se aplicasse à .NET Compact Framework, até que o Alex Yakhnin se lembrou de criar uma MVC Framework para .NET CF, e publicou uma série de 4 artigos introdutórios à mesma partindo de uma aplicação com funcionalidades de login, pesquisa e apresentação dos detalhes do item seleccionado... Mobile MVC framework (part 1) - O ecrã de login Mobile MVC framework (part 2) - O ecrã de pesquisa Mobile MVC framework (part 3) - idem, mas comunicando com eventos Mobile MVC framework (part 4) - A apresentação dos detalhes, passando informação entre controladores ...que culminaram com a disponibilização no CodePlex: Mobile MVC Framework
|
-
...dentro de 2 minutos! Desculpem o aviso tardio, a sessão deve durar cerca de uma hora durante a qual se tiverem alguma questão que não se sintam confortáveis a colocar em inglês, poderão colocá-la em Português e eu tentarei encaminhá-la. Adicionalmente poderão usar os comentários a este post para colocar questões que não tenham visto respondidas na sessão. O link para o chat é... www.microsoft.com/communities/chats/chatrooms/msdn.aspx ...e terão como anfitriões funcionários da Microsoft e MVPs. [Actualização] Devido a um pormenor na parametrização do chat, o mesmo está a requerer erradamente uma password. Até que o problema seja ultrapassado, o chat não terá lugar e é possível que venha a ser adiado.
|
-
Há alguns anos comprei um GPS Bluetooth, o Royaltek RBT3000, que tinha uma característica ímpar, a possibilidade de gravar autonomamente os percursos efectuados de acordo com uma parametrização em termos de tempo ou distância percorrida. Esta caracterísitca permite que nalguns tipos de actividades, como TT ou BTT, não nos preocuparmos em termos de andar com um PDA a gravar o track, pois com um GPS deste tipo podemos recuperá-lo a partir do próprio GPS mais tarde. Adicionalmente para os aficcionados da fotografia, um GPS deste tipo com um software como o GPicSync permitem a posteriori georeferenciar as fotos tiradas, cruzando a hora que foram tiradas com a última posição conhecida naquele momento no GPS. Nestes anos foram aparecendo novos GPS deste tipo, alguns já com SIRF III, mas um destacava-se por permitir ajustar os respectivos parâmetros de funcionamento a partir do próprio equipamento, passou a estar debaixo de olho, mas eis senão quando surge algo de realmente diferente: um logger bluetooth com uma tecla para marcar waypoints e possibilidade de associação de uma tag de voz ao waypoint!!! Confesso que gostaria de saber como é que isto funcionará antes de comprar um, mas se bem me conheço, acho que vou perder a cabeça...  Custa perto de 100usd no BuyGpsNow.
|
-
Faz hoje 5 anos, nascia em Coimbra a moving2u, empresa da qual sou sócio desde a sua criação. Tal como o seu nome deixa adivinhar, a empresa nasceu com o objectivo de desenvolver e comercializar soluções de mobilidade para profissionais, objectivo ao qual se manteve inteiramente fiel ao longo destes 5 anos, e pelo qual é cada vez mais reconhecida. Nestes 5 anos conquistámos importantes clientes em diversas àreas de negócio, estabelecemos parcerias com várias empresas responsáveis pela implementação, distribuição e desenvolvimento de software de gestão/ERPs, e vimos reconhecido o nosso trabalho por algumas empresas de referência, como a Motorola/Symbol ou a Microsoft, da qual somos 'Certified Partner - Mobility Solutions', e muito importante, criámos laços de amizade com muitas pessoas.
Desde o primeiro momento que decidimos apostar na plataforma Windows Mobile/CE, quando os equipamentos com este sistema operativo ainda não se tinham afirmado no mercado profissional em Portugal, estratégia que se revelou compensadora pois hoje a plataforma Windows Mobile conjugada com as ferramentas de desenvolvimento e outras tecnologias da Microsoft é de longe a escolha mais 'produtiva' e que melhores aplicações permite desenvolver para terminais móveis.
Se é do desenvolvimento das minhas funções - responsável de R&D - que 'nascem' muitas das experiências que partilho neste blog, nos fórums ou nas sessões que apresento, também é por causa das mesmas funções que a minha disponibilidade para manter o blog actualizado ou propor-me a outras iniciativas tem vindo a ser muito reduzida, esperando-se que o volume de trabalho se mantenha ao longo dos próximos tempos.
Saúde e longa vida à moving2u, seus colaboradores e amigos!!!
|
-
Estou envolvido num projecto assente em .NET CF 3.5, onde utilizamos WCF sobre HTTP para recuperar informação de um servidor. Se é verdade que a .NET CF 3.5 traz suporte a este novo modelo de comunicações, esse suporte é limitado, como podemos ver neste post do Andrew Arnott. Sendo suportado, quem já utilizou o WCF sobre HTTP para .NET CF, já se terá apercebido que esse suporte não é totalmente 'nativo', pois ao contrário do que acontece na full framework, para além das classes proxy, é sempre criado um ficheiro chamado CFClientBase.cs ou .vb, onde se baseia muito do suporte a WCF sobre HTTP pela .NET CF. A limitação desse suporte chega ao ponto das FaultExcpetions, neste caso, CFFaultException, não serem expostas detalhadas. Se por exemplo tivermos uma chamada a um serviço dentro de um bloco Try/Catch, e este despoletar uma CFFaultException: Try
...
Catch ex as CFFaultException
MsgBox(ex.Message)
End Try
O que obtemos na message box, é uma mensagem <not> muito </not> explícita: "CFFaultException".
Ao inspeccionar o objecto ex, chegamos a uma propriedade FaultString, do tipo string, onde encontramos um documento XML bem formado, e lá no meio, encontramos a causa da excepção. Esta inspecção visual até serve em ambiente de desenvolvimento, mas é importante poder recuperar essa informação programaticamente, pelo que se impõe um parser para este XML. Uma pesquisa com o Google a CFFaultException parser não produz resultados, colocando apenas CFFaultException, lá aparece uma página em italiano de um MVP, Andrea Boschin. Os meus conhecimentos da língua da Monica Bellucci são muito limitados - da língua da Monica em si, nulos mesmo - mas lá consegui chegar à conclusão que o tópico era o que me interessava - neste caso, a CFFaultException, não a Monica - ou seja, um parser para a CFFaultException em C#. Como este projecto está a ser desenvolvido em VB.net, recorri ao meu tradutor preferido de C# para VB.net, e completei o serviço corrigindo um ou outro erro: Imports System.Text
Imports System.Xml.Serialization
Imports System.IO
Imports System.ServiceModel
<XmlRoot("Fault", Namespace:="http://schemas.xmlsoap.org/soap/envelope/")> _
Public Class ServiceFault
Private _faultCode, _faultString As String
Private _detail As List(Of ServiceFaultDetail)
Public Shared Empty As ServiceFault = New ServiceFault
Public Sub New()
MyBase.New()
Me.Detail = New List(Of ServiceFaultDetail)
End Sub
<XmlElement("faultcode", Namespace:="")> _
Public Property FaultCode() As String
Get
Return _faultCode
End Get
Set(ByVal value As String)
_faultCode = value
End Set
End Property
<XmlElement("faultstring", Namespace:="")> _
Public Property FaultString() As String
Get
Return _faultString
End Get
Set(ByVal value As String)
_faultString = value
End Set
End Property
<XmlArray("detail", Namespace:=""), _
XmlArrayItem(GetType(ServiceFaultDetail), Namespace:="http://schemas.datacontract.org/2004/07/System.ServiceModel")> _
Public Property Detail() As List(Of ServiceFaultDetail)
Get
Return _detail
End Get
Set(ByVal value As List(Of ServiceFaultDetail))
_detail = value
End Set
End Property
End Class
<XmlType(TypeName:="ExceptionDetail")> _
Public Class ServiceFaultDetail
Private _message, _stackTrace, _type As String
Public Sub New()
MyBase.New()
End Sub
<XmlElement("Message", Namespace:="http://schemas.datacontract.org/2004/07/System.ServiceModel")> _
Public Property Message() As String
Get
Return _message
End Get
Set(ByVal value As String)
_message = value
End Set
End Property
<XmlElement("StackTrace", Namespace:="http://schemas.datacontract.org/2004/07/System.ServiceModel")> _
Public Property StackTrace() As String
Get
Return _stackTrace
End Get
Set(ByVal value As String)
_stackTrace = value
End Set
End Property
<XmlElement("Type", Namespace:="http://schemas.datacontract.org/2004/07/System.ServiceModel")> _
Public Property Type() As String
Get
Return _type
End Get
Set(ByVal value As String)
_type = value
End Set
End Property
End Class
Public Class FaultSerializer
''' <summary>
''' Deserializes the specified fault.
''' </summary>
''' <param name="fault">The fault.</param>
''' <returns></returns>
Public Shared Function Deserialize(ByVal fault As CFFaultException) As ServiceFault
If (fault Is Nothing) Then
Throw New ArgumentNullException("fault", "fault cannot be null")
End If
If String.IsNullOrEmpty(fault.FaultMessage) Then
Return ServiceFault.Empty
End If
Dim xml As String = fault.FaultMessage
Dim reader As StringReader = New StringReader(xml)
Dim serializer As XmlSerializer = New XmlSerializer(GetType(ServiceFault), "http://schemas.xmlsoap.org/soap/envelope/")
Return CType(serializer.Deserialize(reader), ServiceFault)
End Function
''' <summary>
''' Serializes the specified fault.
''' </summary>
''' <param name="fault">The fault.</param>
''' <returns></returns>
Public Shared Function Serialize(ByVal fault As ServiceFault) As String
Dim builder As StringBuilder = New StringBuilder
Dim writer As StringWriter = New StringWriter(builder)
Dim ns As XmlSerializerNamespaces = New XmlSerializerNamespaces
ns.Add("s", "http://schemas.xmlsoap.org/soap/envelope/")
ns.Add("i", "http://www.w3.org/2001/XMLSchema-instance")
ns.Add("a", "http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher")
Dim serializer As XmlSerializer = New XmlSerializer(fault.GetType, "http://schemas.xmlsoap.org/soap/envelope/")
serializer.Serialize(writer, fault, ns)
Return builder.ToString
End Function
End Class
Assim, podemos mudar o nosso exemplo para mostrar, por ex., a propriedade .Message associada à excepção: Try
...
Catch ex as CFFaultException
MsgBox(FaultSerializer.Deserialize(ex).Detail(0).Message)
End Try
Os agradecimentos vão para o Andrea Boshcin!
[Actualização]
O seguinte extension method permite obter de imediato a mensagem associada à excepção: <Extension()> _
Public Function ExceptionMessage(ByVal exception As CFFaultException) As String
Return FaultSerializer.Deserialize(exception).FaultString
End Function
...
Try
...
Catch ex as CFFaultException
MsgBox(ex.ExceptionMessage)
End Try
|
-
Estava a persistir numa base de dados em SQL Compact 3.5 num equipamento Windows Mobile 2003SE cerca de 250 registos (40 colunas) numa tabela e 5700 registos noutra tabela (4 colunas), obtidos de um webservice. A operação estava a tomar cerca de 70 segundos para a 1ª tabela e 60 segundos para a 2ª, o que me pareceu tempo a mais, ainda que estivesse a utilizar comandos preparados, com os tipos de dados e respectivos comprimentos definidos para cada parâmetro. Fui fazendo umas alterações, removendo índices, 'foreign keys', mas as poucas melhorias não me convenciam, até que me lembrei de utilizar o SqlCeResultSet, sobre um comando do tipo TableDirect, e passei a inserir a mesma informação em... 10 SEGUNDOS, repartidos por um segundo e meio para os 250 registos e 8 segundos e meio para os 5700!!! Fica a dica!!!
|
-
Uma das novidades do SQL Compact 3.5 sobre as versões anteriores, é a possibilidade de encadear SELECTs, mas de uma forma mais limitada que o SQL Server 2000/2005/2008. Hoje precisei de recuperar de uma tabela qual o registo imediatamente anterior/a seguir ao actual para navegar entre eles, sendo que os ID dos registos não era sequencial. Algo como: | ID | Nome | | 1 | Joaquim | | 4 | Manuel | | 9 | António | | 12 | Maria | | 13 | Josefina | | 15 | Etelvina | | 18 | Paulo | | 23 | Rui | | 40 | Teresa | (tabela Nomes) Imaginando que estamos no registo 12, para obter o anterior no SQL Server poderia fazer algo como: SELECT id, nome FROM nomes WHERE id = (SELECT MAX(id) FROM nomes WHERE id < 12) Ao testar a instrução no SQL Compact, verifica-se que esta sintaxe não é suportada, então lembrei-me de experimentar de outra forma: SELECT id. nome FROM nomes INNER JOIN (SELECT MAX(id) qID FROM nomes WHERE id < 12) t ON nomes.id = t.qid E assim já funcionou :) [ACTUALIZAÇÃO] Dado que para o meu caso real a pesquisa estava a tomar perto de meio segundo, a que se juntava 0,3 segundos para recuperar o resto da informação e carregar a informação para o ecrã, parti a instrução em 2, o que permitiu ganhar perto de 0,2s. Convém testarem sempre caso-a-caso o que é mais eficiente, uma instrução única como acima, ou partirem-na em 2 para na 1ª recuperar o ID do nome anterior com um ExecuteScalar e depois na 2ª obter os dados do registo.
|
-
A Red Gate publica uma newsletter chamada Simple Talk, que no geral, tal como as ferramentas da Red Gate, versam temas ligados à administração e utilização de bases de dados em SQL Server e ao profiling the aplicações .NET Na última newsletter recebida esta semana, um tópico chamou a minha atenção... A título de minha introdução e comentário à minha provocação no título deste post, numa altura em que o armazenamento 'físico', a memória RAM, a capacidade de processamento e o desempenho das redes deixaram de ser consideradas limitações, na fase de preparação e de desenvolvimento propriamente dito de soluções tendemos a esquecer-nos da optimização de processos. Há pouco tempo um amigo ligado a uma importante empresa portuguesa ligada ao desenvolvimento de software de gestão comentava que uma funcionalidade recentemente acrescentada ao software demorava demasiado tempo a ser executada nos seus clientes. Quando questionado o programador que a implementou, o comentário foi que nos testes que tinha feito, 'aquilo' era rápido, mas depressa se chegou à conclusão que o volume de informação testado era muito inferior ao volume que alguns clientes tinham nas suas bases de dados. O processo, muito intensivo em termos de operações de bases de dados provavelmente não teria sido optimizado, lembremo-nos que há pessoas que ainda não usam a preparação de comandos SQL com parâmetros quando têm de repetir a mesma acção um nº variável de vezes com valores diferentes. Na nossa empresa, seja por razões de performance na preparação de comandos, segurança para evitar SQL injection e confiança no tratamento de valores numéricos e datas, usamos sempre comandos com parâmetros, não embebemos os valores na string do .CommandText (a excepção é quando precisamos de utilizar o operador IN (...) ). O tal tópico não tem a ver com a performance na óptica mencionada no ponto anterior, mas na óptica da execução de cada instrução SQL, mais precisamente explica detalhadamente o que é o Exectution Plan do SQL Server, como obtê-lo, formas de apresentação do mesmo e como o interpretar, para a partir dessa informação testar diferentes variantes de um comando e diferentes opções em termos da estrutura da base de dados em si, como índices, de modo a medir e determinar o melhor compromisso para a sua execução. Fica o link directo para o artigo, que é o primeiro capítulo do mais recente livro do autor, dedicado às questões do Execution Plan: Execution Plan Basics Simple-talk: Grant Fritchey http://www.simple-talk.com/sql/performance/execution-plan-basics/ Uma ressalva, apesar de eu geralmente apenas falar sobre questões ligadas ao desenvolvimento para a .NET Compact Framework e o SQL Server Compact, o artigo mencionado refere-se ao SQL Server para servidores, cujo 'query processor' difere daquele que encontramos no SQL Server Compact, pelo que o artigo sendo útil não é aplicável na sua totalidade a esta versão
|
-
A equipa do PocketPT.net vem pela 4ª vez organizar um seminário destinado aos utilizadores e interessados em geral na plataforma Windows Mobile da Microsoft, subjacente ao tema Como escolher o equipamento certo para mim O evento vai ter lugar no sábado dia 21 de Junho - manhã e tarde - no auditório da Microsoft em Lisboa. Apesar de gratuito, a participação no evento carece de inscrição no site http://www.mtechseminar.com/2008/
|
-
Assim tem sido a minha corrida no último mês e meio... uma semana para a preparação do TechDays, uma semana no TechDays, a semana seguinte de formação para formadores em desenvolvimento para Windows Mobile em Inglaterra, 3 semanas para resolver assuntos pendentes, e na próxima, na companhia de vários outros MVP Portugueses, uma semana na 'Quinta do Bill' em Seattle/Redmond no encontro global de MVPs. Daí não ter conseguido ainda colocar as apresentações online - embora pense que já estejam no site do evento - nem o código usado nas demonstrações que era suposto ter feito em ambas as apresentações, mas que foi de todo impossível mostrar devido a uma combinação dos seguintes factores Windows Vista/placa gráfica nVidia/projector/switch, que não permitiu que as sessões decorressem como preparado. As minhas desculpas a todos os que me têm contactado ou esperado que coloque o código online. Após o regresso dos EUA tenho mais umas coisas na empresa a carecer de atenção urgente, mas voltarei à normalidade a partir de Maio, ou assim espero... Até breve!
|
-
... e infelizmente não correu nada bem... Não sei se por causa do portátil, do projector ou de uma combinação de ambos, a maior parte do tempo da sessão o portátil e o projector estavam a 'discutir' um com o outro, o que provocava que nem no portátil, nem no projector fosse possível ver o Powerpoint ou as demos. Tenho a agradecer e voltar a apresentar as minhas deculpas aos participantes, que aguentaram em grande número até ao fim. De facto, como a sessão pretendia e conseguiu em parte demonstrar, a plataforma Windows Mobile permite de forma muito acessível criar aplicações diferenciadoras utilizando a Compact Framework, podendo aceder de forma standardizada a características de hardware do equipamento independetemente do fabricante do mesmo. Também se conseguiu ver - entre piscadelas de ecrãs - que o emulador de Windows Mobile permite simular um grande número de características de equipamentos físicos, como rede GSM/3G, envio e recepção de SMS, chamadas e GPS. Como prometido, colocarei brevemente online a apresentação e a aplicação de demonstração. Se tiverem alguma questão que queiram colocar, podem utilizar os comentários deste artigo. 6ª feira à tarde, lá estarei a apresentar a minha outra sessão, que versa as novidades do VS2008 e da .NET CF 3.5.
|
-
O Pedro Ivo Faria desenvolveu uma aplicação para Windows Mobile (uma versão para equipamentos com ecrã táctil e outra para não-táctil), que permite ter literalmente na palma da sua mão as últimas informações do evento, ver e modificar a sua agenda, dar feed back, etc.
Aqui podem ver algumas capturas de ecrã da versão móvel:

Para a utilizarem, podem descarregar o ficheiro apropriado directamente para o V/ equipamento a partir de um dos seguintes links, ou descarregar para o PC, copiar para o equipamento e executar a partir de lá:
Versão para equipamentos com ecrã táctil (PocketPC, Windows Mobile Classic & Professional)
http://www.techdays.pt/downloads/TechDays2008.PPC.CAB
Versão para equipamentos sem ecrã táctil (Smartphone, Windows Mobile Standard)
http://www.techdays.pt/downloads/TechDays2008.SPH.CAB
Instalada a aplicação, executem-na e escolham a opção configuração no menu:
E depois digitem o ID que vos foi atribuído no separador dados da secção My TechDays (têm de ter feito previamente o sign in):
Depois é só actualizar e... aí está, o Techdays na vossa mão!!!
|
-
-
Foi-me oferecido um livro à escolha por constar no top dos bloggers sobre o TechDays, tendo escolhido o seguinte livro: A primeira pessoa a adivinhar a marca e modelo do seguinte equipamento, e que conte ir à minha sessão no dia 14 às 15:15, fica com o livro! Algumas caracterísitcas do equipamento: - Ecrã de 5.9", 480 x 240 (wide, orientação vertical e horizontal)
- Porta série
- Pack bateria recarregável + opção 2x 1.5V AA
- Slot Compact Flash
- Slot PcCard, compatível com placas de rede e placas wireless
- Versões mobile do Word, Outlook, Excel, Internet Explorer
- Disponível apenas com Windows CE
|
-
Já há alguns dias que sabia que ainda haviam inscrições disponíveis para o Techdays, e que o limite para as mesmas havia sido alargado até ao dia 7 de Março, ou seja, HOJE! Optei por deixar precisamente para o último dia esta mensagem - depois de já ter sido difundida noutros blogs - por saber que muitos portugueses gostam de deixar precisamente para o último dia as suas decisões! Por isso, hoje que é MESMO o último dia, não deixem passar a oportunidade de se manterem a par com as tecnologias que vão fazer a diferença nos próximos tempos. Cliquem na imagem para mais informação sobre o evento, ou aqui para irem directos para a página de registo.
|
More Posts Next page »
|
|
|