24 junho, 2010

Windows Live Essentials (Wave 4) Beta disponível para download

O Windows Live Essentials Beta (também conhecido como Wave 4) já está disponível para download em http://explore.live.com/windows-live-essentials-beta. Esse download foi anunciado ontem no blog do Windows Live Team.

Para quem não sabe, o Windows Live Essentials é o pacote que agrupa as seguintes aplicações: Messenger, Photo Gallery, Movie Maker, Mail, Live Writer, Family Safety, Sync (substituto do atual Mesh). Mais informações podem ser obtidas em http://windowslivepreview.com/essentials/sync/.

Eu já fiz meu download mas ainda não instalei. Assim que instalar eu posto aqui as minhas impressões.

Update (24/Junho/2010 20:00h): No link acima agora está disponível para download também a versão em Português (Brasil). Na hora que publiquei este post essa versão não estava disponível.

Analytics Framework atualizado para Silverlight 4

Já é notícia um pouco velha (do dia 15/Junho) mas eu achei que valia a pena postar aqui por conta da sua importância e pelo fato de pouca gente conhecer. Michael Scherotter (@synergist) postou uma atualização do Analytics Framwork para Silverlight 4. Para quem não conhece, o Analytics Framework é uma coleção de apis, Behaviors e Actions para integração de aplicações Silverlight e WPF com ferramentas de analytics e trends (como Google Analytics por exemplo).

O framework suporta nativamente uma série de serviços (Google Analytics, Nedstat, Omniture, Webtrekk, etc para citar alguns) e pode ser facilmente extendido. Se você deseja monitorar a utilização da sua aplicação Silverlight deve considerar o uso desse framework.

Alguns dos pontos mais interessantes desse framework estão listados abaixo:

  • Suporta aplicações OOB
  • Funciona mesmo se a aplicação estiver rodando offline (as métricas são salvas e serão enviadas para o servidor quando estiver online)
  • Suporta o uso de mais de um serviço de analytics ao mesmo tempo
  • Não afeta a performance da aplicação
  • Pode ser totalmente configurado no Blend pois é implementado como uma série de Behaviors
  • Suporta testes A/B
  • Suporta protótipos SketchFlow
  • Está integrado no Microsoft Silverlight Media Framework

Para mais informações acesse:

23 junho, 2010

Behavior de Fullscreen para Silverlight

Publiquei mais uma behavior no Expression Gallery hoje. Dessa vez foi uma behavior bem simples que serve para mudar o estado de full screen da aplicação. Essa behavior é do tipo Action, ou seja, você pode escolher qual trigger vai dispará-la. A trigger padrão que o Blend coloca é a EventTrigger, mas qualquer outra trigger pode ser utilizada.

image

A behavior também tem um segunda propriedade que serve para definir que a aplicação deve continuar em full screen caso perda o foco. Esse comportamento é uma das novidades do Silverlight 4 e pode ser usado, por exemplo, para deixar um vídeo rodando em fullscreen em um monitor enquanto trabalhamos no outro.

O código usado para realizar essas tarefas é muito simples, como pode ser visto abaixo:

//Código para mudar o fullscreen Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;

//Código para manter a janela em fullscreen em outro monitor Application.Current.Host.Content.FullScreenOptions = System.Windows.Interop.FullScreenOptions.StaysFullScreenWhenUnfocused;

Seguem abaixo os links:

O projeto do Codeplex onde está essa behavior vai continuar recebendo adições como essa. Tenho várias outras behaviors que estou planejando migrar pra lá assim como bibliotecas de controles e helpers que também terão versões para WPF e ASP.NET quando fizer sentido.

21 junho, 2010

Reset da senha de “sa” no SQL Express

UPDATE 25/08/2010 : Novo post com os passos mais detalhados

Hoje tive um problema com o SQL Express 2008 que está instalado no meu computador. Esse computador que estou usando foi configurado recentemente pelo suporte da empresa mas o SQL Express foi configurado sem colocar o grupo de administradores local como administrador do banco de dados. Sei que isso é considerado boa prática de segurança quando instalamos servidores de banco de dados mas é uma regra de segurança que não se aplica (ou não deveria ser aplicada) quando se fala de computadores de desenvolvimento e com SQL Express, que por padrão só aceita conexões locais.

O que aconteceu foi que meu SQL Express só tinha 1 administrador, o “sa” (como eu disse antes, o grupo de administradores do Windows não foi configurado como admin desse sql), e a pessoa que fez a instalação da máquina não está mais na empresa e não documentou a senha utilizada na instalação do SQL Express. Como resolver isso?

Fiz várias buscas tentando descobrir como reiniciar a senha de sa mas quase tudo que achei levava em consideração que a senha estava em branco (por incrível que pareça isso ainda é muito comum). Foi então que achei o um post de Deepak explicando como resolver esse problema sem ter que reinstalar o SQL. O post foi escrito para SQL Server 2005 full (não express) mas a dica funciona também nas versões express e 2008. Vou colocar abaixo os passos que segui (os comandos dos passos 1, 2, 4 e 5 foram executados no prompt de comando do DOS rodando com privilégio de administrador):

UPDATE 25/08/2010 : Novo post com os passos mais detalhados

  1. Parar o serviço do SQL Express: NET STOP MSSQL$SQLEXPRESS
  2. Reiniciar o serviço do SQL Express em modo Single User : NET START MSSQL$SQLEXPRESS /m
  3. Conectar no SQL usando o SQL Server Management Studio e fazer as alterações desejadas (trocar a senha do usuário sa e adicionar o grupo de adminitradores local como sysadmin do sql)
  4. Parar novamente o serviço do SQL Express usando o mesmo comando do passo 1.
  5. Reiniciar novamente o serviço em modo normal, usando o comando do passo 2 mas sem a opção /m.

Como e por que isso funciona?

Quando o SQL Server é executado em modo Single User, todos os administradores locais passam a fazer parte também do grupo de administradores do SQL Server, mesmo que ele não esteja configurado dessa forma. Sendo assim agora podemos fazer as correções/alterações necessárias sem que seja necessário reinstalar o SQL Server. Esse recurso é uma especie de modo de segurança que existe justamente para corrigir esse tipo de problema.

No meu caso, como se tratava da instância padrão de um SQL Express, o nome do serviço era MSSQL$SQLEXPRESS. Se fosse a instância padrão de um SQL Full o nome do serviço seria MSSQLSERVER.

11 junho, 2010

Behavior para filtrar galerias Deep Zoom por tags

Acabei de publicar no Expression Gallery uma behavior para filtrar imagens em uma colleção do Deep Zoom.

image

Essa behavior, quando aplicada a um objeto do tipo MultiScaleImage, permite que se filtre as imagens dessa coleção de forma semelhante ao que acontece no site Memorabilia do HardRock Café.

O uso da behavior é muito simples:

  • Anexe a behavior à um objeto MultiScaleImage.
  • Defina as propriedades Source e MetadataUri da behavior respectivamente para a url da galeria e o arquivo de metadados da galeria.
  • Defina o valor da propriedade Filter da behavior para o filtro que quer aplicar.

A behavior trabalha com o arquivo de metadados gerado pelo Deep Zoom Composer para saber quais tags estão associadas a cada imagem. Ela entende tags separadas por vírgula (,) tanto para atribuir às imagens quanto para filtrar. Filtrar por múltiplas tags vai exibir todas as imagens que tenham pelo menos uma das tags do filtro.

O arquivo de metadados não precisa ser necessáriamente o mesmo gerado pelo Composer, mas deve ter o mesmo formato. A behavior o campo ZOrder do arquivo de metadados para saber qual é cada imagem, portanto, se esse arquivo for gerado manualmente deve se tomar o cuidado de garantir que estão sendo atribuídas as tags às imagens certas e sempre que a galeria for atualizada o arquivo de metadados também precisará ser atualizado.

A behavior também expõe uma propriedade (AvailableTags) que é um array contendo todas as tags disponíveis na galeria atual. Isso pode ser bem útil se quisermos exibir na tela todas as tags, como fiz no exemplo que está no Expression Gallery.

Cada vez que o filtro for alterado, a galeria será filtrada e ocorrerá uma animação para exibir as imagens desejadas. É possível controlar o tempo dessa animação e sua função de Easing.

As imagens são posicionadas de forma a preecher o espaço do controle da melhor forma possível, mas ainda preciso melhorar a lógica para quando apenas uma imagem é exibida.

Também há espaço para melhorias no algorítmo de posicionamento, no que diz respeito ao alinhamento das imagens do lado direito.

O código fonte está disponível no Codeplex. Sugestões, melhorias e bug fixes podem ser reportados lá ou aqui no blog.

Em breve estarei aumentando essa biblioteca do Codeplex com outras behaviors e helpers.

Ahhh, quem gosta de futebol pode ver essa behavior em ação em http://www.msnnacopa.com.br.