Fusebox 4

This beta-test of Fusebox 4 ran from early May through the Fourth of July and is now complete!.
(…)
Fusebox 4 vastly expands the capabilities of Fusebox by leveraging the power of XML. Most of the logic and control of your application will now be written in XML.
(…)
While Fusebox 4 is not dependent on CFCs, it works easily with them.

Mais informações aqui.


Próxima reunião do CFUG-SP

A próxima reunião do CFUG-SP já tem data marcada: 03/12/2003.

Compareça!

http://www.cfugsp.com.br


Flash MX 2004 Updater

Download and install the Flash MX 2004 updater to improve stability, performance, and usability.

Maiores informações aqui.

Flash 7.0.1 Release Notes


6.1 Issues

Atualizado hoje:
ColdFusion MX 6.1 confirmed issues

E é sempre bom lembrar:
ColdFusion hot fixes (all versions)


The Meatrix

Uma interessante campanha contra as Factory Farms usando uma paródia de Matrix animada em Flash e um coletor de e-mails de campanha usando ColdFusion. A aplicação e a animação foram desenvolvidas para a ação promovida por várias ONGs nos EUA, sendo a Amigos da Terra US uma delas.

Vale a pena conferir:

What’s the Meatrix?


Não perca a elegância

Devo confessar que durante muito tempo literalmente re-inventava a roda em se tratando de ColdFusion. Como todos nós, iniciantes ou experts, fazia barbarides (acho que ainda faço algumas) com o CFML procurando atingir um objetivo muito simples. Hoje vou dar um exemplo que pode acontecer com muita gente.

Você já fez uma query simples que retornava duas variáveis tais como “campoID” e “descricao”? Obviamente que sim. E você já precisou colocar os IDs retornados (“campoID”) numa lista? Muito provavelmente também. As necessidades de se ter uma listagem dos IDs retornados pela query são inúmeras e fundamentais em algumas ocasiões. Pois eis aqui o exemplo mais estúpido de como fazer isso e logo em seguida o jeito mais correto, elegante e rápido (sua CPU agradece).

UPDATE: obrigado ao André Garcia pelo lembrete da função ValueList()!

Maneira estúpida:

lista_estupida.gif

E a mais elegante:

elegante2.gif

Ou ainda:

lista_elegante.gif

Veja este teste comparando a performance das três abordagens


Programador NEQ Usuario

Alguns programadores tem o hábito de achar que os usuários serão espertos e calejados o suficiente para entender tudo que se passa em sua aplicação, para divinhar o que você pensou, ou que irão conseguir contornar os bugs que os navegadores oferecem.

Clicar no “Voltar” e os campos de múltiplos selects perderem o relacionamento é chato. Eu, como usuário, clicar em “Voltar” e meus resultados de busca terem sido perdidos só porque eu configuro meu navegador para atualizar a página a cada visita (e o cidadão colocou a busca como POST) é outro problema, e com certeza não é meu.

Na parte de carros usados do Webmotors por exemplo. Por que raios câmbio automático e câmbio manual são checkbox? Um carro por um acaso pode ser manual e automático ao mesmo tempo? Por que não um select ou um radio com as opções Manual, Automático, Indiferente?

Ainda na mesma página, se eu selecionar Apenas carros de particulares e depois mudar de idéia, sendo indiferente se o carro é de loja ou de particulares, como faço? E o Alarme/Alarme a distância? Todo carro que tem alarme a distância já tem alarme, não? Carro que tem CD Player não tem toca-fitas. Ambigüidade. Pode atrapalhar meus resultados. E só para ser pentelho, carro com ar condicionado já tem ar quente…

Um outro exemplo: sabe aquele menu nos programas onde mostra os documentos abertos (Window, Workspace, etc)? Ou até mesmo a lista de documentos recentes? Antes (agora já corrigiram) começavam a contar a partir do zero. Só programador começa a contar a partir do zero!

Usuários não sabem ler. Num ambiente de Intranet, onde você desenvolve internamente, uma série de erros acabam não sendo tratados. Uma mensagem que para nós é muito simples, como String or binary data would be truncated, para um usuário se torna uma telefonema para sua mesa. $%^&*!

Usuários não pensam como programadores.

Programadores têm que saber pensar como usuários.


BlueDragon 6.1 preview

Está disponível para download uma versão preview do servidor BlueDragon JX, agora na versão 6.1 (sugestivo não?). O BlueDragon (veja aqui e aqui) é um servidor Java que também interpreta CFML (ColdFusion Markup Language), além de JSP, tal como o CFServer Enterprise da Macromedia. A diferença? Menos recursos e um preço bem competitivo (U$ 549,00 – ou quase 10% do valor de uma licença de CFMX Enterprise) e também uma versão free, sem suporte à JSP, mas que pode ser usado em produção.

[via ClickRafa]


Meus snippets para CFStudio e/ou HomeSite+

Para quem quiser baixar, disponibilizei um zip com todos os snippets que tenho no meu HomeSite. Baixe aqui, dezipe na sua pasta de snippets e bom uso!

PS: para quem tiver snippets legais: deixe de ser mão de vaca e poste aqui (um link nos comentários) para todos interessados! ;o)


De volta para o futuro! CreateUUID()

Agora pouco me deparei com um post no Blog do Ray sobre um novo TechNote de suporte do ColdFusion no MM.com. Pois bem, para mim este é um dos bugs mais exóticos do CFMX (o bug é do JVM na verdade). O problema aparece quando se usa de forma maciça a função CreateUUID(), uma função bem conhecida e utilizada em quase todas as linguagens de programação que, em poucas linhas, gera uma string maluca, de acordo com regras ainda mais malucas e também (importante) dependendo do horário em que esta foi gerada (supondo-se que seja impossível “viajar no tempo”…). Ao usar CreateUUID() o relógio do Windows vai andar mais rápido (um milisegundo a cada “rodada” do CreateUUID() se não me engano), literalmente, podendo adiantar significamente o horário do sistema.

Confiram o TechNote e o workaround proposto:

CreateUUID Increases the Windows System Clock Speed