OOP com CF

Uma apresentação que rolou na MAX 2003 – e que está disponibilizada na web em formato FlashPaper – é a Object Oriented ColdFusion. Em suma, como escrito na própria apresentação, a idéia é mostrar como aplicar conceitos de orientação a objetos ao desenvolvimento em ColdFusion. CFC na veia.


Security Patch para CFMX e JRun 4

Uma brecha de segurança no parser XML empacotado e usado pelo CFMX/JRun4 (Apache Crimson 1.1) pode tornar o servidor vulnerável a ataques de negação de serviço. Trata-se de uma vulnerabilidade conhecida no Crimson desde o mês passado e já é recorrente.

Vejam detalhes aqui:

Security Patch available for ColdFusion MX and JRun 4.0 Web Services DoS

O patch faz a atualização para a última versão do Crisom 1.3 (de Outubro de 2003).

OBS: se você precisa fazer coisas muito específicas em XML você pode usar o Apache Xerces (um parser XML mais parrudo) ao invés do Crimson. Veja este interessante post de Brandon Purcell.


Coral?

Sempre vi pessoas comentando sobre como desenvolver uma aplicação em ColdFusion e vendê-la como um pacote completo, incluindo o servidor, mas sem pagar uma nota preta por isso (preço de uma licença inteira de CFMX da Macromedia). Até hoje o BlueDragon era uma possível resposta para isso. Hoje vi que pode existir uma segunda, nova e bastante interessante alternativa!

Não deixe de conferir o Coral Web Builder.

[via daemonite]


A “Fortaleza” da Macromedia

Neste final de semana fui comprar a edição de dezembro da revista WWW.com.br – revista que passei a ler depois dos meus 15 minutos de fama na edição passada – e tive a grata surpresa de encontrar uma entrevista com o barbudão Ben Forta, falando sobre ColdFusion e suas vantagens perante às tecnologias ASP e PHP.

benforta.jpg

A íntegra da reportagem você encontra nas bancas. Vale a pena, a revista é de qualidade e bastante atual, com destaque para hosting providers (uma extensa lista de hostings que oferecem ColdFusion e outras tecnologias) e reportagens variadas e interessantes. O CD que vêm na edição deste mês (que custa R$ 12,90) tem ótimos programas (a maioria freeware) e um longo e extenso tutorial de ActionScript em forma de vídeoaulas.

UPDATE: Ben Forta fez um rápido comentário sobre a entrevista (incluindo o screenshot da capa – para quem quiser comprar na banca) em seu blog.


Você sabia? CreatTimeSpan()

Nunca tinha parado para pensar nisso, mas gostei da dica que encontrei semana passada no HOF. Eis que temos o óbvio: a função CreateTimeSpan() – ou em “português” CriarIntervaloDeTempo() – é usada para se criar valores de tempo (em número de dias – um dia será 1, 1/2 dia será 0,5 e assim por diante).

Em 90% dos casos ela é usada para setar timeouts e outras informações de tempo como por exemplo o que a sua aplicação se manterá ativa (na tag cfapplication) e também em outras propriedades de tempo tal como num cache de query, pelo atributo cachedwithin (o quê? você não cacheia suas queries?!!). Neste último, é comum vermos sets para dias exatos, como um dia, dois e até um mês inteiro (queries de informações que nunca mudam, por exemplo).

Eis que lhe pergunto: você já experimentou rodar isso aqui e ver o que dá?

CreateTimeSpan.GIF

O resultado vai ser um sonoro “1” (sem aspas) na tela do seu browser. O que isso significa (além de que a função retorna valores em dias)? Significa que se você quiser determinar o tempo de permanência de uma query no cache do servidor você pode usar cachedwithin=”1″ e pronto. Não precisa ficar se lembrando de que na função CreateTimeSpan() o primeiro atributo significa dias, o segundo horas e assim por diante… (eu não consigo decorar essas coisas). Com essa abordagem você também pode poupar alguns nanosegundos de processamento já que o CFServer não vai precisar processar a função. Best-pratice? Nunca, never, nie! Esta é apenas uma curiosidade e uma abordagem diferente para você usar em suas aplicações caso esteja de saco cheio de ficar digitando CreateTime…. em todo lugar onde você quiser valores de dias inteiros para especificar.

O porém fica por conta de valores menores que um dia (comuns em cfapplication). Já pensou uma aplicação que só pode ficar ativa por 15 minutos? O valor de #CreateTimeSpan(0,0,15,0)# é “0.0104166666667”. Decida você o que é mais fácil digitar e entender…


Enquanto isso…

Mais um da série “Enquanto isso…”. Desta vez dou uma dica: trata-se de uma organização mantida por um grande (grande mesmo) banco brasileiro. O site é público e aberto, além de ser bem bonito e interessante, falando inclusive sobre cybercultura. As pastas safadas estão presentes no próprio domínio do site, não foi preciso fazer nenhum tracert, ping ou qualquer outra baboseira para encontrá-las sob um IP ou outro hostname.

cfdocs_aberto.gif
A pasta CFDOCS contém inúmeros exemplos de aplicações, algumas delas podem ser usadas para fazer upload de arquivos em qualquer parte do servidor, por qualquer um!

cfide_aberto.gif
Um diretório CFIDE/administrator pode ser facilmente quebrado usando um aplicativo “réquer” de brute-force, por exemplo. Além disso, no CF 4.0 temos um bug de buffer-overflow no administrator que, ao inserirmos uma string gigante (uma senha tem em média 8 caracteres, estamos falando de milhares, um doc do word de 30 páginas…) no campo onde se espera a senha de acesso o CFServer.exe cai e nunca mais volta (até alguém apertar o botãozinho de reboot)…

Os respectivos administradores de sistema do dito cujo já foram avisados e contactados sobre o assunto. Depois dizem que o CFServer é que é inseguro…

Leia algumas security best pratices que fiz sobre estes dois assuntos aqui.


Quando eu devo usar CFLOCK?

Esta semana andou rolando na lista CF-Brasil algumas perguntas sobre o uso da tag CFLOCK em CFMX. Não tem segredo ou complicação. Procure nos arquivos da lista ou então leia esta FAQ, feita por Ben Forta e disponível no CFFAQ.com:

A função da tag CFLOCK é a de controlar o acesso simultâneo de um pedaço de código ou mesmo de um escopo inteiro de variável. Versões anteriores do ColdFusion (pré CFMX) tinham uma limitação em que acessos simultâneos não protegidos à variáveis compartilhadas (como SESSION ou APPLICATION) podiam resultar em acessos indevidos à memória do servidor e, como consequência, falha do mesmo. Isso já não acontece com o ColdFusion MX, porém ainda existem casos onde devemos usar a tag CFLOCK. Primeiramente qualquer código que não é feito para acesso multi-usuário (tags de terceiros, acesso a arquivos de sistema, etc) deve ser protegido para garantir o acesso de forma sequenciada (em oposição ao acesso concorrente). Depois, mesmo que o acesso à variáveis compartilhadas não cause problemas no servidor, ele pode causar problemas de inconsistência na sua aplicação. Por exemplo, se uma aplicação atualiza um valor de uma variável do tipo APPLICATION e o código para esta atualização não está protegido com o lock, existe a possibilidade de usuários acessarem valores antigos (ainda não atualizados) e ao mesmo tempo valores novos (já atualizados). Talvez isso não seja um problema, dependendo da sua aplicação, porém se isso estiver afetando-a, é o caso de usar CFLOCK.


CF Technotes via RSS

Não usa nenhum feeder reader ainda? Então agora você tem mais um bom motivo para usar:

CFMX TechNotes RSS feed. Receba os TechNotes de ColdFusion direto da Macromedia no seu desktop.


Múltiplas instâncias de CFMX

Tudo o que você gostaria de saber sobre como instalar múltiplas instâncias do CFMX no Jrun (CFMX for J2EE) mas tinha medo de perguntar:

ColdFusion MX 6.1 Step-by-Step Creating and Configuring Multiple Instances

Leitura recomendada.


Blackstone: vídeos da MAX2003

Depois da excelente e divertidíssima apresentação feita pelo Marco Antonio (CFUG-Rio) direto da MAX2003, disponibilizo para download dois vídeos “undergrounds” de duas apresentações da MAX sobre o novo ColdFusion, codinome “blackstone”.

O primeiro é a apresentação oficial feita pelo Ben Forta ontem, dia 20 – veja o post relacionado. O segundo vídeo é da apresentação do Mike Nimer, feita hoje, durante o sneak peek, demonstrando (num protótipo “flexado”) algumas das prováveis novas funcionalidades do Blackstone.

Os vídeos estão em formato QuickTime e requerem o dito cujo para assistir. Estão um pouco escuros e desfocados, mas dá para entender e ver boa parte das apresentações, incluindo o figurino inusitado em que o pessoal da Macromedia se meteu: abelhas humanas! (juro que não entendi). Ambos foram gravados e disponibilizados por Ken Azuma, o qual somos imensamente agradecidos!!

Blackstone, por Ben Forta (12Mb)
Blackstone no sneak peek, por Mike Nimer (5Mb)

BTW: confiram também os comentários-calúnia do Jonas Galvez sobre a apresentação do Marco…