Variáveis locais à funções
Publicado; 13/02/2005 Arquivado em: ColdFusion Comentários desativados em Variáveis locais à funçõesVariáveis locais de funções são variáveis que existem apenas dentro da função, não existindo na página que chamou a função. Dessa maneira, não só a memória é gerenciada de melhor maneira, como também as variáveis da função não interferem nas da página que a chamou, a vice-versa.
Variáveis locais são criadas com a palavra-chave var:
var valor = 3; //dentro de um bloco CFSCRIPT
ou
<CFSET VAR valor="3">
Ao criar UDFs, é comum (e recomendado), já declarar todas as variáveis que você irá utilizar no início da função, com a devida palavra-chave var. Aliás, declaração de variáveis locais só podem ser no início da função.
O problema é que muitas pessoas – inclusive eu – esquecem de declarar como variáveis locais as variáveis de loops!
Veja o código abaixo:
for(i=1; i LTE 13; i=i+1) {
thisDigit = mid(thisCNPJ, i, 1);
somaDigitoDois = somaDigitoDois + thisDigit * aMultipliers[i];
}
O código é parte da função CNPJvalidate() e cria uma nova variávei i. Se já existir uma variável i na página que a chamou, o valor desta será sobreposto pelo novo valor setado nesse loop. O correto seria, no início da função já declarar a variável i, mesmo que com qualquer valor.
Em tempo: as funções CNPJvalidate() e CPFvalidate() já foram atualizadas. 🙂
Ah, e não posso esquecer de dar parabéns ao nosso mais novo milionário!
Hermes, o deus da cybercoisa
Publicado; 13/02/2005 Arquivado em: Tecnologia Comentários desativados em Hermes, o deus da cybercoisaAcabei a leitura desta deliciosa coletânea de textos de Fernand Alphen. Fernand escreve de maneira direta, clara e muito engraçada. Literatura altamente recomendada para as horas de lazer.
Acid reading
Publicado; 13/02/2005 Arquivado em: Livros, Mundinho corporativo 1 comentárioE já que estamos falando de livros… Para aqueles que, como eu, tem resalvas aos modelos guruzentos de administração e cultura empresarial, bem como à literatura de auto-ajuda empresarial (ou mesmo pessoal) feita por consultores palpiteiros, que quase nunca viram (ou fizeram) funcionar suas práticas e buzz-words na vida real, segue uma pequena lista de livros que já tive o prazer de ler e ajudam a construir uma visão mais crítica sobre as “verdades absolutas” e “modelos ideais”, absolutos.
Não existe verdade absoluta, não existe modelo ideal. Existem casos e casos, modelos e modelos, e principalmente: aquilo que funciona e aquilo que não funciona. Eis a lista:
. Executivos neuróticos, empresas nervosas;
. A arte da guerra para quem mexeu no queijo do Pai Rico;
. Todos os clássicos de Dilbert;
. Relações Desumanas no Trabalho;
. Comedia Corporativa;
. Máximas e mínimas da comédia corporativa;
. Abaixo o pop-management;
. Voce é o máximo! A história do puxa-saquismo.
Bom proveito. Só não vá pedir demissão… 😉
Ganhei na mega sena
Publicado; 12/02/2005 Arquivado em: Unsorted 162 ComentáriosComo muitos, eu nunca conheci quem tenha ganho na loteria (ou que pelo menos tenha dito que ganhou). Dessa vez fui eu que ganhei, e de verdade! Devo estar com sorte utimamente. Não foi a bolada maior nem a quina, mas a quadra, o que já é ótimo e valeu a pena só pelo friozinho na barriga de ter chegado quase lá… Comecei a apostar há pouco tempo, uma vez por semana, desde quando comecei a voltar a pé do escritório e passar na frente de uma lotérica, cujo caixa é um velhinho simpático e bom de proza. Essa semana a proza valeu à pena, vamos ver nas próximas!
E logo eu, que nunca ganhei nada, exceto um ventilador numa rifa que fizeram na minha rua quando eu tinha 8 anos… Acredite, existem ganhadores. E se eu tivesse ganho a bolada maior, certamente não estaria aqui falando… Afinal de contas, dinheiro só não traz felicidade para quem não sabe usá-lo.
E agora vocês podem dizer que conhecem alguém que já ganhou na loto. 😉
UPDATE em 04/10/2006: os comentários foram encerrados neste post. Muita bagunça, muitos pseudo-ganhadores da mega-sena, propagandas (que já apaguei) e comentários absurdos. Desculpem, meu blog não é latrina.
Onde está o popular do PC Conectado?
Publicado; 11/02/2005 Arquivado em: Software Livre 6 ComentáriosÓtimo artigo no Webinsider sobre os problemas de mais uma peça (no sentido de travessura) que os intelectualizados teóricos da área de informática do nosso governo “livre” e “social” quer pregar em seus cidadãos: PC Popular pode nem sair do papel, de novo.
E antes que digam (como fez Lula), que as críticas são “coisas de ex-marido com dor de cotovelo”: não meus queridos, são apenas críticas, talvez um pouco mais fundamentadas que às feitas quando vocês eram oposição e levavam a ferro e fogo a máxima do “se hay gobierno, soy contra”. Hoje sentem o gostinho amargo da oposição burra e insensata, para o mal do país.
Senha do RDS do ColdFusion 7
Publicado; 10/02/2005 Arquivado em: ColdFusion Comentários desativados em Senha do RDS do ColdFusion 7Apenas um adendo sobre o post anterior.. Embora a senha do ColdFusion Administrator agora seja melhor criptografada, a senha do servidor RDS não.
Essa continua criptografada via Encrypt()/Decrypt(), com o algorítimo “TripleDES”. É portanto, “raqueável”. Descobrir a chave (e a “seed” que gera essa chave!) é bem mais complicado que antes, sem contar que não é “adivinhável” como antes, mas é possível, e eu posso provar. :o)
Alô administradores!, desabilitem o RDS!
Login no Administrator do ColdFusion 7
Publicado; 10/02/2005 Arquivado em: ColdFusion Comentários desativados em Login no Administrator do ColdFusion 7Eu fiquei contente com o login no ColdFusion Administrator da nova versão do ColdFusion.
Na versão anterior, o sistema de login, criptografia e armazenamento da senha era muito precário. Foi só eu comentar com o Alex que ele fez um post, inclusive criticando (com razão) o sistema de login.
Na versão anterior (MX 6 e 6.1) havia um formulário de login onde era necessário digitar somente a senha. Embora o ideal seria algo como usuário-senha, é algo contornável (e extremamente recomendado, basta ler os posts sobre segurança aqui do CFGIGOLÔ) protegendo a pasta CFIDE/Administrator com um usuário e senha via web server.
A senha era enviada por padrão em formato plain-text, passível de spoof. Acessar o CF Administrator via https é algo que poucas vezes vi.
No servidor a senha então era encriptada com uma função (de encriptação de duas vias – encripta e desencripta) do próprio ColdFusion (Encrypt()), e comparada com a versão encriptada em um arquivo guardado em texto puro no servidor. Se o arquivo é em texto, e a criptografia é de duas mãos, é possível desencriptar a senha…
Era um sistema que funcionava, e bem até; mas não era seguro o suficiente para os
Na nova versão – anteriormente conhecida como Blackstone, na tela de login, ao digitar a senha, uma função JavaScript (no cliente portanto) encripta a senha utilizando SHA-1 (de mão única), criptografa a senha já encriptada (sim, de novo) utilizando uma key (agora em duas mãos) randômica (do tipo 1108059832081) e aí sim envia para o servidor, que se encarrega de verificar se a senha está correta. Ele recebe a senha criptografada duas vezes e a chave de uma delas; ele desencripta utilizando a chave e o resultado é a senha criptografada em SHA-1, que é comparada com a do arquivo password.properties.
Update: Um senão desse novo sistema é que há uma função interna (getAdminHash()) que retorna a senha hash (em criptografia SHA-1) do Administrator; a mesma senha que está no password.properties. Se alguém realmente quiser descobrir a senha, pode deixar um brute-force rodando até descobrir a senha. Vale dizer que para acessar essa função a dupla cfobject/createObject() entra em ação.
Nova certificação CFMX 7
Publicado; 10/02/2005 Arquivado em: ColdFusion Comentários desativados em Nova certificação CFMX 7A cada nova versão do tipo “milestone” (enhancements significativos) do ColdFusion, uma nova prova de certificação é criada e homologada, para desespero dos que acabaram de fazer a certificação para a versão anterior (normalmente são oferecidos descontos generosos nos meses que antecedem o lançamento de uma nova versão. Justamente o que aconteceu com a prova do CFMX 6.1).
Com CFMX 7 não podia ser diferente. Mas nem tudo está perdido… Se você pretende tirar sua certificação nesta nova versão, pode conseguir um desconto de 40% no valor da prova ou até mesmo um desconto de 100%. Veja:
Desconto de 40% para aqueles que participarem do “programa beta” (existe isso?) da nova prova de certificação, cliquem aqui, leiam, entendam e se inscrevam.
Desconto de 100% para aqueles que submeterem 7 sugestões de questões (interessante, não?) para a nova prova. Cliquem aqui, leiam, entendam e se inscrevam.
Nenhuma das duas opções é garantia de desconto (você precisa ser selecionado), mas a história mostra que todos os que fizeram a prova beta (independente se “passaram” ou não) ganharam o desconto (que pode ser utilizado num intervalo de +/- um ano). No segundo caso é interessante que você envie sugestões de questões que tenham a ver com os novos recursos do CFMX (não chovam no molhado). Vale notar também que (se não estou enganado) os vouchers de desconto são cumulativos, ou seja, se você já tiver um voucher de 15% como os que são distribuidos em reuniões de MUGs e também em livros como o do Forta, mais um voucher de desconto (se não me engano 25%) por ter feito uma prova na Vue, poderá ter um desconto de até 75% (por exemplo). Reciocínio de programador não vale: é claro que se o desconto ultrapassar os 100% ninguém vai te “pagar” (dar dinheiro de volta) para fazer o exame… 😉
Boa sorte!
Windows 2003 + ColdFusion MX 7 Security best pratices
Publicado; 10/02/2005 Arquivado em: ColdFusion Comentários desativados em Windows 2003 + ColdFusion MX 7 Security best praticesO Terracini me mandou, e vale a pena ler:
Configuring ColdFusion MX 7 Server Security (print)
Nenhuma dica extraordinária, apenas uma coletânea de best-settings/pratices para a dobradinha CFMX 7 e Windows 2003 (mas as dicas para CFMX 7 são válidas para qualquer sistema operacional). Gostaria de ver mais artigos deste tipo no Devnet.
ColdFusion built-in webserver
Publicado; 09/02/2005 Arquivado em: ColdFusion Comentários desativados em ColdFusion built-in webserverO ColdFusion tem um servidor web (como o IIS e o Apache) bem simples embutido (built-in webserver), que quebra um bom galho, principalmente na máquina do desenvolvedor, que não precisa ter um IIS completo com esse e aquele recurso; apenas o ColdFusion rodando, de maneira simples.
O webserver roda normalmente como na porta 8500 (http://localhost:8500/) e seus arquivos ficam sob a pasta wwwroot no diretório de instalação do ColdFusion, como por exemplo, D:CFusionMXwwwroot.
Tente digitar “localhost:8500” (sem o http://) na barra de endereços do Internet Explorer. Não sei o porque cargas d’agua, ele muda para “local:8500”!! Eu nunca digito “http://” na frente de um endereço web! Seria mais simples se o acesso fosse simplesmente localhost, rodando na porta padrão para web, a 80.
É possível mudar o número da porta em que o built-in web server opera. Abra o {cfmx_root}runtimeserversdefaultSERVER-INFjrun.xml, e localize o seguinte:
<service class="jrun.servlet.http.WebService" name="WebService">
<attribute name="port">8500</attribute>
<attribute name="interface">*</attribute>
<attribute name="deactivated">false</attribute>
<attribute name="activeHandlerThreads">10</attribute>
<attribute name="minHandlerThreads">20</attribute>
<attribute name="threadWaitTimeout">350</attribute>
</service>
Mude a porta de 8500 para 80, salve o arquivo e reinicie o serviço do CF.
Ah, é possível ver mais informações sobre o atributo threadWaitTimeout nesse post do Alex.
O outro ponto é o webroot, que fica sob a pasta de instalação do CF. Esse caminho, que pode ser mais cômodo para o desenvolvedor se for em outra pasta, ou até mesmo em outro disco, também pode ser alterado.
Abra o arquivo {cfmx_root}wwwrootWEB-INFjrun-web.xml e localize o seguinte trecho:
<virtual-mapping>
<resource-path>/*</resource-path>
<system-path>d:/cfusionmx/wwwroot/</system-path>
</virtual-mapping>
Altere o conteúdo do system-path para o caminho de sua preferência e copie o diretório “CFIDE” para o seu novo webroot. Feita a alteração, reinicie o serviço do ColdFusion.