De February, 2007

Estruturando o código CSS

De Tableless.com.br – Web Standards com Arroz e Feijão por diego@tableless.com.br (Tableless.com.br)

Este era um assunto que eu queria falar aqui a muito tempo. Vi este link no URL Sinistras e me animei a escrever sobre.

Estruturar o código CSS de uma maneira simples e intuitiva ajuda muito no desenvolvimento. Já vi várias pessoas fazendo códigos mirabolantes e depois perdendo tempo porque havia problemas de conflito no CSS.

Vou falar aqui como eu monto meu CSS ou como pelo menos eu tento montá-lo. Estes hábitos são algumas coisas que me torna produtivo quando preciso executar alguma modificação no layout.

Formatando de fora pra dentro

Muita gente não tem uma regra de onde começa a formatar e de onde termina. Isso ajuda a organizar seu código CSS de uma maneira tão lógica quanto uma estrutura HTML.

Formate seu código começando dos elementos mais amplos para os mais específicos. Comece pela tag HTML (se tiver formatação para ela), depois passe para o BODY, logo após para o div que envolve todo o site (eu costumo chamar de #geral) e assim para os elementos que dividem as seções do site (normalmente: cabecalho, coluna da esquerda, colunas da direita, colunas do meio, rodape etc). Logo após, passe para os elementos que ficam dentro destas divisões e formate-os individualmente.

Veja o seguinte código HTML:

<html>

<body>

<div id=”geral”>

<div id=”topo”>

<h1><a href=”#”>Logo do Site</a></h1>

<div class=”menu”>

<ul>

<li><a href=”#”>Home</a></li>

<li><a href=”#”>Produtos</a></li>

<li><a href=”#”>Serviços</a></li>

<li><a href=”#”>Contato</a></li>

</ul>

</div>

</div>

</div>

</body>

</html>

Código CSS:

html {…}

body {…}

/* #topo – Div que contém o LOGO, #menu e a #busca */

div#topo {…}

div#topo h1 {…}

div#topo h1 a {…}

/* #menu – Div do menu principal do site que fica dentro do div #topo */

div#topo div#menu {…}

div#topo div#menu ul {…}

div#topo div#menu ul li {…}

div#topo div#menu ul li a {…}

Tente seguir a estrutura HTML como referência. Mantendo essa organização, fica simples encontrar os elementos no código CSS.

Coloque informação importante nos comentários

Comentar qualquer código é sempre uma boa pedida. Em vez de fazer comentários sucintos e que não dizem nada além do nome do div, faça comentários que contenham informação sobre aquela parte específica do layout.

/* #topo – Div que contém LOGO, #menu e #busca – Elemento Pai é o #geral */

Isso se torna uma referência para profissionais que farão modificações posteriores em seu código.

Caminhos completos em seletores

Sempre use os caminhos inteiros nos seletores. Isso evita erros de conflito no arquivo CSS. Sendo específico você mantém corretamente as heranças dos elementos e consegue ter mais controle sobre seu código.

div#topo div#menu ul li a {…}

Ids e classes, use com moderação

Já vi muita gente fazendo isso:

<html>

<body>

<div class=”topo”>

<div class=”menu”>

<ul class=”lista”>

<li class=”item”><a class=”linkdoitem” href=”#”>Home</a></li>

<li class=”item”><a class=”linkdoitem” href=”#”>Produtos</a></li>

<li class=”item”><a class=”linkdoitem” href=”#”>Serviços</a></li>

<li class=”item”><a class=”linkdoitem” href=”#”>Contato</a></li>

</ul>

</div>

</div>

</body>

</html>

Essa maneira torna o código HTML muito complicado e seu código fica maior sem necessidade. Quando você coloca classes ou ids nos elementos “pais”, você controla seus “filhos” sem problema algum. Não coloque classes ou ids se você não tiver uma necessidade especifica.

Identifique o Body

Muitas vezes o designer precisa que alguns detalhes diferentes em diferentes páginas do site. Para facilitar sua vida, coloque uma identificação na tag BODY. Assim você pode mudar os detalhes que precisar de cada página individualmente.

<html>

<body id=”home”>

<div class=”topo”>

<div class=”menu”>

<ul class=”lista”>

<li class=”item”><a class=”linkdoitem” href=”#”>Home</a></li>

<li class=”item”><a class=”linkdoitem” href=”#”>Produtos</a></li>

<li class=”item”><a class=”linkdoitem” href=”#”>Serviços</a></li>

<li class=”item”><a class=”linkdoitem” href=”#”>Contato</a></li>

</ul>

</div>

</div>

</body>

</html>

body#home div#topo {…}

Organize as propriedades

Existem diversas propriedades do CSS e cada uma delas modifica uma característica dos elementos. Há propriedades que formatam o visual do elemento (display, border, background, color, font, text etc…), há outras propriedades que modificam medidas e distâncias (margin, padding, width, height, min-width, min-height etc…) e outras propriedades que posicionam os elementos (float, position).

Eu organizo primeiro propriedades controlam o visual, depois as propriedades de distâncias e medidas e logo após propriedades de posicionamento.

/* #menu – Div do menu principal do site que fica dentro do div #topo */

div#topo div#menu ul li a {

font: 11px verdana, arial, tahoma, sans-serif;

color: white;

text-align: right;

border: 1px solid green;

background: orange;

display:block;

margin: 10px 20px 30px 40px;

padding: 0;

width: 300px;

height: 400px;

float:right;

}

A única dificuldade que tenho é de aplicar essas sugestões. A pressa me vence sempre e muitas vezes eu me “esqueço” de aplicar uma dessas sugestões. O código CSS é a base do site inteiro, ele precisa ter uma bela organização, ser legível. Ter controle sobre o arquivo CSS é tudo. Você fica muito mais produtivo. Mas tem que se habituar, se acostumar com essas novas regrinhas.

Comentario (1)

Volume de spam aumenta e pode chegar a 90% dos e-mails

China e Coréia do Sul são responsáveis pelo salto de 30% nos níveis de mensagens não solicitadas na semana passada, de acordo com relatório

Se a nova retomada no volume de spams enviados se mantiver, até o fim do ano 90% de todos os e-mails será lixo eletrônico. É o que afirma um relatório produzido pela Marshal, empresa australiana especializada em segurança da informação.

Segundo o estudo, China e Coréia do Sul são responsáveis pelo aumento de 30% nos níveis de spam, registrado semana passada.

A fornecedora afirma que o volume de spam está em seu maior nível: aumentou 280% desde outubro do ano passado e hoje, representa 85% dos e-mails.

Fonte: http://www.imasters.com.br/artigo/5600

Comentarios

Como funciona o sistema de registro de domínios

A ICANN é uma organização não governamental sem fins lucrativos que congrega diversas entidades. Foi criada através de um acordo político e visa fomentar o crescimento e a estabilidade da rede.

Por Ricardo Vaz Monteiro

Em 1998 o presidente Bill Clinton reconheceu o caráter internacional da internet e transferiu a responsabilidade sobre o registro de domínios da IANA (Internet Assigned Names Authority), órgão do governo americano, para uma organização não governamental sem fins lucrativos.

Esta organização é a ICANN, Internet Corporation for Assigned Names and Numbers, criada através de um acordo político que congrega diversas entidades: IANA, ISOC (Internet Society), IAB (Internet Architecture Board), a UIT (Union International Telecommunication), OMPI (Organisation Mondiale de la Propriété Intellectuelle) e a INTA (International Trademark Association).

O objetivo da ICANN é o de fomentar o crescimento da rede, manter sua estabilidade e garantir a resolução única dos endereços.

A ICANN é subdividida em cinco organizações:

ASO (The Address Supporting Organization). Comitê responsável pela distribuição de endereços IPs no mundo.

GAC (Governmental Advisory Committee). Comitê que assessora a ICANN nas questões governamentais ligadas a difusão da internet em cada país.

ALAC (At-Large Advisory Committee) – Fórum responsável pela discussão dos aspectos relevantes aos usuários da Internet.

gNSO (Generic Names Supporting Organization) – Organização responsável pela coordenação da reserva e resolução de todos os domínio genéricos (Generic Top Level Domain ou gTLD), ou seja, domínios terminados em COM, .NET, .ORG, .AERO, .BIZ, .COOP, .INFO, .MUSEUM, .NAME, .PRO

Dica: é fácil identificar os domínios gTLD: todos têm três ou mais dígitos no final.

Cada nome de domínio é único e deve cair no mesmo conteúdo sempre (ser resolvido de forma única). Para que isso aconteça, o comitê gNSO escolhe uma única empresa para centralizar e ser responsável pelo banco de dados de uma determinada extensão.

Essas empresas são chamadas de Registries. Por exemplo, todos os domínios com final .COM estão em um único banco de dados do Registry .COM, que no caso é a empresa VeriSign. Os domínios .ORG, por sua vez, estão em um único banco de dados centralizado gerenciado pela empresa PIR.

A ICANN também definiu que os Registries de domínios gTLD não podem vender o registro do domínio diretamente para os clientes finais; os Registries são obrigados a vender através de distribuidores credenciados chamados Registrars.

A lista de todos os Registries e as empresas credenciadas como Registrars no mundo pode ser encontrada no site da Internic.

A empresa brasileira Nomer.com é credenciada pela ICANN para atuar como Registrar na reserva de domínios gTLD (.COM, .NET, .ORG e etc…) na América Latina. Outras empresas também oferecem a reserva destes domínios nesta região e atuam como revendedores (Resellers) de algum Registrar.

ccNSO (Country Code Names Supporting Organization) – É a organização que gerencia as empresas e entidades responsáveis pela reserva dos domínios nos países. Cada país pode ter seu próprio sistema de reserva de domínios chamado de ccTLD (Country Code Top Level Domain). Para identificar que um domínio é ccTLD e pertence a um determinado país, o domínio tem apenas dois dígitos no final, como .BR para Brasil e .JP para Japão, por exemplo.

Além do além do .BR (Brasil), alguns ccTLDs mais conhecidos são .DE (Alemanha), .UK (Reino Unido), .FR (França), .MX (México), .PT (Portugal), .IT (Itália).

A ICANN delega em cada país a um Registry a responsabilidade pela manutenção da base de dados e criação da estrutura de venda de domínios. No Brasil, por exemplo, o Registry dos domínios ccTLD, terminados em .BR, é o Registro.br.

No caso do Registro.br não existe a figura do Registrar, ou seja, o Registro.br aceita solicitações de registro diretamente dos clientes finais, porém exige que um DNS seja fornecido em um prazo máximo de 15 dias após a solicitação da reserva. Caso você tenha um DNS, recomendamos que vá diretamente ao Registro. br, caso contrário, não. O DNS é fornecido pela sua empresa de hospedagem (host) ou por empresas especializadas no serviço de reserva de domínio.

Apesar da ICANN ser a principal entidade responsável pela infra-estrutura da internet, ela não tem a responsabilidade definida em seus estatutos para combater spam, combater a fraude online ou discutir a governança da internet. Seu papel é o de assegurar a estrutura de resolução de nomes, o que abre caminho para que outras organizações, coordenadas pelas Nações Unidas ou não, possam se ocupar de necessidades que a rede agora apresenta. [Webinsider]

Fonte:
http://webinsider.uol.com.br/index.php/2007/02/15/como-funciona-o-sistema-de-registro-de-dominios/

Comentario (1)

Introdução

Esta é uma introdução ao curso de ASP (Active Server Pages), e apresenta conceitos teóricos. Isso não quer dizer, de forma alguma, que seja menos importante. Farei o possível para que qualquer parte teórica desse curso seja interessante, mas é importante também que o aluno invista sua própria “dose” de interesse.

Ao contrário do que muitos imaginam, ASP não é uma linguagem, mas uma tecnologia, e uma tecnologia que permite a construção de SITES DINÂMICOS, baseada em scripts executados no servidor. Mas, o que vem a ser, no fim das contas, um site dinâmico? Se um usuário faz um login em sua conta gratuita no ASPECTO.Net, verá a lista de arquivos que já enviou para o servidor. Cada usuário vê sua própria lista de arquivos, porque essa lista é mostrada de acordo com um critério. Esta é, basicamente, a característica de um site dinâmico: o conteúdo de uma página pode variar, dependendo de um CRITÉRIO. É o caso, ainda, de uma consulta a um extrato bancário. Existe uma número de agência e um número de conta. Uma vez que a senha seja validada, somente os registros que atendam ao critério AGÊNCIA e CONTA especificadas serão mostrados. E o dígito verificador, para que serviria? Por que não fazer uma busca diretamente no número da agência e conta? Por uma razão ao mesmo tempo simples e fundamental: evitar uma busca desnecessária. Se antes de submeter os dados à página que faz a busca propriamente dita ele puder verificar se os dados são válidos uma tarefa importante será evitada, e o servidor será poupado. Se o teste de validação do dígito verificador (também conhecido como DV) da agência ou da conta constatar que qualquer um dos dois é inválido, nem haverá necessidade de fazer uma busca, que certamente retornaria vazia. Devemos levar em conta que são milhares, centenas de milhares, ou mesmo milhões de contas bancárias. Tudo que desenvolvedor puder fazer para minimizar o trabalho dos servidores será importante. Veremos interessantes exemplos de otimização no módulo avançado, em Bancos de Dados.

Vejamos agora, o básico do funcionamento de uma página HTML e de uma página ASP.

HTML

<HTML>
<HEAD>
<TITLE>Exemplo de página HTML – teste1.html
</TITLE>
</HEAD>
<BODY>
Este é apenas um exemplo de página HTML
<input type=”button” value=”Fechar” onClick=”javascript:window.close()” />
</BODY>
</HTML>

Quando um internauta digita uma URL, a primeira tarefa executada (cujo processo não faz parte do curso) é encontrar o servidor onde está o domínio a que a página pertence. Uma vez encontrado, considerando que é uma página HTML, o servidor envia para o navegador do internauta o conteúdo código HTML da página, que o interpretará e executará. Vamos considerar o código abaixo, que carrega uma página HTM:

Clique aqui para ver a execução do código acima. Se você clicar na página com o botão direito do mouse e escolher a opção “Exibir código fonte” você verá que o código é exatamente o mostrado acima.

ASP

Se a página procurada for uma página ASP o servidor precisa executar um passo a mais, que é PROCESSAR as instruções do código. Nesse caso os passos até a visualização da página pelo requisitante serão os seguintes:

1) Encontrar a página;
2) Processar as instruções ASP;
3) Enviar o código HTML gerado;
4) O código HTML é interpretado e executado pelo navegador

Vejamos um exemplo:

<HTML>
<HEAD>
<TITLE>Exemplo de página ASP – asp_01.asp</TITLE>
</HEAD>
<BODY>
Este é apenas um exemplo de página ASP, executado em<b>
<%
Response.Write now()
%>
</b> (horário do servidor)
<input type=”button” onClick=”javascript:window.close()” value=”Fechar” />
</BODY>
</HTML>

Note que os símbolos <% e %> delimitam o início e o fim de um script ASP. O efeito seria o mesmo se nosso código fosse..
<SCRIPT LANGUAGE=VBScript RUNAT=SERVER>
    Response.Write now()
</SCRIPT>

Com “RUNAT=SERVER” você informa ao servidor que aquele SCRIPT deve ser processado por ele e apenas o código HTML gerado deve ser enviado ao browser do cliente. A função NOW() retorna a data & hora corrente. Veremos outros detalhes mais adiante, no próximo tópico.

Clique aqui para ver a execução do código acima.

Desta vez, se você clicar na página como botão direito e observar o código verá que o hora é mostrada como parte do código HTML. Se você fizer vários “refreshes” a hora será diferente a cada vez, e a cada vez haverá um código HTML diferente. Essa é a mágica da criação de SITES DINÂMICOS. A cada requisição o servidor executou a instrução ASP e o resultado foi inserido no código HTML enviado ao navegador que fez a requisição. As instruções ASP propriamente ditas (como a função now()) serão vistas com calma. Este foi em exemplo que teve por objetivo mostrar o processo de execução de páginas ASP.

Comentarios

Apresentação do Curso de ASP

Estou iniciando a publicação, aqui, de um curso completo de ASP, totalmente gratuito. O curso obedecerá, a princípio à “grade programática” abaixo, mas sujeito a mudanças que eu, por algum motivo, considerar necessária. Por “necessidade” entenda-se “melhor forma”. Nenhuma mudança será feita para esconder o “pulo do gato” ou omitir alguma informação que possa ser interessante para a maioria. A idéia é compartilhar conhecimento e os comentários poderão ser utilizados para dúvidas.

O planejado é publicar um tópico por semana, mas isso também poderá ser alterado por fatores como a disponibilidade de tempo. Segue, então, o que chamei de “grade programática”.

  1. Introdução
  2. Scripts: Servidor x Cliente
  3. Variáveis I
  4. Variáveis II
  5. Variáveis III: Cálculos com datas
  6. Variáveis IV
  7. Variáveis V: Operadores
  8. Estruturas de Controle I
  9. Estruturas de Controle II
  10. Procedures
  11. Funções
  12. Objetos I: Request
  13. Objetos II: Response
  14. Formulários I: GET x POST
  15. Formulários II
  16. Formulários III
  17. Application
  18. Session
  19. Cookies
  20. Objetos III: Scripting
  21. Objetos IV: Scripting.FileSystemObject
  22. Banco de Dados I: Modelagem
  23. Banco de Dados II: Conexões
  24. Banco de Dados III: Noções de SQL
  25. Banco de Dados IV: RecordSets
  26. Banco de Dados V: Paginação
  27. Aplicações I: Uso do GLOBAL.ASA
  28. Aplicações II: Manutenção de Cadastros
  29. Aplicações III: Acesso Restrito
  30. Aplicações IV: Galeria de Fotos
  31. Aplicações V: Livro de Visitas com Admin
  32. Aplicações VI: Notícias
  33. Aplicações VII: Upload
  34. Aplicações VII: Envio de NewsLetters
  35. Aplicações VII: Envio de NewsLetters
  36. Aplicações VII: Envio de NewsLetters

Com o passar do tempo, e à medida em que os capítulos forem publicados, os ítens acima serão transformados em links.

Comentario (1)

« Anteriores Next Page » Next Page »