Dicas/ Dicas e truques/ Git

.gitignore e como gerar o seu

gitignore_site

Esse é um post rápido, se você tem um projeto e que faz versionamento com o Git, sempre terá que ignorar alguns arquivos como: preferências de (sdk, projeto), saída do projeto, arquivos de documentação. Em fim tem de tudo um pouco para você gerenciar.

O que mais complica é quando você tem N IDEs,com um time que tem diferentes skills e que usam diferentes IDE para trabalhar, nesse ponto você tem que alterar com certa frequência o .gitignore para levar em consideração e não entrar arquivos indesejáveis.

A melhor maneira de fazer isso é com auxílio. Achei um site bem bacana para isso.

www.gitignore.io

O site gitignore.io é excelente, consigo facilmente adicionar os arquivos para serem ignorados. Diminuindo a chance de erros.

Dev. Software/ Dicas/ Dicas e truques/ Labs/ Notícias/ Open-source/ Pessoal

Scratch ensinando crianças à programar

scratch

scratch_shot

O MIT sempre acerta no quesito de metodologias de ensino para o futuro e eu apoio a idéia de ensinar crianças a programar de uma maneira divertida e intuitiva, é o caso do projeto Scratch(“Rascunho”), que ajuda crianças a entender melhor e raciocinar melhor a questão do pensamento lógico e abstrato de seus desenhos.

Imagine você ensinar crianças na faixa etária de 5 até 10 anos à programar dessa maneira, ensina-los como criar um pensamento exponencial usando seus próprios desenhos, isso fomenta o conhecimento por áreas exatas e prepara o futuro da humanidade para a exploração espacial, dúvida?

Para encurtar a curva de aprendizagem no Scratch eu gravei um vídeo bem rápido mostrando como funciona e como pode ser criado animações, jogos simples e até sistemas. Gostou? Compartilhe nas redes sociais, divulgue na sua escola e ensine as crianças.

[media url=”http://www.youtube.com/watch?v=nAod_01YZHw” width=”600″ height=”400″ jwplayer=”controlbar=bottom”]

Ensinar o futuro da nação à programar não é tão difícil assim, já que a intenção justamente não é transforma-los em desenvolvedores de software, mas fazer com que eles transformem a maneira de pensar de um modo linear como é feito hoje para um modo lógico e escalonável e isso meus caros só através de programação.

Programar pode ser útil para o raciocínio de seus filhos, alunos. Ajudem eles a aprender de uma forma totalmente diferente da sua.

Acesse: http://scratch.mit.edu

Dev. Software/ Dicas/ Dicas e truques/ Oportunidades de emprego/ Pessoal

Qual o verdadeiro valor de um desenvolvedor de Software?

real_brasileiro

Eu já escrevi por aqui vários assuntos relacionados a desenvolvedor, alguns foram bem comentados outros nem tanto. Dessa vez eu me deparei com uma situação da vida real onde você pode se perguntar qual o verdadeiro valor de um desenvolvedor de software?

É uma ciência não exata, já que como em toda profissão, o profissional de TI é um tanto quanto luxo e outros tanto quanto prantos. Meio sem sentido não é? Porém se você pensar em jingles de campanhas eleitorais, você vai ver que quase todas as músicas não fazem sentido, são paródias mal escritas e de cunho fulo.

Bem assim é o desenvolvedor de luxo, a estrela da bola, o Fênomeno dos gramados ” oops! bits”, é assim que ele se ver, vende-se mal para caramba e cobra um preço de ouro sendo ouro de tolo.

Existe valor no que foi escrito a 1 ano atrás? Existe valor no que será escrito nas propostas de trabalho e abertura de vagas daqui à 60 dias?

Tudo na vida humana é baseado em datas co-relacionadas a um evento em princípio, o principio do “Eu me acho”, é um fator avacalhador na hora de contratar um valioso desenvolvedor, seja ele do interior, da capital, da favela ou do condomínio de luxo.

Talvez, até um dia que o fator decisivo do “Eu me acho”, tenha data de validade.

Aposto que você leu até aqui e não entendeu patavina alguma. É isso que eu quero causar, perca seu tempo! Ele é a peça mais valiosa de seu dia-a-dia.

Perca seu tempo investindo em seu conhecimento, seja um perdedor nesse período. Não tente ser um desenvolvedor colecionador de certificações, MBA disso e daquilo, tente ser o maior investidor de sua carreira, começando ser auto-avaliado pelo pior crítico do mundo, seu lado macabro e sarcástico.

Todo santo dia, eu acordo, dou aquela velha esticada na cama para colocar os ossos no lugar, levanto, tomo uma ducha bem gelada para terminar de mandar o sono ir embora, depois vou tomar aquele bom e velho café quente, Ligo o tablet e vou dar uma lida nas notícias Espaciais, por que de economia, política, guerra, eu removi de meu app flipboard, já que tudo é a mesma coisa, nunca sai do ciclo.

Pois bem, depois disso, eu começo meu exercício mental e matinal, começo a ler sobre linguagens de programação, técnicas e vez ou outra eu arrisco em outros livros fora do contexto em que vivo, como por exemplo, Novels.

Depois disso, reunião daqui, reunião de lá, algumas micro conferências via skype e quando fui ver passou o dia. A noite começo a prática do que eu aprendi de manhã, por que só de teoria a coisa complica sua vida.

Lá perto das 23:00 acabo o dia, fecho a budega e vou me divertir com a patroa. É basicamente essa a rotina minha hoje, totalmente diferente de 12 anos atrás. Onde eu acordava cedo, pegava o buzão lotado, trabalhava feito jumento e depois tinha que voltar para casa. Não sei se essa dureza me ensinou a valorizar meu tempo mais que nunca.

Passados hoje 12 anos, considero-me mais um empreendedor do que um desenvolvedor, porém nunca deixei o espírito de lado em codificar produtos e idéias, sou sempre surpreendido por amigos, alunos com alguns ciclos que eu já passei, por exemplo, meia noite pedindo ajuda de código.
Você teve o dia inteiro para fazer, provavelmente você está ali por que cometeu um erro estúpido durante o dia ou o prazo recebido; Gastou seu tempo com bobagens.

E olha que eu já falei sobre gastar melhor seu tempo nesse post aqui.
Mudando um pouco da nossa conversa de pau para pião, eu sempre vejo algumas tirinhas de Médico vs. profissionais de TI, na moral da história nenhuma área é relativamente relacionada a outra em questão de conhecimento. O que toda profissão tem em comum são referências, qualidades e defeitos. Não me cola essa de querer ganhar mais só por que sabe fazer uma coisa que não vai ser útil dentro de seu atual ambiente de trabalho.

Tem uma tirinha bem interessante do Vida de programador, que eu me refiro a esse tipo de profissional, veja ai abaixo.

O que adianta você manjar de tudo isso, se você não se dá o valor? Existe um grande habismo em quebrar o galho e criar serviços. Se você for parte de uma ONG e quer ser voluntário, você dedica apenas um tempo determinado para aquele problema específico e para pessoas que não tem condições de te pagar. É o velho ditado, é dando que se recebe.

Mais saiba separar a vida pessoal, familiar da profissional, se não você vai acabar viciando seus parentes e deixando o que é importante em sua vida em segundo plano.

E esse ciclo se estende para sua atual empresa, seja você empresário ou profissional.

Se você é empresário o objeto de maior valor dentro de sua empresa é seu funcionário, faça ele gastar o tempo em coisas inteligentes que sirva para melhorar a qualidade atual do que você oferece aos seus clientes, até quem sabe gerar novos negócios não explorados dentro de sua atual gestão.

Se você é desenvolvedor e quer aumento, procure melhorar o salário apresentando novas idéias relacionadas a novos negócios não explorados na sua empresa, se seu patrão ver a idéia, adota-la e não lhe der aumento, mude de empresa imediatamente, o tempo gasto naquela idéia pode ser aplicado a outra empresa, deixe isso bem claro na hora de apresentar sua idéia e em seguida pedir aumento.

Todos querem vencer, conquistar dominar, é da nossa natureza em especial se formos homens, querer sempre o melhor, progredir, sermos os provedores para nossas famílias, é comum de nossa raça ter esse pensamento de superioridade.

Começe a pensar diferente, uma nação tem um exército para combater o mal e seus interesses, não é por que a nação tem o exército que ela vai toda hora fazer guerra. Ela sempre busca a paz e não a volatidade.

Na teoria de equilíbrio de John Nash, se você empresário ver todo o potencial de uma idéia assim como seu empregado, todos tende a ganhar, não adianta ser esperto nesse nosso mercado, ele é pequeno e logo logo sua estratégia frajuta de querer pagar menos ou de ganhar mais, ficará logo conhecida.

Assim, se aplica a teoria de equilíbrio para os colegas de profissão, o que adianta você cobrar menos que seu atual colega se você só degradará mais ainda seus futuros projetos e sacrificará mais ainda seu tempo? Tem lógica isso?

Por isso que usei a foto da nota de R$1 real, quando era de papel ela tinha mais valor na nossa carteira, depois que virou moeda, ela perdeu todo valor e o posto para nota de R$2 reais, sendo assim o espetinho de gato subiu por causa dessa mudança.

Pense bem sobre suas atitudes e valores, tem uma frase  que define bem isso de Fernando Pessoa.

O valor das coisas não está no tempo que elas duram, mas na intensidade com que acontecem. Por isso existem momentos inesquecíveis, coisas inexplicáveis e pessoas incomparáveis.
Fernando Pessoa

Eu termino o post perguntando, Qual é seu verdadeiro valor como desenvolvedor de software?

Dicas/ Dicas e truques/ Google/ HTML 5/ HTML5 / CSS3/ Web 2.0

Coloque seu site ou aplicativo web no modo turbo

rocket launch

Se você é fanático por performance e tem acesso shell/root ao seu servidor, vai aqui uma dica muito importante para optimizar todas as páginas que você serve para seus leitores/usuários.

Se seus serviços forem sob o teto do servidor Apache HTTP, então você precisa conhecer urgente o mod_pagespeed que acelera o processo de carregamento do aplicativo/sites a níveis de grandes sites como Google.com e facebook.com

Só para você ter uma idéia, meu site com todas as técnicas que abordei em meu arquivo .htaccess ele beirava os 6.5s para carregar por completo para você leitor. Depois que eu ativei o mod_pagespeed o tempo passou para 1.65s e o melhor de tudo isso, banda e processos foram economizados.

O que o mod_pagespeed faz na verdade?

Ele basicamente optimiza tudo que você deixou para depois e acabou esquecendo de fazer ou simplesmente não deu tempo devido a pressão sofrida no trabalho para liberar uma release.

Então através de filtros pré-definidos via String na sua configuração o mod_pagespeed cria diretivas de rápido acesso permitindo que você faça performance à baixo nível no servidor.

O mod_pagespeed é um santo remédio, porém você deve usa-lo com cautela, já que boa parte de seus filtros ainda são experimentos e nunca se sabe o que poderá causar de ruim para sua aplicação.

 

Pagespeed e derivados

Existem outros módulos no apache que é importante frizar bem para que você não continue achando que o pagespeed é o único salvador da pátria, outros módulos foram usados em meu problema, porém o pagespeed de fato teve um ganho muito mais considerado deixando ele agir sobre os arquivos estáticos.

Módulos que também usei e que são necessários para o pagespeed rodar.

Mod – rewrite

Mod – headers

Mod – deflate

 

Esses módulos podem ser instalados perfeitamente em seu servidor Apache usando os seguintes comandos.

 

Instalando o módulo rewrite.

a2enmod Nome_do_Modulo

 

O comando a2enmod, basicamente diz, Apache2 habilite modulo X, se você quiser ver todos os módulos habilitados em seu servidor Apache, basta ir em cd /etc/apache2/mods-enabled/

e dar um ls

 

Como instalar em um servidor Ubuntu/CentOS/Debian/Fedora

Baixe o módulo pagespeed diretamente aqui, links estão do lado direito.

Uma vez que você escolheu o pacote correto para sua distribuição linux, use o comando wget para baixar o pacote.

root@li437-29:~# wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_amd64.deb

 

Como eu tenho um sistema operacional Ubuntu 64 bits usei o pacote acima.

Uma vez que o download completou, basta executar os seguintes comandos se você estiver no Ubuntu.

dpkg -i mod-pagespeed-*.deb
apt-get -f install

Se estiver no CentOS ou Fedora, execute

yum install at  (if you do not already have 'at' installed)
rpm -U mod-pagespeed-*.rpm

 

Depois disso, só habilitar o pagespeed no Apache, usando o comando a2enmod

a2enmod pagespeed

Pronto, seu módulo pagespeed está habilitado e pronto para executar, agora basta configurar os filtros que vem nele para melhorar o desempenho.

Por padrão o módulo é desabilitado justamente por que você precisa configura-lo antes de sair usando, afinal o Google não quer que seu site saia fora do ar antes mesmo de você coloca-lo em modo turbo.

Para isso, abra o arquivo de configuração do pagespeed que fica na pasta /etc/apache2/mods-enabled e use um editor que você esteja confortável em usar, eu uso o Vim, tem gente que gosta de outros e por ai vai. Para abrir é simples, vi pagespeed.conf

O arquivo vem basicamente assim.

# Turn on mod_pagespeed. To completely disable mod_pagespeed, you
# can set this to "off".
ModPagespeed on
 
# Direct Apache to send all HTML output to the mod_pagespeed
# output handler.
AddOutputFilterByType MOD_PAGESPEED_OUTPUT_FILTER text/html
 
# If you want mod_pagespeed process XHTML as well, please uncomment this
# line.
# AddOutputFilterByType MOD_PAGESPEED_OUTPUT_FILTER application/xhtml+xml
 
# The ModPagespeedFileCachePath and
# ModPagespeedGeneratedFilePrefix directories must exist and be
# writable by the apache user (as specified by the User
# directive).
ModPagespeedFileCachePath "/var/mod_pagespeed/cache/"
ModPagespeedGeneratedFilePrefix "/var/mod_pagespeed/files/"
 
# Override the mod_pagespeed 'rewrite level'. The default level
# "CoreFilters" uses a set of rewrite filters that are generally
# safe for most web pages. Most sites should not need to change
# this value and can instead fine-tune the configuration using the
# ModPagespeedDisableFilters and ModPagespeedEnableFilters
# directives, below. Valid values for ModPagespeedRewriteLevel are
# PassThrough, CoreFilters and TestingCoreFilters.
#
# ModPagespeedRewriteLevel PassThrough
 
# Explicitly disables specific filters. This is useful in
# conjuction with ModPagespeedRewriteLevel. For instance, if one
# of the filters in the CoreFilters needs to be disabled for a
# site, that filter can be added to
# ModPagespeedDisableFilters. This directive contains a
# comma-separated list of filter names, and can be repeated.
#
# ModPagespeedDisableFilters rewrite_images
 
# Explicitly enables specific filters. This is useful in
# conjuction with ModPagespeedRewriteLevel. For instance, filters
# not included in the CoreFilters may be enabled using this
# directive. This directive contains a comma-separated list of
# filter names, and can be repeated.
#
ModPagespeedEnableFilters rewrite_javascript,rewrite_css
ModPagespeedEnableFilters collapse_whitespace,elide_attributes
 
# ModPagespeedDomain
# authorizes rewriting of JS, CSS, and Image files found in this
# domain. By default only resources with the same origin as the
# HTML file are rewritten. For example:
 
# ModPagespeedDomain cdn.myhost.com
#
# This will allow resources found on http://cdn.myhost.com to be
# rewritten in addition to those in the same domain as the HTML.
#
# Wildcards (* and ?) are allowed in the domain specification. Be
# careful when using them as if you rewrite domains that do not
# send you traffic, then the site receiving the traffic will not
# know how to serve the rewritten content.
 
# Other defaults (cache sizes and thresholds):
#
# ModPagespeedFileCacheSizeKb 102400
# ModPagespeedFileCacheCleanIntervalMs 3600000
# ModPagespeedLRUCacheKbPerProcess 1024
# ModPagespeedLRUCacheByteLimit 16384
# ModPagespeedCssInlineMaxBytes 2048
# ModPagespeedImageInlineMaxBytes 2048
# ModPagespeedCssImageInlineMaxBytes 2048
# ModPagespeedJsInlineMaxBytes 2048
# ModPagespeedCssOutlineMinBytes 3000
# ModPagespeedJsOutlineMinBytes 3000
 
# Bound the number of images that can be rewritten at any one time; this
# avoids overloading the CPU. Set this to 0 to remove the bound.
#
# ModPagespeedImageMaxRewritesAtOnce 8
 
# You can also customize the number of threads per Apache process
# mod_pagespeed will use to do resource optimization. Plain
# "rewrite threads" are used to do short, latency-sensitive work,
# while "expensive rewrite threads" are used for actual optimization
# work that's more computationally expensive. If you live these unset,
# or use values 
SetHandler mod_pagespeed_beacon
 
# Uncomment the following line if you want to disable statistics entirely.
#
# ModPagespeedStatistics off
 
# This page lets you view statistics about the mod_pagespeed module.
 
Order allow,deny
# You may insert other "Allow from" lines to add hosts you want to
# allow to look at generated statistics. Another possibility is
# to comment out the "Order" and "Allow" options from the config
# file, to allow any client that can reach your server to examine
# statistics. This might be appropriate in an experimental setup or
# if the Apache server is protected by a reverse proxy that will
# filter URLs in some fashion.
Allow from localhost
Allow from 127.0.0.1
SetHandler mod_pagespeed_statistics
 
# Page /mod_pagespeed_message lets you view the latest messages from
# mod_pagespeed, regardless of log-level in your httpd.conf
# ModPagespeedMessageBufferSize is the maximum number of bytes you would
# like to dump to your /mod_pagespeed_message page at one time,
# its default value is 100k bytes.
# Set it to 0 if you want to disable this feature.
ModPagespeedMessageBufferSize 100000
 
Allow from localhost
Allow from 127.0.0.1
SetHandler mod_pagespeed_message
 
Allow from localhost
Allow from 127.0.0.1
SetHandler mod_pagespeed_referer_statistics

O que você precisa habilitar primeiro é o módulo.

 ModPagespeed on

Depois configurar onde ele vai guardar os caches

  ModPagespeedFileCachePath            "/var/mod_pagespeed/cache/"
  ModPagespeedGeneratedFilePrefix      "/var/mod_pagespeed/files/"

Coloque em um diretório de sua preferência.

Com apenas isso, você já vai notar uma significante mudança no carregamento de seu site ou App em 50%. Tem muita configuração para você fazer através de filtros.

Os filtros que utilzei foram esses.

 ModPagespeedEnableFilters combine_css

O filtro combine_css já diz, tudo ele combina tudo que você tem de CSS em um único arquivo.

Outro filtro que usei foi o minificador de Javascript.

ModPagespeedEnableFilters rewrite_javascript

Em caso de você esquecer de minificar seu código javascript, ele faz automático para você.

Outro bastante importante é a configuração das imagens, elas tem um peso absurdo quando o negócio é carregamento.

Eu usei os seguintes filtros.

 ModPagespeedEnableFilters inline_images,recompress_images,resize_images

Peço para carregar todas as imagens em inline, tudo junto, comprima elas e faça um resize caso necessário.

 

Claro que os filtros que eu usei são específicos para meu caso, embora ele vá servir também para vocês na maioria dos casos, recomendo ler os pro e contras de qualquer filtro que você habilite na documentação do Google pageSpeed, que por sinal é bem completa.

E depois disso tudo? Como faço para testar?

Existem diversas ferramentas on-line que analisam o conteúdo do site para você e diz onde está errando, inclusive no próprio site do Page speed, o Google disponibiliza o Page speed Insights, detalhando tudo que você precisa saber para corrigir os erros e melhorar a performance do site.

O mais legal do Pagespeed Insights é a possibilidade de você testar o carregamento em Desktop e Mobile.

Outra ferramenta que fiz bastante uso em meu problema, foi o Full Page Test da Pingdom, para ver se realmente o Pagespeed tinha afetado a performance do site.
No Google Page Speed Insights meu site carregou em 680ms quase 1 segundo. No Pingdom os resultados foram mais reais digamos assim. Carregados em 1.65s.

Sem tudo isso do Pagespeed meu site estaria sendo carregado em meros 5 ou 6 segundos, isso por que boa parte de seu conteúdo é texto.

É isso, escrevei outro post de como eu consegui reduzir o consumo de memória do servidor servindos 50 visitas /segundo nesse blog depois que mudei para servidores novos.
Foi uma grande aventura configurar o Apache e o MySQL para reduzir o consumo de memória.

AIR 2.0/ Dicas/ Dicas e truques/ Flex/ Flex Builder 4/ Livros/ RIA

Livro Flex 4 Avançado

A editora Novatec, recentemente lançou o livro Flex 4 Avançado, que conta com um excelente conteúdo programático e uma ótima tradução.

Se você quer aprender mais a fundo o Adobe Flex 4 e Adobe AIR, você deve comprar esse livro, nós indicamos por que avaliarmos o livro técnicamente, e ele passou pela nossa análise.

Analisamos pontos de referencia, técnicas e macetes já dados no livro em Inglês e querendo ou não acabam se perdendo com traduções mal feitas. Esse livro me surpreendeu por que sua tradução está muito bem feita, e preservou também esses macetes que salvam em horas turbulentas.

O melhor disso tudo é que não só avaliamos o livro como também conseguimos um desconto para todos os leitores desse blog e também a comunidade Flex Brasileira.

Valendo até 31/12/2011 quando você comprar esse livro ou qualquer outro livro no site da Novatec, você ganha 20% de desconto inserindo o código promocional FLEXBRA

Estamos sorteando 1 cópia desse livro Flex 4 Avançado, veja meu Tweet. E também siga também a @novateceditora no Twitter, eles fazem diariamente outras promoções.

Adobe CS3.0/ AS 3.0/ Dicas e truques/ Flash CS 3

#1 – Planejando uma aplicação RIA de sucesso, cuidados que deve-se tomar.

De ontem para hoje eu me deparei em um projeto interno que está sendo desenvolvimento onde o principal objetivo é otimizar a aplicação Flex. E um dos laços que faz isso melhorar a aplicação, são loops, tamanho de swf, hardware envolvido, etc. Os loops sejam eles for, for each, while, do while, for in, timer. E por incrível que possa parecer, os resultados podem não deixar muita gente contente, mais é uma pura verdade quando você faz uma aplicção para ser usada em quaisquer circunstâncias, sejam elas ótimas ou muito más, de todo jeito tem que ser testada e funcionar.

Qual equepamento foi usado?

Geralmente quando faço um aplicativo eu procuro testar em qualquer hardware que vocês imaginar, sejam máquenas excelentes e tops de linhas até maquinas com 8 anos de vida como um K6 da AMD, lembram?

O equepamento foram 2, seguem abaixo:

AMD K6 com 256mb de memóri processador de 550Mhz, placa de video de 32bits e resolução máxima de 1024×768, com sistema Operacional Windows 2000.

Intel core 2 duo com 4Giga de memória, placa de video 32bits resolução de 1280×800 com sistema operacional Vista Home Premium.

Primeiro problema: Compatibilidade

Flash Player 9 não é compatível com Windows 2000, a versão do último build a 0.75 não pode ser instalada. já a versão 9.045 roda tranqüilamente. Problema resolvido, vamos ao segundo teste.

Segundo Teste: Performance de Frames Rates

No AMD K6-II com uma taxa de 24fps em uma aplicação Flex o consumo da memória chega a picos entre 17mb e 23mb, consideravelmente alto, já que essa versão do build tem esse bug, então a pergunta do tal “você quer interromper esse script ou continuar” aparece sempre. Então diminuímos para 16fps e problema resolvido o aplicativo começa a executar tranqüilamente perfeito.

No Intel core 2 Duo com o FPS em 24 o aplicativo chega a consumir entre picos de 3mb até 4mb de memória, com o FPS, chega aumentar cerca de 40% ‘a mais o uso de memória.

Resultados
Em todas as vias use o padrão de 40fps caso sua aplicação for usada nessas poderosas máquenas, se não sabe use o fps do K6-II com toda certeza vai rodar em qualquer máquena.
Como no meu caso eu não sei quais máquenas isso vai ser executado como por exemplo eu posso saber se for usado internamente em uma intranet e peço ao pessoal de infra para me passar uma auditoria. Então publicamente onde todo tipo de PC se conecta na internet, então preferir levar o resto da aplicação em 16fps.

Terceiro teste: Intervalos de chamadas de métodos

Testando chamada de métodos por intervalos de tempos cheguei a conclusão que é impossível alcançar uma perfeição no caso de uso de intervalos por for. Tem até um documento no LiveDocs que reforça meu pensamento, como a aplicação é feita colaborativa, o uso de loops como os citdos no título deste artigo, faz com que a dependência do hardware seja um fator descritivo entre qual delas irá rodar mais rápido, como eu preciso controlar isso e executar no mesmo intervalo de tempo, então eu preciso realmente usar Timer e não for or do while.

Timers, são ótimos nisso, qualquer aplicativo multi-usuário e colaborativo que se preze usa Timers para despachar eventos. O que em minha super máquena potente não sentirá isso nem tampouco a AMD K6-II. Ambas farão a tarefa no mesmo tempo.

Quarto teste: Tamanho do SWF

Como já cheguei a uma conclusão e que muitos dizem que me preciptei, você não espera pelo futuro próximo para saber que naquile dia eu previ o futuro.
Usar módulos não funciona, o que eu usei? o MASAPI, não preciso nem explicar o por que do uso, ele por sí só se explica.
Separo todas as partes por swf do tipo (Application), e carrego no Main Application todas as dependências dos arquevos externos e o framework por RSL, o que resulta para eu um SWF com 30kb e o MASAPI cuida do resto.
Então feito, tamanho de SWF não será problema. Eu vi que um conhecido meu o Arthur lançou um chamado Bulk Loader . Sem dúvida pelo que já li é promissor para caramba, não testei, mais comparando com a capacidade dos criadores e colaboradores, eles não faz besteiras.

Quinto teste – Arquetetura usada para Design Patterns: MVC

Tem gente que ainda acredita no Carningorm da Adobe, eu desaconselho usar, o Carningorm teve seu imporante papel na evolução do Flex e é inquestionável seu uso na versão do Flex 1.5. Já não tenho o que dizer na versão 2.0. No Flex 2, o SDK ganhou tanta maturidade que o que eu vi e vejo por ai é gente usando seu próprio framework para MVC, não faz sentindo usar um framework que para você no campo real não agrega valor tanto do lado do desenvolvedor para treinar sua equepe em aprender Carningorm quanto para quem está pagando por ele.
Por que não focar sua equepe em desenvolver seu próprio framework particular?
Foi e é o que faço sempre em meus projetos específicos e em consultoria. Focar a empresa em desenvolver seu próprio framework para MVC, assim eu tenho de imediato do lado do desenvolvedor uma certa intimidade no que foi feito, a conversa flui mais rápida do que algo que já está pronto no mercado e você tem que adaptá-lo até o máximo para rodar.

Porém nesse específico caso como já havia-se feito parte do software em PureMVC, tive que continuar com o PureMVC. Quem não conhece vale a pena e muito, o PureMVC tem menos idade que o Carningorm, mais é estilo completão, uma de suas características que batem o Carningorm é a documentação completa, coisa que até hoje Carningorm não definiu nada além de tutorial defasado e sem perspectiva de sobrevivência.
O que mais gostei e estou enamorado com o PureMVC são o Facade (extrutura singleton para MVC), Observer(provê encapsulamento do objeto na notificação do callback) .

No meu pessoal, eu copiei essa idéia, facilita muito deixa a complexidade de lado, deixa livre a dependência de versões do Flex SDK.

Sexto teste: Trabalho em equepe de duas pessoas acima.

Sem dúvida um controle de versão é ótimo nestes casos, use o SVN, ele tem se comportado bem com o Flex Builder tanto plug-in quanto Stand Alone. CVS é bom mais não tem comandos que o SVN possui. Já que todos dizem que o SVN é usado em grande maioria e será a substituto do CVS.
Para trabalhar com o Flex Project e SVN, você pode marcar todos os diretórios do seu projeto menos é claro da pasta BIN, não faça isso, caso contrário seu swf terá comportamentos que só o voodoo poderá explicar.

No caso de trabalho solitário, você sozinho pode controlar o histórico local de seu .mxml ou .as, pois o Flex Builder 2/3 já vem o History Local que por padrão guarda até 10x o arquevo salvo. É uma boa quando você quer voltar as alterações de arquevos independentes.

Sétimo teste: Internacionalização.

Eu já vi e desaconselho, se a sua aplicação for vista ou usada apenas por brasileiros, por que usar Multi-Idiomas? Isso é um trabalho de trouxa que quer impressionar o chefe ou à sí mesmo em dizer que tal aplicativo é visualizado em vários idiomas. Lembre-se do alvo, não esqueça que o propósito fundamental do Flex é focado no usuário. Se ele fala só português e será usado só por quem domina o idioma, esqueça essa questão.
Agora no caso de aplicações para américa latina ou mundo, ai sim o uso da internacionalização ( Resource Bundle) é obrigatório, constando neste caso não use traduções dentro do MXML ou actionscript, por favor use o compilador para isso.

Conclusão desta primeira parte.

A segunda parte está vindo por ai.

Dicas e truques/ Flex Componentes

Usando a propriedade prompt do ComboBox

Eu já vi muito desenvolvedor não só aqui no Brasil mais no mundo sem usar esse atributo no ComboBox, inclusive eu. Estava analisando o código fonte do SDK do Flex2/3 que o ComboBox tem uma propriedade chamada prompt. Que é mais usada para criar a opção “Selecione um valor”, esse tipo de texto que é colocado antes de ser populado mesmo vindo de um RemoteObject.

Por exemplo eu já vi/fiz dessa forma.

1
2
3
4
5
6
 
    <mx :ComboBox selectedItem="-1">
                 </mx><mx :Array>
                          </mx><mx :String>Selecione um objeto</mx>
                           <mx :String>Objeto 01</mx>
                           <mx :String>Objeto 02</mx>

Porém você usa de formar harmônica assim:

1
2
3
4
       <mx :ComboBox prompt="Selecione um valor...">
                    </mx><mx :Array>
                                </mx><mx :String>Objeto 01</mx>
                                <mx :String>Objeto 02</mx>

O Flex 2/3 SDK tem muita coisa ainda para ser descoberta, procure ler o código fonte de cada componente para descobrir propriedades não documentadas.

Alternativa ao Flex Builder/ Dicas e truques/ Flex/ Labs/ Vídeo

Video Aula – Usando o FlashDevelop com Flex 2 SDK

Bem, um dos leitores deste blog me deu uma grande idéia de criar uma video-aula de demonstração ‘como de criar aplicações Flex usando o FlashDevelop’; Então está feita a idéia e posta em prática.

Usei o novo Adobe Captivate 3, que por sinal está ótimo o driver de gravação em full-motion.

Clique aqui para assistir.

Dúvidas? só enviar e-mail para [ajuda] @ [igorcosta.com] – Sem esses colchetes [].