Mostrar mensagens com a etiqueta Web. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Web. Mostrar todas as mensagens

quinta-feira, 16 de dezembro de 2010

Safe Factory pattern - private instance state in JavaScript

Apenas quero partilhar convosco um artigo que publiquei no CodeProject acerca de um padrão que descobri que possibilita ter estado privado em instâncias de objectos JavaScript:

http://www.codeproject.com/KB/ajax/SafeFactoryPattern.aspx

A quem interessar!

Duarte Cunha Leão

terça-feira, 7 de julho de 2009

Um exemplo do que não se deve fazer . . .

Já há algum tempo que não venho aqui ao blog, os vários projectos por onde tenho passado
no cliente tiram-me o tempo.

Desta vez, deparei-me com algo, que achei que tinha mesmo de ser partilhado convosco.

Encontrei uma função Javascript, que é incluída numa página com um código no mínimo curioso, apreciem:

function insertDoc(Centro, Estrutura, Area, Produto, Operacao, TipoRegisto, ShortDt, User, Quantidade, sysDate, allow) {
var xml, msql, QantFix, incDate;
var doc, docAttr, docChilds, nor;
debugger;

incDate = ShortDt;
QantFix = Quantidade;

if (allow == "A")
QantFix = calculaQuantidadeACT(Centro, Estrutura, Area, Produto, Operacao, TipoRegisto, ShortDt, User, parseInt(Quantidade), sysDate, allow);


while (incDate <= sysDate)
{
msql = "declare @Centro as char(3); declare @estrutura as char(2); declare @area as char(2); declare @produto as char(2); declare @operacao as char(2); declare @TipoRegisto as char(30); declare @userid as char(8); declare @quantidade as int; declare @allow as char(1); " +
"select @Centro='" + Centro + "'; select @estrutura=" + Estrutura + "; select @area=" + Area + "; select @produto=" + Produto + "; select @operacao=" + Operacao + "; select @TipoRegisto='" + TipoRegisto + "'; select @userid='" + User + "'; select @quantidade=" + Quantidade + "; select @allow='" + allow + "'; " +
"declare @DTPD as datetime; declare @DT as datetime; select @DTPD='" + ShortDt + "'; select @DT='" + incDate + "'; declare @RecebidosD as int; declare @PendentesD as int; declare @PendentesDA as int; ";

if (ShortDt == incDate) {
msql = msql + "" +
"select @RecebidosD=(select quantidade from tregisto " +
"where centro=@Centro and estrutura=@estrutura and area=@area and produto=@produto and operacao=@operacao and tiporegisto=@tiporegisto and data=@DT); " +
"if (@RecebidosD is null) begin " +
"insert into tregisto (centro, estrutura, area, produto, operacao, tiporegisto, data, userid, quantidade) " +
"values (@Centro, @estrutura , @area, @produto, @operacao, @TipoRegisto, @DT, @userid, @quantidade); " +
"select @RecebidosD=(select quantidade from tregisto " +
"where centro=@Centro and estrutura=@estrutura and area=@area and produto=@produto and operacao=@operacao and tiporegisto=@tiporegisto and data=@DT); "

.... (Omitido o resto por questões de brevidade)

}

Temos aqui um caso clássico de utilização de SQL client side, e disponível na página . . .

Algo a evitar!