ABN AMRO com ColdFusion

Pode ser que você já tenha visto e já sabia (é provável), mas como a minha memória anda fraca e, confesso, nunca tinha me chamado a atenção, vale a pena citar – na forma deste post – que um dos bancos mais importantes (e conhecidos) do mundo usa ColdFusion em seu site principal.

http://www.abnamro.com/index.cfm

Sou cliente do Banco Real ABN Amro no Brasil e por acaso caí em uma página institucional do ABN Amro (mundial), que tinha extensão .cfm. Percebi de cara e fui fuçar. O resto do site todo roda em CFM. Interessante. Vale a pena lembrar para citar para os que fazem aquela velha pergunta “mas quem é que usa ColdFusion?”

Detalhe: como o banco foi vendido para o Santander, o exemplo pode não durar muito.


Piada do Programador Estrela

Um programador mediano estava sendo entrevistado para um emprego em uma grande fábrica de software: “E quais são suas pretensões salariais?”, perguntou o entrevistador, depois de ouvir longas e digressões do candidato sobre a sua própria capacidade e seu “score” numa provinha de certificação. “Aproximadamente uns vinte mil reais por mês, mais benefícios.”, respondeu, e com ar todo empertigado, arrematou: “Quais os benefícios que a sua empresa oferece?”. E o entrevistador, depois de pouco pensar, responde: “Normalmente, férias de 6 semanas por ano, fundo de pensão para complementar sua aposentadoria, um carro novo a cada dois anos, cartões de crédito, título de um clube, plano de saúde integral para todos os dependentes e viagem aos Estados Unidos duas vezes por ano.” “Você está brincando?” – pergunta o programador. “É claro! Mas foi você quem começou!”

(Originalmente criada pelo Alex meses há atrás, e hoje adaptada para o blog…)


Escolha seu servidor

Bê-a-bá básico de como configurar seu(s) servidor(es): Choosing Your Server: Web Servers. Vale a pena para aqueles que estão pensando em sair de uma hospedagem compartilhada e partir para uma hospedagem dedicada, mas estão em dúvida como comprar/contratar.


MVC: Model View Controller e os Três Macacos

Muito se fala sobre MVC, e no desenvolvimento de aplicativos em Flex comenta-se muito em relação a ele também. Embora o próprio modelo de desenvolvimento de aplicativos em Flex já possibilite o desenvolvimento de aplicativos em MVC, o advento de frameworks e micro-arquiteturas como o Cairngorm fomenta ainda mais a discussão sobre o MVC.

E a estrutura para entender o MVC, uma vez que ele é um padrão de arquitetura (alguns o chamam de framework, de paradigma, etc.. mas acredito que chamá-lo de arquitetural seja mais significativo) é o mesmo do entendimento de um design pattern: entender o problema (que é a motivação para o surgimento de um padrão), entender o padrão, e por fim entender como o padrão resolve o nosso problema.

A partir do momento que o software começa a ficar grande e complexo demais e que muitos dados são apresentados para o usuário, sentimos a necessidade de separar os dados (model) da interface (a view), de modo que as mudanças na UI não mudem o modo como gerenciamos os dados. E isso é feito desacoplando (removendo a relação direta) da user interface do acesso aos dados através de um elemento adicional, o controller, que irá intermediar essa relação.

Assim, a responsabilidade de cada um dos três elementos fica bem definida:

O Model representa as informações do domínio do aplicativo (a Folha de Pagamento, por ex) e fornece funções para operar os dados (calcular o total da Folha, por ex.), isto é, ele que expõe as funcionalidade do aplicativo. O Model também é responsável por notificar a View quando os dados forem alterados.

A View, objetivamente, deve renderizar o Model e possibilitar a interação do usuário, bem como consultar ao Model quando este notificá-la de que houve alterações nos dados afim de manter a consistência entre ambos.

O Controller, o maestro da orquestra, responde às ações dos usuários (um clique, por exemplo), possibilita mudanças no Model (fazer uma requisição ao servidor e obter novos dados, por exemplo) e seleciona a View correspondente.

E deste modo, desacoplando a View do Model e com a separação de responsabilidade, reduz-se consideravelmente o nível de complexidade do software, permitindo também uma maior especialização e foco do desenvolvedor, algo de extrema importância hoje em dia com a necessidade cada vez maior de interfaces com o usuários mais efetivas.

Esse fluxo pode ser sintetizado conforme a imagem abaixo, cujo original é da Sun:

mvc_diagrama_sun.jpg

Um ponto importante aqui é não confundir o MVC com desenvolvimento em Três Camadas. Desenvolvimento em Três Camadas é uma arquitetura para softwares cliente-servidor, e as camadas representam sistemas distintos (camada de apresentação, camada de negócios e camada de dados, que podem, análoga e respectivamente, ser um aplicativo em Flex, o código Java no servidor e um banco de dados). E fundamentalmente a camada de apresentação nunca pode acessar os dados diretamente, isto é, deve passar pela camada intermediária (ou pelas camadas, já que há sistemas com mais de três camadas).

E embora MVC e Três Camadas pareçam significar a mesma coisa, o nível em que eles atuam é bem diferente. Enquanto o MVC trata do código do aplicativo propriamente dito, o desenvolvimento em Três Camadas refere-se a um nível topologicamente mais alto (entre os sistemas). Outra diferença vital é que em Três Camadas o fluxo é linear (da camada de apresentação para a de negócios, de negócios para dados, voltando de dados para negócios e de negócios para dados), em MVC é triangular (a View envia um comando para o Controller, que por sua vez atualiza o Model e a View é consulta os novos dados no Model). Portanto, não vamos confundir as coisas!

E as implementações em MVC variam de acordo com a linguagem, claro. Mas nada disso é realmente novo, e há algo mais que gostaria de apresentar aqui, agora que já estamos contextualizados.

Eu e Beck Novaes, quando trabalhávamos juntos em um projeto educacional e de treinamento em desenvolvimento em Adobe Flex e Cairngorm, criamos uma série de idéias e conceitos, dos quais uma delas era relacionada à MVC.

Você provavelmente já escutou a história dos Três Macacos Sábios, não é mesmo? Muito possivelmente associada a Gandhi, que sempre levava consigo os três totens dos macaquinhos. Um os macacos está tampando os olhos, outro tampando os ouvidos e o terceiro tampando a boca, representando “não veja o mal, não ouça o mal, não fale o mal”.

Da mesma forma, apresento os Macacos MVC (ou MVC Monkeys para os gringos…):

  • A View é muda, mas faz gestos (user gestures) para o Controller e escuta mudanças no Model;
  • O Model é cego, mas escuta o Controller e fala para a View sobre as mudanças nele próprio;
  • O Controller é surdo, fala para o Model quando mudar de estado e vê os gestos da View.

mvc_monkeys.jpg


Resenha: As Leis da Simplicidade

Certa vez ouvi falar de uma fita de vídeo chamada “Como dizer o que você tem a dizer em 5 minutos?”, mas que tinha mais de uma hora de duração. Um tanto questionável, não é mesmo? A resposta do autor era simples: “Ninguém compraria uma fita com apenas 5 minutos de duração!”.

John Maeda, em contrapartida, seguiu suas próprias leis. Utilizando-se das duas primeiras leis, Reduzir e Organizar, escolheu 10 das 16 leis que tinha em mente, e de acordo com a terceira, Tempo, escreveu um livro curto de 100 páginas, que pode ser lido rapidamente.

A cada capítulo eu associava a lei em questão com situações do dia a dia e vários pensamentos me vinham à cabeça. As leis são concisas, e o livro, além de criativo, com muitas histórias e comparações com a vida real, é livre de jargões tecnológicos e muito mais focado em negócio do que nessa ou naquela tecnologia – o que para mim é muito positivo.

Contudo, não nego que em razão da “buzz” que ocorreu com o livro, eu esperava mais. Mas fazendo uma análise fria do preço do livro, do tempo que levei para ler, da introdução ao assunto da simplicidade e das perguntas que ele me fez fazer, considero uma boa leitura.

Assim, se você procura um livro com dez leis que possam ser traduzidos em dez passos para aplicar simplicidade em seu negócio (ou para aplicar em seu website), esse livro não é para você. O livro em si é uma ótima base para questionamentos e fomenta muitas perguntas, de modo que você próprio deve decidir como e o quão simples seu produto ou serviço pode e deve ser.


Vídeos da Globo.com agora em Flash

E “atendendo a pedidos”, os vídeos sob demanda da Globo.com agora são em Flash Video! Ponto para o time da Globo.com!

PS: Até onde sei, me parece que os vídeos ao vivo (como Big Brother) continuaram a ser transmitidos em Windows Media.


Livro: Pense Grande

Seu longo subtítulo – A história de dez empreendedores que concretizaram suas idéias em empresas sólidas e lucrativas trabalhando com persistência e criatividade – descreve exatamente o assunto tratado em “Pense Grande”. É um livro raro, contudo, já que foi concebido e patrocinado pelo Banco Mutiplic em 1989, e oferecido como presente. Hoje pode ser encontrado a venda em sebos.

O livro apresenta dez pequenas estórias de dez grandes empresas, passando das mais tradicionais em casos de sucesso, como Ford e Nestlé, até por menos comentadas, como Romi e Agroceres. São histórias, portanto, que podem ser lidas em diversos outros livros e possivelmente já conhecida de muitas pessoas. Mas o idéia mais marcante do livro, certamente, é a visão da origem da maioria destes empreendimentos.

George Eastman, por exemplo, só foi estudar o processo fotográfico quando, depois de dez ano trabalhando em um banco, resolveu viajar de férias e um amigo inocentemente sugeriu que ele tirasse fotos. Eastman ficou intrigado com as máquinas fotográficas da época que pesavam mais de 100 quilos, e alguns anos mais tarde cunhou o slogan “Você aperta o botão e nós fazemos o resto” na Kodak, revolucionando e popularizando a fotografia (e viabilizando anos mais tarde o cinema, graças ao filme flexível em rolo).

Assim, a partir de um fato aparentemente sem importância, de uma situação do dia a dia, como uma conversa entre amigos, surge um empreendimento de sucesso que mudou o estilo de vida e comportamento das pessoas, e essa é a essência das histórias apresentadas e compiladas nesta excelente leitura.


ColdFusion 8 mais rápido com Java 5/1.5

Aparentemente a versão 6 do Java VM (a JVM configurada por padrão no CF8) apresenta problemas para carregar grandes quantidades de .class na memória. Um número grande de .class é típico de aplicações ColdFusion grandes ou em provedores de hospedagem, que armazenam muitos sites em ColdFusion. A sugestão é trocar a VM do CF8 para a 5/1.5 (não há diferença em termos de suporte à linguagem nem mudanças significativas em termos de estabilidade) até que a Sun resolva o problema.

[1] Java 6 and ColdFusion 8
[2] Huge Performance Gain in Moving ColdFusion 8 to Java 1.5


Dreamweaver lento com muitos CFINCLUDES

Dica boba, mas que demorei a descobrir. Se o Dreamweaver demora alguns segundos a mais do que o normal para abrir um .cfm que contenha muitos cfincludes (típico em aplicações fusebox 2), desabilite a opção “Show contents of included file” em “Server-side includes” da categoria “Invisible Elements” nas preferências do programa. A melhora na velocidade é perceptível.


Frase do dia

“Não se faz na vida pública o que se faz na privada.”