sexta-feira, 13 de maio de 2011

Qual é o melhor banco de dados: Oracle, Mysql, MSAccess, ...

Comum seria dizer que não existe banco de dados melhor ou pior que o outro.

Os anos de convívio com estes verdadeiros mastondontes, repletos de configurações, lentos e tinhosos mostraram-nos algo inegável:

Fuja de bancos de dados caros e complexos.

Um dos que atende completamente a este axioma é o banco Oracle. Mesmo com uma equipe treinada, com constante monitoramento, o mesmo pode amanhecer em "halt". Sai do ar. A arquitetura de volumes físicos e virtuais é tão flexível, que ele "estica" e rompe. Um banco que movimenta um grande número de transações precisa, como todos os outros com menos transações de capacidade, manter parâmetros na memória do servidor. Não existe processamento sem memória, e não existe memória saudável sem um fornecimento constante de energia dentro de picos razoáveis de voltagem e de corrente elétrica.

Se entre estes picos de corrente houver uma grande frequência de transações, a chance de uma perda é muito grande, como a prática confirma em nossa instalações. E não adianta reduzir a carga do banco, pois o Oracle "gosta" de trabalhar é com carga pesada.

Bancos grandes estão sendo superados por novas técnicas e pelo hardware que já vem com funções embutidas que atendem muito bem às exigências de robustez e velocidade.

Um dos bancos recentes, que aguenta, em volume menor de transações, o "tranco" é o Mysql. Em 7 anos de operação de um banco de CMS (Gerenciadores de conteúdo para Web) reparamos o banco apenas 2 vezes. E olha que ele sofre 12 mil atualizações, pelo menos, ao dia de cada requisição registrada de clientes.

E para bancos menores, em Intranet, o Microsoft Access se sai muito bem. Alguns técnicos incautos, acostumados a ouvir opiniões de outros de capacidade duvidosa e pouca experiência, falam que este banco não se presta a centenas de milhares de registros. Evidentemente se esquecem, ou nunca se deram conta, de que no servidor Web o banco de dados utilizado se comporta como se servisse a uma aplicação monousuário. Neste contexto, o usuário anônimo do servidor é o único autorizado a ler e a gravar no banco.

Já manipulamos bancos Access, via Web, com 4 milhões de registros, numa média de 8000 transações só de entrada em Intranet, e o banco não apresentou defeito em Servidor Microsoft Windows 2003.

Utilizando corretamente um banco de dados

Todo banco de dados dá uma boa resposta, se bem utilizado. Em primeiro lugar, é preciso uma boa modelagem das tabelas SEM UMA NORMALIZAÇÃO EXCESSIVA pois a recuperação dos dados fica extremamente trabalhosa para o banco. Não use excesso de códigos que precisam de tabelas de apoio para serem traduzidos. Depois, faça as suas sentenças SQL de forma a recuperar somente o que for preciso. Utilize a ordenação em suas SQLs só quando for ABSOLUTAMENTE NECESSÁRIO. A ordenação pode ficar a cargo do javascript, muito mais eficiente, e feita no lado cliente. Pense duas vezes antes de utilizar os "famintos" campos BLOB. Uma boa Gestão de Conhecimento vai possibilitar a tipificação de eventos e situações de forma a evitar o preenchimento "aberto" demais dos campos, com frases despadronizadas e cujo conteúdo talvez não seja achado em uma busca.

Um bom lembrete:

Se você não está a par do que é Gestão de Conhecimento, nem comece a definir o esquema das tabelas de seu banco de dados.

Conclusão

Para Intranets, use bancos pouco pretensiosos, programas com cache e bem feitos. Para Internet, use Mysql. Para aplicações pesadas em redes dispersas em áreas geográficas, empresas com muitas filiais e escritórios de apoio, além de centros de desenvolvimento, use Oracle, mas contrate uma boa equipe de analistas de suporte 24 horas por 7 dias na semana.

sexta-feira, 6 de maio de 2011

Controle do time out

Para o correto gerenciamento dos recursos de um servidor Web (ISP), é preciso dimensionar com muita lógica e estudo o tempo de "time out" das aplicações.

O que é "time out" ?

Time out é o tempo após o qual a sessão na qual o usuário está, dentro de uma aplicação do servidor Web (IIS, Apache, Quick'n'easy, Chitami) expira, ou seja, ela cai e perde referências internas que sustentam a digitação ou operação do usuário.

Exemplo:

Você está preenchendo um formulário com informações para a a compra de um produto e demora demais. Quando vai olhar de novo para a tela do computador, ele exibe uma mensagem em inglês, ou informa de maneira clara que a página "expirou" e portanto você deve fazer tudo de novo.

Por que é preciso fazer isto ?

Se este controle de tempo não fosse feito, o servidor não suportaria tantas pessoas abrindo telas na Internet e deixando as mesmas abertas sem estar fazendo nada. Este tempo orça entre 10 e 20 minutos. Se uma pessoa não utiliza uma tela (não digita nada ou não mexe com o mouse) por 10 minutos, é porque a tela não lhe interessa mais. No caso do preenchimento de formulários, provavelmente a pessoa desistiu da compra ou de um cadastramento.

Controle pelo ASP

O controle pelo ASP é feito por intermédio das variáveis de Sessão (Session). O local predileto e adequado para iniciar a colocação de variáveis de sessão é a script chamada pela tela de login do sistema ou aplicação. Esta script recebe os dados do formulário de login (usuário e senha) e as trata:

<%

vUsuario = Request("Usuario") 
vSenha = Request("Senha")
Session("Usuario") = vUsuario      
%>

Os nomes dentro dos parênteses são os correspondentes "names" das tags de INPUT HTML da tela de login:

<FORM method="post" action="script de destino onde estará o código ASP">
Usuário:<INPUT type="text" name="Usuario">
Senha:<INPUT type="text" name="Senha">
</FORM>

A partir do processamento da script ASP, uma variável interna, invisível para todos os outros usuários que estiverem utilizando este sistema, armazenará o nome do usuário, e estará disponível para TODAS as páginas e scripts  chamadas por esta script.

Como testar se ocorreu o time out ?

No início das scripts chamadas por esta script e pelas demais, coloque o trecho:

<%
if Session("User") = "" then
Response.redirect "nome da script ou página HTML que corresponde à tela de login"
end if

%>

Desta forma, toda vez que uma script for chamada, vai ser feita a conferência da existência desta variável de Sessão (Session("Usuario")). Se ela estiver vazia, é porque perdeu o valor. E se perdeu o valor, é porque a sessão do usuário expirou.

sábado, 30 de abril de 2011

Bordas arredondadas com CSS3

Fazer bordas com CSS3 é muito fácil. Para Internet Explorer 8.0 (os de menor versão não oferecem tanta facilidade) é preciso ter o arquivo PIE.htc (baixe neste link) para definir o behaviour, como mostrado no código abaixo:


<head>
<style>
BODY { font: 12px Arial; }
P {
behavior: url(PIE.htc);
}
#ber {
color:red;
padding: 5px;
background:rgba(0, 255, 0, 0.7); /* Mozilla */
border:1px solid gray;
border-radius: 0.80em;
-pie-background:rgba(0, 255, 0, 0.7);/* For IE*/
width: 200px;
}


</style>
</head>
<body>
<P id="ber">Eu tenho borda arredondada</P>
</body>

Como declaramos em STYLE que os parágrafos tem o comportamento definido pelo PIE.htc, não será preciso fazer esta declaração a cada vez que quisermos um parágrafo modificado. Os outros browsers não precisam do PIE.htc.

O resultado na tela é:

Cor de fundo

Definimos a cor de fundo utilizando a cláusula rgba do CSS3, mas para isto o background do estilo precisa ser declarado como -pie-background, pois o Internet Explorer 8.0 ainda não dá suporte à cláusula rgba.

quarta-feira, 27 de abril de 2011

HTML5 e CSS3

A Web está entrando em mais uma etapa de evolução estética.

É muito cansativo e dispendioso investir em softwares que acrescentem beleza e usabilidade aos sites. Os softwares mais conhecidos como Photoshop, Flash, Fireworks e congêneres são caros. A manutenção e  renovação das licenças é cansativa. Se for preciso reinstalar e aproveitar a licença, é uma burocracia estressante.

A solução é procurar soluções as mais próximas da linguagem base da Web: o HTML e as folhas de estilo CSS, além das scripts de apoio Javascript. Mas este trio não fornecia, até a pouco tempo, uma opção de apresentação pelo menos "médio artística". Mas o padrão veio sendo melhorado, pois os micros clientes estão cada vez mais rápidos, com capacidade gráfica muito alta.

O HTML5

Agora que a linguagem HTML preenche os requisitos de formação de uma teia de conhecimento (Web) no que se refere ao estabelecimento de múltiplas vias de consulta, chegou a hora de resolver o avanço do aspecto estético. E o HTML5 surgiu para resolver este problema, fornecendo, em conjunto com o CSS3:


  • Cantos arredondados
  • Desenhos (canvas)
  • Sombras
  • Transparências


Isto entre algumas coisas.

O Internet Explorer

Para quem vai ter que continuar no Windows XP, ou devido ao pouco poder de seu equipamento, ou devido às amarras de sua licença de software, a opção de browser é Firefox, Flock ou Chrome. Estes suportam o HTML5. E a Microsoft, que sempre fica atrás, só oferece o Internet Explorer 8.0, para o qual já se anunciou que não será feito nenhum patch ou upgrade.

Mas a comunidade de informática é extremamente ativa e capaz. Tem gente que consegue dar nó em pingo de água. Surgiu o PIE, um patch do tipo página "htc", com acréscimos que conseguem acrescentar aos estilos as capacidades do CSS3. Ele pode ser baixado da internet no endereço https://github.com/lojjic/PIE/downloads (este endereço pode mudar devido à maleabilidade do ambiente Web).

Em outros posts ensinaremos o programador e designer a utilizar esta funcionalidade.

terça-feira, 26 de abril de 2011

O servidor Quick'n'easy

A simplicidade de certos servidores, depois que a comunidade livre disponibilizou fontes e abriu grupos de discussão, está simplesmente nos assombrando. Primeiro foi o Tiny Web com os seus 70 Kbytes, capaz de estabelecer conexões http. Agora este Quick'n'easy.

Contido em um arquivo de 374 Kbytes apenas, este software interpreta ASP, inclusive a parte de conexão com bancos de dados, permite os "includes" de códigos e espaço de variáveis de aplicação (application) e sessão (session).

Os testes com diretórios oriundos do IIS, sem modificação nenhuma, funcionaram 100%.

Outra coisa que impressionou é a sua compatibilidade com a adição de qualquer interpretador CGI ou fastCGI como alguns são denominados. A configuração é milhões de vezes mais fácil que o IIS, afinal recomendamos o software em questão para desenvolvimento ou produção em pequenas redes.

Gerenciador


O gerenciador é extremamente simples, fornece estatísticas como servidores "maduros" e consagrados, filtro de IP e congêneres.

Configuração do PHP

Como é uma linguagem de scripts muito "querida" entre os bons desenvolvedores, a configuração do PHP merece destaque, e é de uma simplicidade franciscana:


O caminho do executável é que pode variar, de acordo com o que você digitar durante a instalação do PHP.

Realmente são 374 Kbytes que resolvem.

JSP ou PHP são realmente melhores que ASP ?

Prezados leitores, após 20 anos de instalação de IIS, PHPTriad, Jakarta e outras variantes, acrescidos de testes com formulários de entrada de dados com conexão preferencialmente em ODBC, com bancos Oracle, Mysql, Msaccess, SQLite e HSQLdb, podemos afirmar com absoluta certeza:

O ASP (até sem ser o .NET) é o mais seguro, produtivo e barato para se trabalhar.

O papel no ASP nas aplicações WEB de três camadas deve ser, sempre, o de coletar os dados oriundos da conexão com o banco de dados. Desta forma, ele trabalha muito bem. Ele também é eficiente, aliás, o mais eficiente na formulação de templates para apresentação dos dados, aliado à simplicidade dos seus arrays (mesmo sendo tão primitivos).

O médio formalismo do ASP.NET já dificulta a compreensão pela nova geração de programadores, que, pelo uso excessivo de ferramentas de modelagem a partir de templates já se afastou demasiadamente do exercício saudável de descer ao código e incrementar características.

O JSP é realmente para quem acompanhou o progresso do SDK do Java desde os seus primórdios, domina o DOS ou Bourne Shell e as entranhas de arquiteturas de memória virtual e outras coisas afins.

O poder do ASP é multiplicado infinitas vezes pelo jQuery - framework poderosa - deixando para este as críticas de campo, modificações antes da submissão, formatação, simulação de cache, autenticação e até leitura de algumas informações do banco de dados via AJAX. No nível Javascript está a verdadeira utilidade do Java, e não na leitura de banco de dados campo a campo.

O investimento em JSP e suas plataformas não compensa, além do mais em um mercado cuja mão de obra é muito rotativa. Já tivemos oportunidade de observar uns quatro casos de pequenas empresas que iniciaram projetos para plataformas Java (J2EE e parentes). Até a definição de classes, acessos, tudo muito bonito em modeladores UML foi tudo bem. Mas na hora da prática, da mão de obra e da manutenção, a solução ou foi "quarterizar" o projeto, ou "regredir" para ASP.NET.

A plataforma Linux

O Linux é excelente. No entanto, exige profissionais capazes, geralmente mais velhos, que acompanharam a evolução das versões do Kernel. E estes profissionais são tão bons, que sua ascensão na carreira acaba conduzindo-os para Universidades e projetos em empresas de porte. Resultado: projetos são interrompidos, clientes tem seu sistema adiado e empresas de serviços tem que ficar garimpando gente.