De January, 2007

Noções básicas de modelagem de dados

O primeiro banco de dados com o qual os desenvolvedores ASP tomam contato (e estamos considerando os iniciantes!) costuma ser o Microsoft Access. Ainda que o MS Access não seja exatamente um SGBD (Sistema Gerenciador de Banco de Dados), serve para exercitar conhecimentos elementares (e até alguns avançados) quanto à administração de dados. Um problema comum é que, dada a sua simplicidade, comumente o desenvolvedor não planeja seu banco de dados, não toma cuidado com a modelagem de dados. Um bom modelo de dados é fundamental para o funcionamento de uma aplicação cuja função seja o gerenciamento de dados (vide administração de dados), quer para simples exibição dos mesmos, quer para auxílio à decisão. Uma folha de horas trabalhadas é um exemplo de dados armazenados para exibição. Uma decisão (desconto ou pagamento de horas extras) pode estar envolvida aí, mas não chega a ser como a análise de compras de insumos, de maneira que a aplicação possa sugerir o ponto de compra de produtos de um mesmo fornecedor uma forma tal que não haja falta no estoque e que possa ser feita uma compra maior, se isso gerar um desconto. A mesma análise pode ser feita para, por uma questão de fluxo de caixa, não ser necessário comprar vários insumos ao mesmo tempo. Aí o auxílio à decisão está bem melhor caracterizado!

Alguns cuidados elementares que um desenvolvedor inexperiente costuma deixar de tomar são:

  • Deixar todos os campos texto com tamanho 50, que é o padrão oferecido pelo Access;
  • Definir como textos campos que conterão datas;
  • Utilizar constantes do tipo ‘cadeia de caracteres’ para campos que terão conteúdo repetido em muitos registros;

Vamos analisar, sumariamente, as conseqüências de cada um dos erros citados acima. São exemplo, mas não os únicos!

1. Em campo matrícula, que usará no máximo 6 caracteres, por exemplo, cada registro ocupará outros 44 bytes desnecessariamente. E como provavelmente esse seja um campo chave, o desperdício aumenta, acarretamento, ainda, problemas de performance;

2. É comum, embora completamente desaconselhável, usar campos texto para armazenar datas. Os mais ‘espertos’ armazenam no formato ‘aaaammdd’, o que ao menos permite uma exibição ordenada, crescente ou decrescente, no formato dd/mm/aaaa. O problema, nesse caso, é não podermos (ao menos diretamente), obter o dia da semana referente à data e, principalmente, não poder executar cálculos com as datas. Calcular intervalos entre 2 datas nesse formato, ou avançar ‘n‘ meses a partir de uma data será algo descartado. Tudo bem, eu e muitos outros da ‘velha guarda’ já fizemos esse tipo de rotina em Turbo Pascal, criando bibliotecas de funções com ‘zilhões’ de linhas. Era o tempo em que o grande prezer do desenvolvedor não era exatamente o funcionamento do sistema, mas ter criado as ferramentas que permitiam ao computador, uma máquina burra, fazer esse tipo de processamento. Era a época, passado remoto, em que criar uma rotina de entrada de dados em formatos que hoje vemos nos caixas eletrônicos ou nos ‘formulários’ exigia profundos conhecimentos de lógica de programação, e freqüentemente o domínio de uma matemática relativamente avançada.

3. Esse erro é, talvez, o que mais caracteriza uma modelagem não muito bem feita. Suponhamos que os usuários tenham ‘poderes’ diferentes na aplicação, com critérios baseados em uma posição dentro da organização, e que cada usuário possa ser ‘classificado’ como ‘administrador’, ’supervisor’ e ‘operador’. É terrivelmente comum ver um banco em que, um campo de 50 caracteres contenha a descrição dessa posição. Em alguns casos o desenvolvedor ainda diminui o tamanho do campo para 15 caracteres, crente que está abafando! E vemos na tabela alguns registros com o tal campo preenchido com ‘administrador’, umas dezenas preenchidos com ’supervisor’ e algumas centenas (ou mesmo milhares!) com ‘operador’. E o que acontece se, por questões administrativas, for decidido transformar ‘operador’ em ‘usuário’. Centenas (ou milhares!) de registros precisarão ser atualizados. A saída? Um campo caracter de uma posição (char(1)), se não forem mais do que 10 diferentes ‘status‘, ou um campo ‘número tipo byte’. Em nosso exemplo, poderia ser char(1), com conteúdos ‘1′,’2′ ou ‘3′. Em uma outra tabela teríamos essa nomenclatura: 1 = ‘administrador’, 2 = ’supervisor’ e 3 = ‘operador’. Muito mais objetivo, não? Pior ainda seria criar uma tabela com a lista de direitos, por exempo, em que os registros contenham ‘administrador’, ’supervisor’, ‘operador’. Nesse caso o relacinamento seria pelo campo ’status’ (por exemplo). Nunca faça relacionamentos utilizando campos caracter.

Em uma ficha cadastral, por exemplo, na qual um dos campos seja ‘país’, a criação de uma tabela com a lista de países, cada um com um número, evita que um determinado campo seja preenchido ‘trocentas vezes’ com BRASIL. O campo conteria o número correspondente a Brasil na tabela de países. Nesse caso, por razões que não vem ao caso aqui, é até interessante usar a tabela internacional, onde o Brasil tem o número 55. E é muito mais fácil pesquisar pelo código 55 do que por Brasil, principalmente se considerarmos que não poucos escreverão BraZil!

Comentarios

Página de contato usando o AspEmail

O código abaixo é um modelo de página de contato que faz uso do componente AspEmail, cujo manual pode ser encontrado aqui, e não deve ser confundido com o AspMail, da ServerObjects!

Como estamos considerando e exigência de autenticação, o remetente não pode ser o usuário que preencheu o formulário. Para contornar o problema e permitir que seja possível responder diretamente por um cliente de correio, um endereço do próprio domínio do site é utilizado como remetente e ao mesmo tempo destinatário. O endereço do solicitante é utilizado como ReplyTo.

É importante lembrar que nesse exemplo não há nenhum teste de consistência. Para uso realmente profissional o desenvolvedor precisa considerar que campos devem ser obrigatórios e se o endereço preenchido é coerente. Isso pode ser feito facilmente usando-se funçôes JavaScript.

<% if Request.Form(”botao”) = “” then %>
<form method=”post”>
<table border=”1″ align=”center” cellPadding=”5″ cellSpacing=”0″>
<tr>
<td>Seu nome
<input name=”nome” /></td>
</tr>
<tr>
<td>Seu email
<input name=”email” /></td>
</tr>
<tr>
<td>Mensagem
<textarea cols=”60″ rows=”6″ name=”mensagem”></textarea></td>
</tr>
<tr>
<td><input name=”botao” type=”submit” /></td>
</tr>
</table>
</form>
<%
else
Set oMail = Server.CreateObject(”Persits.MailSender”)
oMail.Host = “mail.dominio.com.br”
oMail.From = “contato@dominio.com.br”
oMail.UserName = “contato@dominio.com.br”
oMail.PassWord = “senha”
oMail.FromName = Request.Form(”nome”)
oMail.AddAddress “contato@dominio.com.br”, “Página de contato”
oMail.AddReplyTo Request.Form(”email”), Request.Form(”nome”)
oMail.Subject = “Contato pelo site”
oMail.Body = Request.Form (”mensagem”)
oMail.Send

If Err <> 0 Then
Response.Write “<H2>Ocorreu um erro: ” & Err.Description & “</h2>”
else
Response.Write(”<H2>Obrigado, seu e-mail foi enviado com sucesso!</H2>”)
End If
Set oMail = Nothing
end if %>

O código-fonte está em http://noticias.aspecto.net/asp/contato.txt.

Comments (3)

Cartão de visita. Quem pensa sobre cartão de visita? Eu penso!

Por Márcio Miranda – Empresário
(http://www.workshop.com.br/paginas/artigos/cartao_visita.htm)

Durante os últimos quatro meses eu estive presente em inúmeras conferências, seminários e demais eventos. Algo que me chamou a atenção foi a maneira como as pessoas não se preparam. Elas não trazem canetas, nem papel, e muito menos cartão de visita.

Alguns Exemplos

Durante a conversa que tive com Eduardo, após ouvi-lo dizer que estava fazendo algumas coisas interessantes, perguntei: “Você pode me dar seu cartão de visita?”, ao mesmo tempo em que eu estendia a mão com um dos meus.

Ele murmurou para si mesmo que não estava certo de onde eles estavam. Tirou sua carteira e começou a procurar.

Enquanto prestava atenção nele, eu me senti como uma testemunha de uma expedição arqueológica. Ele tirou os recibos dos cartões de créditos, os cartões de crédito, fotos de família, carteira de motorista, e cartões de visitas de outras pessoas – com anotações na parte de trás.

Timidamente ele disse “Eu sei que eu tenho um… em algum lugar. Deixa eu dar uma olhada na minha pasta”. E a busca continuou.

Ele abriu a pasta, que estava lotada com papéis, memorandos, relatórios, newsletters e jornais, e talvez em algum lugar secreto… um cartão de visita. Finalmente ele encontrou um e me entregou. Nós trocamos mais algumas palavras e fomos embora.

Eu anotei algumas coisas atrás do seu cartão de visitas, pois assim eu poderia acrescentá-lo ao meu banco de dados (eu uso o software ACT! como database – é excelente!) e ligar para ele em poucos dias. Quem saberia dizer onde meu cartão de visitas iria parar.

Pouco tempo depois, eu comecei uma conversa com Raquel. Conversamos por pouco tempo, e eu perguntei se ela gostaria de ser incluída no meu newsletter. Ela disse que sim. Perguntei, então, pelo seu cartão de visitas.

Ela abriu sua bolsa, e começou uma busca minuciosa. Ela achou de tudo, menos o cartão de visita.

Noventa segundos mais tarde eu dei a ela um dos meus – junto com uma caneta, e pedi a ela para escrever seu nome, endereço de e-mail e outras informações no verso.

Eu coloquei o cartão de visita dela no bolso direito da minha calça, enquanto o meu foi parar dentro daquela bagunça que ela chama de bolsa.

Usando seus Cartões de Visita

Cartões de visita são baratos. Você pode mandar fazer uma centena por R$100 ou R$150, ou talvez até por menos. Mas nós esquecemos de carregá-los conosco. Isto é um grande erro.

Você nunca sabe quando encontrará alguém que poderia ser um cliente, sócio ou um bom contato.

Esteja sempre preparado

Enquanto eu voava de volta para São Paulo, eu estava sentado próximo ao Dennis, o proprietário de uma empresa de porte médio, porém lucrativa e de muito sucesso.

Durante o vôo nós começamos a conversar e descobrimos que tínhamos em comum vários interesses profissionais. Ele também já tinha lido vários dos meus artigos e livros. Mundo pequeno, não é mesmo? Quando o avião pousou em São Paulo, nós pegamos nossas bagagens, entramos no terminal e continuamos a conversa por mais alguns minutos antes dele pegar seu vôo de conexão.

No final da conversa, nós dois anotamos atrás dos cartões (eu do dele e ele do meu), sobre o que faríamos.

Então nos despedimos. Eu peguei um táxi e fui para casa, e ele voou para o Rio de Janeiro. Quando voltamos para nossos escritórios, nós dois fizemos as coisas que tínhamos anotado na parte de trás dos cartões.

Cinco Dicas de Cartões de Visita & Networking

Aqui estão cinco dicas de cartões de visita e networking que você deveria usar. Eles ajudarão você a aproveitar as melhores oportunidades que surgirem no seu caminho através das pessoas que você encontrar.

  • Mantenha sempre uma grande quantidade de cartões de visita na sua pasta, carteira ou bolsa. Invista o máximo que for viável para fazer um cartão bonito, com layout moderno e papel de boa qualidade. A primeira impressão é muito importante.
  • Reponha seu estoque após todas reuniões, encontros e eventos de que participar.
  • Crie um método para dar e receber cartões de visita. Eu, por exemplo, mantenho os meus no bolso esquerdo das minhas calças e os que eu recebo, coloco no bolso direito.
  • Olhe para os cartões das pessoas antes de guardá-los no bolso ou na bolsa. Olhe para o nome, e então olhe para o rosto da pessoa. Tente fazer uma imagem mental do nome e do rosto em sua cabeça para que você possa se lembrar do seu novo amigo.
  • Após encontrar alguém, anote rapidamente algumas peças chave de informação no verso do cartão, e um lembrete dos próximos passos que você deve fazer quando retornar ao seu escritório. Se você não quer manter contato, nem colocá-lo no seu banco de dados (database), discretamente escreva um X no verso do cartão.

É sua função manter o contato

Distribuir à toa seu cartão de visita não é nem de longe tão importante quanto apanhar os cartões de visita das outras pessoas. Se você entrega a alguém seu cartão, e então espera que liguem para você, você ficará sentado do lado do telefone por muito e muito tempo.

Quando você encontrar alguém, e quiser manter contato, tenha como obrigação inserir o dessa pessoa no seu banco de dados (database). Arrume um espaço na sua agenda para fazer um telefonema e então ligue para a pessoa. Se não der, mande ao menos um e-mail ou até mesmo um simpático cartão postal. Só não deixe o contato esfriar e morrer por falta de uma atitude sua.

Fonte: http://www.workshop.com.br/paginas/artigos/cartao_visita.htm

Comentarios

Estatisticas do CERT.br: Spam — totais 2006, 4o trimestre e mes de dezembro

Estão disponíveis em: http://www.cert.br/stats/spam/ as estatísticas referentes a reclamações de spam enviadas ao CERT.br em 2006, incluindo:

- os totais anuais agrupados (2006: janeiro a dezembro);
– o quarto trimestre de 2006 (2006: outubro a dezembro);
– o mês de dezembro de 2006.

O número total de emails processados no ano de 2006 foi superior a 3,4 milhões, com as reclamações concentrando-se nas categorias de Proxy Aberto e Envio de Spam.

O número total de emails processados no mês de dezembro e no quarto trimestre de 2006 foi superior a 241 mil e 803 mil, respectivamente, com as reclamações concentrando-se nas categorias de Proxy Aberto e Envio de Spam.

Foram observadas as seguintes variações no número de reclamações recebidas:

- decréscimo de 17,6% no mês de dezembro, comparado com o período anterior (novembro de 2006);
– decréscimo de 1,8% no quarto trimestre de 2006, comparado com o período anterior (terceiro trimestre de 2006);
– acréscimo de 41% no ano de 2006, comparado com o período anterior (ano de 2005);

 

Comentarios

Entendendo Trackbacks e Pingbacks

Não tenho dúvida que muitos blogueiros (de primeira ou outras viagens) se perguntem o que significa Trackback e Pingback. Eu mesmo, depois de muito tempo, só consegui encontrar a resposta hoje. E fiquei muito contente com a descoberta.

O sítio Contraditorium tem um simples e útil texto sobre o que tanto ansiávamos em saber. Entendendo Trackbacks e Pingbacks é o nome do texto (que eu repeti). Aproveite!

Comentarios

« Anteriores Next Page » Next Page »