boníssima referência: dicas de SEO para Silverlight. essa é pra colocar nos favoritos: Bing – Illuminating the path to SEO for Silverlight – Webmaster Center Blog – Bing Community…(read more)
XAMLCast – 2a Temporada – Episódio 9 – Finger Style, SLARToolkit, Windows Phone 7 e pré-MIX10
Olá olá pessoal!

Este é o XAMLCast pré-MIX10.
Estamos ansiosos para a chegada deste grande evento que irá nos trazer grandes novidades e anúncios. E para nossa alegria, e como já havíamos falado antes, o XAMLCaster Kelps estará em Las Vegas cobrindo o evento e enviando tudo em primeira mão!
Neste episódio falamos de:
- Finger Style – Artigo fantástico do Charles Petzold sobre Multitouch em Silverlight
- MultiTouchVista – simulador de multitouch com múltiplos mouses para Windows
- Artigo do Roberto Sonnino (em inglês) sobre touch com WPF e MultiTouchVista
- SLARToolkit – A experiência de AR (Realidade Aumentada) com Silverlight virou um framework
- Aplicação do correio americano para tamanhos de caixas com AR
-
Não confunda:
- Blender – programa de modelagem 3D
- Balder – engine 2D/3D que funciona com Silverlight
- Blend – ferramenta para design de aplicações WPF/Silverlight
- Concurso de Silverlight/WPF da Magenic Studios – prêmios até 500 US$ + 3000 US$ pro Haiti
- Copa de Talentos Microsoft
- Anuncio oficial do Silverlight no Windows Phone 7
- Video no TechEd Middle East mostrando XNA no Windows Phone, Xbox e Windows
- MIX10
- HVP no MIX
- Video do ScottGu no Channel 9 falando sobre o MIX
Bolão do MIX10!
Envie sua previsão do que irá acontecer no MIX10. Para participar, basta referenciar a hashtag #bolaoxamlcast no seu post do twitter.
Ajudem o XAMLCast a entrevistar o ScottGu no MIX10
Envie um tweet (em inglês) para @ScottGu pedindo uma entrevista com o @XAMLCast (Brazilian Podcast) ou @kelps.Com muitos pedindo, o acesso torna-se mais fácil.
Se quiserem, podem pedir para outras “personalidades” do .net/WPF/SL, como Scott Hanselman, Phil Haack, John Papa, S. Somasegar, Tim Heuer, Karen Corby, Glenn Block… o Kelps vai ter trabalho em Vegas!
Atenção!
O XAMLCast da semana que vem será especial sobre o MIX10! Assim, em vez de um grande episódio, soltaremos as notícias aos poucos, o mais rápido possível, conforme o Kelps for mandando. Por isso, não deixe de assinar e seguir o XAMLCast para não perder nada!
Para assinar:
- Feed RSS: http://www.xamlcast.net
- iTunes/iPod: pcast://www.xamlcast.net
- Zune: zune://subscribe/?XAMLCast=http://www.xamlcast.net
O XAMLCast também está no Twitter!
- Twitter oficial: @xamlcast (e hashtag #xamlcast)
- Siga os XAMLCasters:
- Adicione o Twibbon do XAMLCast ao seu avatar!
Até o próximo!
Abraços,
Kelps, Roberto Sonnino e Rodrigo Kono
Make Less More
Dos melhores parágrafos que li até hoje sobre usabilidade e directamente do site 52 semanas de UX:
“What if instead of adding new features, a company concentrated on making the service or product much easier to use? Or making it much easier to access the advanced features it already has, but that few can master? Maybe what they lose in market share in one area will be more than compensated for in another area. In a lot of markets, it’s gotten so bad out there that simply being usable is enough to make a product truly remarkable.”—Kathy Sierra”
Aqui se fala da realidade de hoje em dia e sobre a qual falei na minha apresentação sobre Web Design e User Interface / Usabilidade no riaPT Porto.
Hoje em dia, com a tendência de chegar à frente num mercado em que prolifera a boom repentino de empresas e na tentativa de ganhar um pouco de tempo de antena, as empresas tentam fazer de tudo para serem notadas acrescentando funcionalidades atrás de funcionalidades e dizendo à boca cheia que o seu software faz isto e aquilo.
No entanto, encaixa-se aqui a velha máxima, “Quem tudo quer, tudo perde” porque as coisas vão acumulando e depois não há forma de travar ou controlar o comboio que entretanto já vai rápido demais.
Passem pelo projecto 52 semanas de UX. Uma ideia interessantíssima que aconselho todos a seguirem!
Alterando a aparência de um CheckBox com WPF e C#
Primeiro crie uma aplicação em WPF e adicione um UserControl com o nome de UserControlCheckBox.xaml, modifique a altura e o tamanho para 100: Height=”100″ Width=”100″ e altere o fundo do layout GRID para “Black”. Dentro do layout GRID adicione uma Ellipse com o tamanho e altura de 20.
Agora vamos criar um Style herdando as propriedades de um objeto CheckBox, selecione a Ellipse com o botão direito do mouse e clique em Make into Control… conforme a figura abaixo:
Repita o processo para o evento Unchecked, neste momento temos o trigger conforme a listagem abaixo:
Duas Storyboards foram criadas, para trocar a imagem quando o CheckBox é acionado adicione o evento Completed na Storyboard OnChecked1 e adicione o código C# abaixo:
ImageBrush brush = (ImageBrush)this.Resources["imgb"];
Image image1 = new Image();
brush.ImageSource =
new BitmapImage(new Uri(“luz_apagada.png”, UriKind.Relative));
Repita o processo no evento Completed da Storyboard OnUnchecked1 mudando somente a imagem:
brush.ImageSource = new BitmapImage(new Uri(“luz_ligada.png”, UriKind.Relative));
Para finalizar o tutorial vamos animar as propriedades Opacity e Radius para simular uma luz no CheckBox inserindo um novo efeito ao controle, na Storyboard OnChecked1 adicione o código:
E adicione o código abaixo na Storyboard OnUnchecked1:
Adicione uma Ellipse entre o GRID Layout e o CheckBox e utilize o efeito BlurEffect que vai dar o efeito de luz no CheckBox:
Agora é só adicionar o UserControl em seu projeto e testar.
Código fonte do tutorial : Clique aqui
Expression Blend 3 / Visual Studio 2008
Proteção simples de conteudo com Flash Media Server
Fui chamado para resolver um problema em relação a proteção do conteudo de um cliente, o problema consistia em que alguem mal-intencionado estava roubando seus streams ao vivo.
A pessoa simplesmente pegou o codigo html do site e colou no site dela, conseguindo assim transmitir o conteudo em seu blog. O player em questão não foi desenvolvido por mim, portanto nem me dei ao trabalho de olhar o fonte, resolvi ir diretamente para o Flash Media Server.
Baseado na documentação da Adobe, resolvi de uma maneira bem simples, o código do main.asc é o seguinte:
var VALID_REFERRER = "http://www.mydomain.com.br/mySwf.swf";
var VALID_PAGEURL = "http://www.mydomain.com.br/myPage.html";
application.onAppStart = function ()
{
trace("init app…");
trace("onAppStart> " + application.name + " is starting at " + new Date());
};
application.onStatus = function (info)
{
trace("onStatus> info.level: " + info.level + ", info.code: " + info.code);
trace("onStatus> info.description: " + info.description);
trace("onStatus> info.details: " + info.details);
};
application.onConnect = function (client)
{
if ((client.referrer == VALID_REFERRER && client.pageUrl == VALID_PAGEURL))
{
trace("acesso permitido");
application.acceptConnection(client);
}
else
{
trace("acesso indevido");
application.rejectConnection(client)
}
trace("onConnect> client.ip: " + client.ip);
trace("onConnect> client.pageUrl: " + client.pageUrl);
trace("onConnect> client.agent: " + client.agent);
trace("onConnect> client.referrer: " + client.referrer);
trace("onConnect> client.protocol: " + client.protocol);
};
application.onDisconnect = function (client)
{
trace("onDisconnect> client.name: " + client.name)
trace("onDisconnect> disconnecting at: " + new Date());
};
application.onAppStop = function (info)
{
trace("onAppStop> application.name: " + application.name);
trace("onAppStop> stopping at " + new Date());
trace("onAppStop> info.level: " + info.level);
trace("onAppStop> info.code: " + info.code);
trace("onAppStop> info.description: " + info.description);
};
A API do Flash Media Server é muito poderosa e contém muitos recursos interessantes, um deles é a possibilidade de saber de onde exatamente está vindo a conexão do swf. Neste trecho já resolvia o problema com as constantes declaradas no inicio do arquivo.
{
trace("acesso permitido");
application.acceptConnection(client);
}
else
{
trace("acesso indevido");
application.rejectConnection(client)
}
Resumindo, so será feita a conexão com o Flash Media Server se a tentativa de conectar vier de um SWF e HTML definidos por mim.
Uma solução bem simples mas que resolveu o problema ![]()
Como ultimo recurso, o ladrão ainda copiou o swf do cliente e colocou em seu blog
ByMK… na MTV Brasil!
wow, a byMK é um fenômeno: dias depois de contarem pra gente que estão na Revista Elle (veja esse post: brilhante- Espaço ELLE e SEDA – Moda da cabeça aos pés em… Silverlight! ), os meninos me contam ontem que estão na… MTV! MTV televisão mesmo,…(read more)
isso é mais do que Silverlight virando mainstream, é mainstreaming
piadas à parte, isso é bárbaro com B maíúsculo: a interface ficou ótima, a qualidade dos vídeos está super boa e o conteúdo também é beeeem bom. …(read more)
Modules
About modules
Modules are SWF files that can be loaded and unloaded by an application. They cannot be run independently of an application, but any number of applications can share the modules. The main application, can dynamically load other modules that it requires, when it needs them.
Benefits of modules
- Smaller initial download size of the SWF file.
- Shorter load time due to smaller SWF file size.
- Better encapsulation of related aspects of an application.
ModuleManager and ModuleLoader
Module domains
By default, a module is loaded into a child domain of the current application domain. You can specify a different application domain by using the applicationDomain property of the ModuleLoader class. Because a module is loaded into a child domain, it owns class definitions that are not in the main application’s domain. For example, the first module to load the PopUpManager class becomes the owner of the PopUpManager class for the entire application because it registers the manager with the SingletonManager. If another module later tries to use the PopUpManager, Adobe ® Flash® Player throws an exception. The solution is to ensure that managers such as PopUpManager and DragManager and any other shared services are defined by the main application (This technique also applies to components). Typically, this is done by adding the following to a script block:
import mx.managers.PopUpManager;
import mx.managers.DragManager;
private var popUpManager:PopUpManager;
private var dragManager:DragManager;
Because a Flex module must be in the same
security domain as the application (SWF) that loads it, when you’re using modules in an AIR application any module SWF must be located in the same directory as the main application SWF or one of its subdirectories, which ensures that like the main application SWF, the module SWF is in the AIR application security sandbox.Creating ActionScript-based modules
Reducing module size
To reduce the size of the modules, you can optimize the module by instructing it to externalize classes that are included by the application. The result is that the module includes only the classes it requires, while the framework code and other dependencies are included in the application.
To externalize framework classes with the command-line compiler, you generate a linker report from the application that loads the modules. You then use this report as input to the module’s load-externs compiler option. The compiler externalizes all classes from the module for which the application contains definitions. This process is also necessary if your modules are in a separate project from your main application in Flex Builder.
1. Generate the linker report and compile the application:
mxmlc -link-report=report.xml MyApplication.mxml
2. Compile the module and pass the linker report to the load-externs option:
mxmlc -load-externs=report.xml MyModule.mxml
Using the ModuleManager class to load modules
import mx.events.ModuleEvent;
import mx.modules.ModuleManager;
import mx.modules.IModuleInfo;
public var info:IModuleInfo;
private function initApp():void {
info = ModuleManager.getModule(“ColumnChartModule.swf”);
info.addEventListener(ModuleEvent.READY, modEventHandler);
// Load the module into memory. Calling load() makes the
// IFlexModuleFactory available. You can then get an
// instance of the class using the factory’s create() method.
info.load();
}
private function modEventHandler(e:ModuleEvent):void {
// Add an instance of the module’s class to the display list.
vb1.addChild(info.factory.create() as ColumnChartModule);
}
Evitando problemas com Views e DTOs
No seu aplicativo você tem um DTO cujo os dados são renderizados por diferentes Views (telas). Então, toda hora que o seu DTO muda, você percebe sua aplicação travada por uns segundos. Depois de um tempo você percebe que o problema é que mesmo as telas que estão invisíveis estão executando código de apresentação de dados com base no novo DTO. Bem, este é um problema comum quando trabalhamos com DTOs complexos e abusamos do Data Binding.
A notícia ruim é que se você não teve este problema ainda, um dia você terá. A notícia boa é que uma das maneiras de evitar este problema é utilizar o DTOViewHelper, componente disponibilizado neste screencast.
Alguns Frameworks atuais do Flex oferecem maneiras de resolver este problema, mas o DTOViewHelper é independente do Framework que você usa. Além disso, como pode ser visto no Screencast, você pode definir métodos auxiliares dentro do DTOViewHelper com o objetivo compartilhar lógica de apresentação de dados de DTOs entre diferentes Views (veja o exemplo da Data que mostra a string “Hoje” no Screencast).
Clique aqui para fazer o download do código fonte do exemplo “errado” (I could be WRONG).
Clique aqui para fazer o download do código fonte do exemplo “certo” (I could be RIGHT).
Este tipo de leitura ajuda a mostrar alguns aspectos da personalidade humana como o efeito manada e também mostram que crises ou bolhas financeiras sempre existiram e sempre existirão.
Abaixo uma relação de livros nessa linha:
- Bm&f A História do Mercado Futuro no Brasil
- A história do homem que levou o Banco Barings à falência
- Memórias de um Operador da Bolsa este não li mas parece ser interessante. Fala do operador Jesse Livermore, nesse link da Nelogica tem algumas citações dele de como operar no mercado.
- Pânico – A História da Insanidade Financeira Moderna
- Salve-se Quem Puder: Uma História da Especulação Financeira este é muito bom. Fala com detalhes sobre a mania da tulipa (até Isaac Newton entrou nessa), do crash de 29 entre outras “bolhas” financeiras.











