quarta-feira, 23 de dezembro de 2009

Palestras / Treinamentos

Este ano foi particularmente diferenciado na minha vida profissional.

Sempre fui desenvolvedor, nunca tinha ministrado cursos ou palestras, mas neste ano isso mudou. Primeiramente foi um convite do Igor Costa para uma palestra online no FlexMania realizado nos dias 06 e 07 de julho onde palestrei sobre Criando e estendendo componentes para o Flex 3.

Neste último trimestre já ministrei três treinamentos,
Programação ActionScript com Flash CS4 na Alfamídia e Desenvolvimento de Aplicativos com Adobe Flex e Acesso a dados com Adobe Flex na TargetTrust. Todos estes sobre indicação da Gabriela Trindade.

Agora para janeiro irei ministrar um treinamento na Feevale sobre AS3 no Flash para professores e alunos
de um projeto de extensão chamado ENGNATV, também sobre indicação da Gabriela, fico devendo algum churrasco para ela, hehehehe.

É muito bom poder passar o conhecimento adquirido para outras pessoas. Espero que em 2010 outras oportunidades como estas ocorram.

quinta-feira, 17 de dezembro de 2009

Flex For Kids 2010

Dia 06/02/2010 será realizado o evento Flex For Kids 2010 com 10 palestras on-line com grandes nomes da comunidade Adobe Flex brasileira.

Para participar é só R$ 30,00. Todo dinheiro arrecadado será doado ao Cotolengo de Mato Grosso do Sul.

Além de ótimas palestras você ainda irá ajudar uma boa causa.

Este evento está sendo organizado pela e-Genial, aos quais dou meus parabéns.

Participem e divulguem.

sexta-feira, 11 de dezembro de 2009

Livros Zend (PHP) + Flex (Português)

Já fiz curso de PHP, mas não trabalho diretamente com esta ferramenta, o meu forte mesmo em backend é Java.

Mas para quem trabalha e precisa se aprofundar na integração PHP + Flex, um framework que tenho visto as pessoas nos fóruns e listas falarem bem é o Zend Framework. Além da boa aceitação do público, ano passado a Zend e a Adobe montaram uma parceria para melhorar a integração do Zend com o Flex.

Pesquisando encontrei dois livros do Zend que pela sinopse parecem muito bons:
Um livro que fala da integração entre estas duas ferramentas é o livro Desenvolvendo sistemas com Flex e PHP de Daniel Pace Schmitz que possue um capítulo falando desta integração. Já tinha comentado sobre este livro num post anterior.
O Daniel está para lançar o livro Dominando Flex e Zend onde irá falar mais sobre esta integração.

segunda-feira, 23 de novembro de 2009

Style backgroundColor não funciona com styleFunction no AdvancedDataGrid

Uma coisa que me chamou a atenção quando criei o componente DateChooserCustom é que em algumas classes / interfaces backgroundColor aparece como propriedade e não como estilo. As classes / interfaces onde isto acontece são: flash.text.TextField, mx.core.IUITextField, mx.preloaders.DownloadProgressBar e mx.preloaders.IPreloaderDisplay. Inclusive as duas primeiras possuem além disso uma propriedade background (Boolean) que indica se haverá preenchimendo do background.

Precisei nestes dias utilizar styleFunction no AdvancedDataGrid retornando um backgroundColor. Para quem não sabe
styleFunction é uma função que deve retornar um object com estilos como propriedade para ser utilizada na renderização das células. Para minha surpresa este estilo não estava sendo aplicado enquanto que outros sim. Investigando aqui e ali descobri uma entrada no Adobe Bug System relatando a mesma situação (necessita login para visualizar), onde postei um workaround.
Dica: Quem quiser votem, porque quanto mais votos maior a possibilidade do Flex Team darem uma olhada.

O que acontece é o seguinte, o
itemRenderer default é um AdvancedDataGridItemRenderer que extende UITextField que implementa IUITextField que como comentado acima tem backgroundColor como propriedade.
Os estilos são aplicados na função protected
applyUserStylesForItemRenderer, esta verifica se existe um styleFunction para o grid e para coluna e os aplica, nesta ordem, o que significa que o da coluna terá prevalência se o grid e a coluna aplicarem o mesmo style.

Devido o código desta função o workaround não ficou dos mais elegantes, mas o que fiz foi sobreescrever esta função e verificar se o style é
backgroundColor, se for coloco true na propriedade background e na propriedade backgroundColor aplico a cor recebida sendo que esta verificação deve ser aplicada no teste do styleFunction do grid e da coluna.

Uma alternativa mais elegante seria criar um item renderer customizado que herde de
AdvancedDataGridItemRenderer e criar neste um style substituto ao backgroundColor.

sexta-feira, 20 de novembro de 2009

Flex SDK 3.5

Ao entrar hoje no Adobe Bug System do Flex vi que tem correções para o Flex SDK 3.5 (exige login), mas olhando no site de download do Flex ainda está oferecendo o 3.4.
Acredito que logo estará disponível o SDK 3.5 para download.

Foram 23 correções
(exige login para ver mais detalhes):
  1. #1010 runtime error when repopulating datagrid dataprovider while a field is editable
  2. DataGird which contains TextInput as ItemRenderer sets focus incorrectly.
  3. DataGrid default sorting causes "Find criteria must contain at least one sort field value" RTE when some of the elements are empty
  4. DataGrid scrolls more than 1 page even if you click scroll-bar-area (=the area in the scrollbar's thumb movable)
  5. DragManager performance problem with SDK 3.2.0 and later.
  6. DragManager.showFeedback doesn't work in AIR
  7. DragManager.showFeedback doesn't work in AIR (Mac only)
  8. Embedded Fonts in DataGridHeader are cut off on right border
  9. Encoded plus sign (%2B) is decoded incorrectly in HTTPService with flashvars format
  10. Error #1063 when using a DataGrid as the dropdown in a ComboBox in Flex 3.4.0.9271
  11. Focus to DataGrid causes RTE when lockedColumnCount is equal to or larger than visible column count
  12. FocusManager RTE in defaultButton scenario. was: Navigating around LiveCycle Workspace results in an ActionScript null pointer error
  13. HTTPService responders are called twice
  14. Halo ComboBox not updating dataprovider correctly after ComboBox has been opened
  15. Horizontal text overflow in Tree when vertical scrollbar hidden, shown.
  16. Inifinite Loop on FocusManager when Tabbing
  17. No data while using "Object" as "resultFormat" for Sharepoint WebService
  18. StringIndexOutOfBoundsException when using a properties-File
  19. Using Window's statusBarFactory while having window children causes status bar to render incorrectly
  20. Using a TextInput as an itemRenderer in TileList or HorizontalList causes a RTE
  21. [new] You get a RTE when setting selectedItem to an invalid item [old] Using a Tree as an itemRenderer causes a RTE
  22. maxHorizontalScrollPosition exceeds max value of horizontalScrollPosition
  23. swf app in browser doesn't load due to exception in new line added to Preloader:rslCompleteHandler

terça-feira, 17 de novembro de 2009

Flash Player 10.1 e AIR 2

Para quem está aguardando foi liberado o Flash Player 10.1 prerelease e o AIR 2 beta.

Estas novas versões trazem muitas novidades que podem ser vistas nos sites informados acima.

quarta-feira, 28 de outubro de 2009

Protegendo o SWF

Um assunto que surge frequentemente nas listas de discussão e que também me é questionado diretamente é como proteger o swf de pirataria.

Na verdade nunca me preocupei muito com isso, porque descompiladores há aos montes e ferramentas para proteger também, independente da linguagem de programação. As ferramentas de proteção até onde vi são "ofuscadores", isto é, elas trocam os nomes de propriedades e funções dificultando assim a interpretação, mas nada que não pode ser facilitado com um replace all.

Entendo que esta preocupação é porque o swf é baixado para a máquina do cliente, mas esta é só a camada de visão as regras de negócio, que é o mais importante, devem ficar no servidor e neste caso, precisamos nos preocupar com esta ponta, e aí pergunto, como proteger o código de linguagens interpretadas como o PHP?

Me preocupo com a segurança dos dados, com sql injection, uso de https, criptografia de senhas, etc.

Analisar um código de outra pessoa não é nada fácil, cada um programa de uma forma, além que o "pirata" precisa conhecer as linguagens que foram usadas para criar a aplicação.
Neste caso pergunto, será que vale o tempo gasto para entender um código descompilado?
Imagine um ERP, não adianta só entender o código descompilado, será necessário entender o fluxo deste tipo de aplicação e também as leis aplicadas, como as de ICMS, etc.

Em resumo, acredito que a possibilidade de ter o trabalho "pirateado" é tão pequena que não compensa tanta preocupação.