Voce esta aqui: Home Matérias Artigos

Joomla Clube

O que é AJAX?

E-mail Imprimir PDF
AJAX (acrônimo em língua inglesa de Asynchronous Javascript And XML) é o uso sistemático de Javascript e XML (e derivados) para tornar o navegador mais interativo com o usuário, utilizando-se de solicitações assíncronas de informações. AJAX não é somente um novo modelo, é também uma iniciativa na construção de aplicações web mais dinâmicas e criativas. AJAX não é uma tecnologia, são realmente várias tecnologias trabalhando juntas, cada uma fazendo sua parte, oferecendo novas funcionalidades. AJAX incorpora em seu modelo:
  • Apresentação baseada em padrões, usando XHTML e CSS;
  • Exposição e interação dinâmica usando o DOM;
  • Intercâmbio e manipulação de dados usando XML e XSLT;
  • Recuperação assíncrona de dados usando o objeto XMLHttpRequest;
  • e JavaScript unindo todas elas em conjunto.

O modelo clássico de aplicação web trabalha assim: A maioria das ações do usuário na interface dispara uma solicitação HTTP para o servidor web. O servidor processa algo — recuperando dados, realizando cálculos, conversando com vários sistemas legados — e então retorna uma página HTML para o cliente. É um modelo adaptado do uso original da Web como um agente de hipertexto, porém o que faz a Web boa para hipertexto não necessariamente faz ela boa para aplicações de software.

Esta aproximação possui muito dos sentidos técnicos, mas não faz tudo que um usuário experiente poderia fazer. Enquanto o servidor está fazendo seu trabalho, o que o usuário estará fazendo? O que é certo, esperando. E a cada etapa em uma tarefa, o usuário aguarda mais uma vez.

Obviamente, se nós estivéssemos projetando a Web a partir do zero para aplicações, não faríamos com que os usuários esperassem em vão. Uma vez que a interface está carregada, por que a interação do usuário deveria parar a cada vez que a aplicação precisasse de algo do servidor? Na realidade, por que o usuário deveria ver a aplicação ir ao servidor toda vez?

A maior vantagem das aplicações AJAX é que elas rodam no próprio navegador web. Então, para estar hábil a executar aplicações AJAX, bastar possuir algum dos navegadores modernos, ou seja, lançados após 2001. São eles: Mozilla Firefox, Internet Explorer 5+, Opera, Konqueror e Safari.

 

Os quatro princípios de Ajax

O modelo clássico de aplicação baseado em páginas é amarrado em muitas das estruturas que nós usamos, e também em nossas maneiras de pensar. Vamos fazer uma análise de alguns minutos para descobrir o que são estas suposições essenciais e como necessitamos repensar estas idéias para entendermos Ajax suficientemente.

O navegador hospeda uma aplicação, e não conteúdo

Em uma aplicação web clássica baseada em páginas, o navegador é efetivamente um terminal burro. Ele não sabe nada sobre o que o usuário está realmente realizando em suas ações conseqüentes. Todas essas informações são retidas no servidor web, tipicamente na sessão do usuário. Sessões de usuários no lado servidor são comuns atualmente. Se você está trabalhando em PHP, Java, .NET, Ruby on Rails ou outra linguagem usada para aplicações web, a sessão no lado servidor faz parte da API padrão, assim como controle de solicitações, respostas, e tipos de conteúdo (MIME). A figura abaixo ilustra o ciclo de vida típico de uma aplicação web clássica.

 

 

 

Quando o usuário entra ou de outra maneira inicia uma sessão, vários objetos são criados no lado servidor, representando, por exemplo, a cesta de compras e as credenciais de cliente, isso em um site de comércio eletrônico. Ao mesmo tempo, a página inicial é servida ao navegador, em um fluxo de marcações HTML que mistura um anúncio de apresentação padrão e dados específicos do usuário juntos com o conteúdo, como por exemplo, uma lista de itens exibidos recentemente.

Toda vez que o usuário interage com o site, um outro documento é enviado para o navegador, contendo a mesma mistura de cabeçalhos e dados. O navegador retira o documento anterior e exibe o novo, porque ele não sabe que o outro documento produz um resultado muito semelhante.

Quando o usuário efetua a saída ou fecha o navegador, a aplicação sai e a sessão é destruída. Qualquer informação que o usuário necessite ver na próxima vez que ele entrar terá que ser passada para a camada de persistência de dados em cada visita. Já em uma aplicação Ajax, parte da lógica da aplicação é movida para o navegador, como a figura abaixo ilustra.

 

 

 

Neste novo cenário, quando o usuário entra, um documento mais complexo é entregue ao navegador, uma grande proporção do qual é código JavaScript. Este documento permanecerá com o usuário por toda a sessão, ainda que ele resolva provavelmente alterar sua aparência consideravelmente, enquanto o usuário está interagindo com ele. Ele sabe como responder às informações inseridas pelo usuário e é capaz de decidir se manipula a entrada do usuário ele mesmo ou se passa uma solicitação para o servidor web (o qual tem acesso ao banco de dados do sistema e outros recursos), ou ainda, se faz uma combinação de ambos.

Ele também pode armazenar o estado, porque o documento continua persistindo sobre toda a sessão do usuário. Por exemplo, o conteúdo de uma cesta de compras pode ser armazenado no navegador, em vez de ser armazenado na sessão do servidor.

O servidor fornece dados, e não conteúdo

Como observamos, uma aplicação web clássica oferece a mesma mistura de alegorias, conteúdos e dados em todos os passos. Quando nosso usuário adiciona um item na cesta de compras, tudo que precisamos realmente é responder com o valor atualizado da cesta ou informar se alguma coisa deu errado. Como ilustrado na figura logo abaixo, isto será uma parte muito pequena de todo o documento vivo.

 

 

Um carrinho de compra baseado em Ajax pode comportar-se de forma mais inteligente, por meio de remessas de solicitações assíncronas ao servidor. O cabeçalho, o histórico de navegação, e outras características do layout da página estão todas carregadas, portanto o servidor necessita enviar de volta somente os dados relevantes.

Uma aplicação Ajax poderia fazer isto de vários modos, como por exemplo, devolver um fragmento de JavaScript, um fluxo de texto simples, ou um pequeno documento XML. Nós mostraremos em detalhes as vantagens e desvantagens de cada um, mais a frente. É suficiente dizer por agora que qualquer um destes formatos será muito menor que a misturada de informações devolvida pela aplicação web clássica.

Em uma aplicação Ajax, o tráfego tem sua maior intensidade no início, com um largo e complexo cliente sendo entregue em uma única explosão, quando o usuário entra. As comunicações subseqüentes com o servidor são muito mais eficientes, de qualquer forma. Para uma aplicação breve, o tráfego cumulativo pode ser menor em uma aplicação de página web convencional. Mas conforme o tamanho médio do tempo de interação aumentar, o custo de largura de banda da aplicação Ajax se torna menor do que sua aplicação clássica equivalente.

[editar] A interação do usuário com a aplicação pode ser flexível e contínua

Um navegador web oferece duas maneiras de enviar entradas de dados para um outro computador: com os hyperlinks e formulários HTML.

Os hyperlinks podem ser carregados com parâmetros CGI (Common Gateway Interface – Interface de Comunicação Comum) apontando para páginas dinâmicas ou servlets. Eles podem estar vinculados com imagens e folhas de estilo (CSS) para oferecer uma pequena melhoria na interface, como por exemplo, definir efeitos quando o mouse estiver sobre eles.

Os controles de formulário oferecem um subconjunto básico de componentes padrões de interface com o usuário: caixas de texto, caixas de checagem e botões de rádio, além de listas de seleção. Entretanto estes controles não são suficientes. Não existem controles de seleção em árvores, grades para edição, ou caixas de combinação. Os formulários, assim como os hyperlinks, apontam para URLs resididas no servidor.

Alternativamente, os hyperlinks e os controles de formulário podem ser apontados para funções JavaScript. Isto é uma técnica comum em páginas web para prover uma validação de formulário rudimentar em JavaScript, verificando por campos vazios, valores fora de intervalo, e assim por diante, antes de submeter os dados para o servidor. Estas funções JavaScript existem somente enquanto a própria página existe e é substituída quando a página efetuar o seu envio.

Enquanto a página está sendo enviada, o usuário aguarda a sua resposta. A página anterior pode ainda estar visível por algum tempo, e o navegador pode até permitir que o usuário clique em qualquer um dos links visíveis, mas se assim for feito, produzirá resultados imprevisíveis e até entornar em uma confusão com a sessão no servidor. O usuário está normalmente aguardando a página ser atualizada que, frequentemente, possuem quase que as mesmas informações que lhes foram apanhadas instantes atrás. Adicionando um par de calças à cesta de compras não é razoável modificar as categorias em um nível acima por “roupas masculinas”, “roupas femininas”, “infantis” e “acessórios”.

Voltemos ao exemplo do carrinho de compras novamente. Devido ao fato de que nosso carrinho de compras em Ajax pode enviar dados assincronamente, os usuários podem soltar os objetos dentro dele tão rápido quanto eles podem clicar. Se o código de nosso carrinho no lado cliente for robusto, ele tratará esta tarefa facilmente, e os usuários podem continuar com o que eles estão fazendo.

É claro que não existe nenhum carrinho para colocarmos as coisas, somente um objeto em sessão no servidor. Mas os usuários não querem saber sobre objetos de sessão enquanto estão fazendo compras, e a metáfora do carrinho provê uma descrição do mundo real mais confortável do que está acontecendo. Troca de contextos entre a metáfora e o acesso direto ao computador é uma distração para usuários. Aguardar uma página ser atualizada levará o usuário à realidade de estar sentado em um computador por um curto tempo, e nossa implementação em Ajax evita que isto ocorra. Fazer compras é uma atividade transitória, mas se considerarmos um domínio de negócios diferente, por exemplo, um cenário de assistência e atendimento intensivo ou uma tarefa de planejamento complexa, então o custo de interrupção da seqüência de trabalho em alguns poucos segundos, com uma atualização de página, é algo inviável.

A segunda vantagem de Ajax é que podemos associar eventos a um maior número de ações do usuário. Os conceitos mais sofisticados de interface com o usuário, assim como “arrastar e soltar”, se tornam praticáveis, trazendo as experiências dessas interfaces em pé de igualdade com os controles de aplicações desktop. Da perspectiva de usabilidade, esta liberdade não é importante somente porque ela permite exercer nossa imaginação, mas porque ela nos permite combinar a interação do usuário e as solicitações ao servidor de maneira mais completa.

Para comunicar com o servidor em uma aplicação web clássica, necessitamos clicar em um hyperlink ou submeter um formulário, e então aguardar. No entanto, este método interrompe a interação com o usuário. Em contraste, a possibilidade de se comunicar com o servidor em resposta a um movimento ou arraste do mouse, ou até quando digitamos, habilita o servidor a trabalhar juntamente com o usuário. Google Suggest é um exemplo muito simples e efetivo disto: responder às teclas pressionadas enquanto ele digita dentro da caixa de pesquisa, e então, comunicar com o servidor para recuperar e exibir uma lista de possíveis finalizações para as expressões, baseada nas pesquisas feitas por outros usuários do mecanismo de busca em todo o mundo. Aqui demonstraremos uma simples implementação de um serviço similar.

[editar] Real codificação requer disciplina

Neste momento, as clássicas aplicações web fazem uso de JavaScript em certas ocasiões, para adicionar características avançadas e exageradas de um programa, agregando-as nas páginas. O modelo baseado em páginas previne qualquer uma destas melhorias que consista em um atraso longo demais, o qual limita as utilidades para as quais elas podem ser oferecidas. Isto fez com que JavaScript recebesse injustamente, uma reputação de algo banal – por má sorte da linguagem – e não sendo bem vista pelos desenvolvedores sérios.

Codificar uma aplicação Ajax é algo completamente diferente. O código que você fornece quando os usuários iniciam a aplicação deve executar até que eles encerrem-na, sem interrupção, sem diminuição de velocidade, e sem produção de escapes de memória. Se estivermos mirando no mercado de aplicações poderosas, então temos em vista muitas horas de intenso uso. Para atingirmos este objetivo, devemos escrever códigos de alto-desempenho, e manuteníveis, usando a mesma disciplina e entendimento que é aplicado com sucesso às camadas do servidor.

A base de código será tipicamente mais ampla que qualquer código escrito para uma aplicação web clássica. Boas práticas na construção da base de código se tornam muito importante. O código deve tornar-se, de preferência, responsabilidade de uma equipe do que apenas um indivíduo, criando edições de manutenibilidade, separações de interesses, e estilos e padrões de codificação comum. Uma aplicação Ajax, portanto, é uma porção de código funcionalmente complexa que comunica eficientemente com o servidor enquanto o usuário continua com seu trabalho. Ela é claramente uma descendência da aplicação clássica baseada em páginas, mas a similaridade não é mais forte do que entre um cavalinho de madeira e uma moderna bicicleta de passeio. Sustentando essas diferenças em mente nos ajudará a criar aplicações web verdadeiramente convincentes.

 

Este texto foi traduzido de Ajax: A New Approach to Web Applications

 

PageRank - O que é ?

E-mail Imprimir PDF

 

 

 

PageRank™ é uma família de algoritmos para dar pesos numéricos a documentos com hyperlink (ou páginas da web) indexadas por um motor de busca. Suas propriedades são muito discutidas por especialistas em otimização dos motores de busca (SEO, sigla em inglês para search engine optimization).

O sistema PageRank é usado pelo motor de busca Google para ajudar a determinar a relevância ou importância de uma página. Foi desenvolvida pelos fundadores do Google, Larry Page e Sergey Brin enquanto cursavam a Universidade de Stanford em 1998.

 

Nessa ilustração, uma simplificação do sistema do PageRank, cada "bola" representa uma página, e a "importância" (PageRank) da página seria o tamanho da bola. Quanto maior a bola, mais "pesado" é o seu voto: repare que a bola superior vermelha é "grande" mesmo recebendo um voto só, porque o voto dela (da bola maior amarela) é mais "pesado".

 

 

 

O Google mantém uma lista de bilhões de páginas em ordem de importância, i. e., cada página tem sua importância na internet como um todo; esse Banco de Páginas mantém desde a página mais importante do mundo até a menos importante. Essa importância se dá pelo número de votos que uma página recebe. Um voto é um link em qualquer lugar da internet para aquela página. Votos de páginas mais importantes valem mais do que votos de páginas menos importantes.

Esse critério de ordenação das páginas, de acordo com várias pessoas, é bastante democrático, refletindo o que a "internet pensa" sobre determinado termo. Lembre-se que cerca de dez bilhões de páginas são levadas em conta. A qualidade das páginas mais importantes são naturalmente garantidas, classificadas e eleitas pela própria internet. Além de todas as páginas terem a mesma condição de subir nessa lista, conquistando votos pela internet afora.

Uma boa unidade de medida para definir o PageRank™ de uma página pode ser a porcentagem (%) de páginas que ela é mais importante. Por exemplo, se uma página tem PageRank™ de 33% significa que ela é mais importante que um terço de toda a internet. Se o seu PageRank™ é 99% significa que ela é superior a quase todas as páginas da internet.

No entanto, é possível manipular o PageRank™ atribuindo links descontextualizados com o objetivo da página, modificando a ordenação de resultados na pesquisa pelo Google e induzindo a resultados pouco relevantes ou tendenciosos. Um exemplo recente disso é a pesquisa por failure ou miserable failure que retorna como primeiro site a biografia oficial da Casa Branca para o presidente dos Estados Unidos, George W. Bush e em sequência a página de Michael Moore, inimigo declarado do presidente dos EUA. Este processo ficou conhecido por Googlebombing.

 

 

Fonte: Wiki

 

Licença pública GNU

E-mail Imprimir PDF

 

Muitos me perguntam quais são estas lincenças, assim estou inserindo a licença por completa para analise e consulta, quase todos os nossos templates, módulos e alguns outros downloads seguem esta Licença. Portanto respeite-a.

Site do Projeto : http://www.gnu.org/
Site da Licença: http://www.gnu.org/copyleft/gpl.html

 

 

LICENÇA PÚBLICA GERAL GNU
Versão 2, junho de 1991

This is an unofficial translation of the GNU General Public License
into Brazilian Portuguese. It was not published by the Free Software
Foundation, and does not legally state the distribution terms for
software that uses the GNU GPL -- only the original English text of
the GNU GPL does that. However, we hope that this translation will
help Brazilian Portuguese speakers understand the GNU GPL better.

Esta é uma tradução não-oficial da Licença Pública Geral GNU ("GPL
GNU") para o português do Brasil. Ela não foi publicada pela Free
Software Foundation, e legalmente não afirma os termos de distribuição
de software que utiliza a GPL GNU -- apenas o texto original da GPL
GNU, em inglês, faz isso. Contudo, esperamos que esta tradução ajude
aos que utilizam o português do Brasil a entender melhor a GPL GNU.

Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave,
Cambridge, MA 02139, USA

A qualquer pessoa é permitido copiar e distribuir cópias desse
documento de licença, desde que sem qualquer alteração.

Introdução

As licenças de muitos software são desenvolvidas para restringir sua
liberdade de compartilhá-lo e mudá-lo. Contrária a isso, a Licença
Pública Geral GNU pretende garantir sua liberdade de compartilhar e
alterar software livres -- garantindo que o software será livre e
gratuito para os seus usuários. Esta Licença Pública Geral aplica-se à
maioria dos software da Free Software Foundation e a qualquer outro
programa cujo autor decida aplicá-la. (Alguns outros software da FSF
são cobertos pela Licença Pública Geral de Bibliotecas, no entanto.)
Você pode aplicá-la também aos seus programas.

Quando nos referimos a software livre, estamos nos referindo a
liberdade e não a preço. Nossa Licença Pública Geral foi desenvolvida
para garantir que você tenha a liberdade de distribuir cópias de
software livre (e cobrar por isso, se quiser); que você receba o
código-fonte ou tenha acesso a ele, se quiser; que você possa mudar o
software ou utilizar partes dele em novos programas livres e
gratuitos; e que você saiba que pode fazer tudo isso.

Para proteger seus direitos, precisamos fazer restrições que impeçam
a qualquer um negar estes direitos ou solicitar que você deles
abdique. Estas restrições traduzem-se em certas responsabilidades para
você, se você for distribuir cópias do software ou modificá-lo.

Por exemplo, se você distribuir cópias de um programa, gratuitamente
ou por alguma quantia, você tem que fornecer aos recebedores todos os
direitos que você possui. Você tem que garantir que eles também
recebam ou possam obter o código-fonte. E você tem que mostrar-lhes
estes termos para que eles possam conhecer seus direitos.

Nós protegemos seus direitos em dois passos: (1) com copyright do
software e (2) com a oferta desta licença, que lhe dá permissão legal
para copiar, distribuir e/ou modificar o software.

Além disso, tanto para a proteção do autor quanto a nossa,
gostaríamos de certificar-nos que todos entendam que não há qualquer
garantia nestes software livres. Se o software é modificado por alguém
mais e passado adiante, queremos que seus recebedores saibam que o que
eles obtiveram não é original, de forma que qualquer problema
introduzido por terceiros não interfira na reputação do autor
original.

Finalmente, qualquer programa é ameaçado constantemente por patentes
de software. Queremos evitar o perigo de que distribuidores de
software livre obtenham patentes individuais, o que tem o efeito de
tornar o programa proprietário. Para prevenir isso, deixamos claro que
qualquer patente tem que ser licenciada para uso livre e gratuito por
qualquer pessoa, ou então que nem necessite ser licenciada.

Os termos e condições precisas para cópia, distribuição e
modificação se encontram abaixo:

LICENÇA PÚBLICA GERAL GNU
TERMOS E CONDIÇÕES PARA CÓPIA, DISTRIBUIÇÃO E MODIFICAÇÃO

0. Esta licença se aplica a qualquer programa ou outro trabalho que
contenha um aviso colocado pelo detentor dos direitos autorais
informando que aquele pode ser distribuído sob as condições desta
Licença Pública Geral. O "Programa" abaixo refere-se a qualquer
programa ou trabalho, e "trabalho baseado no Programa" significa tanto
o Programa em si como quaisquer trabalhos derivados, de acordo com a
lei de direitos autorais: isto quer dizer um trabalho que contenha o
Programa ou parte dele, tanto originalmente ou com modificações, e/ou
tradução para outros idiomas. (Doravante o processo de tradução está
incluído sem limites no termo "modificação".) Cada licenciado é
mencionado como "você".

Atividades outras que a cópia, a distribuição e modificação não estão
cobertas por esta Licença; elas estão fora de seu escopo. O ato de
executar o Programa não é restringido e o resultado do Programa é
coberto apenas se seu conteúdo contenha trabalhos baseados no Programa
(independentemente de terem sido gerados pela execução do
Programa). Se isso é verdadeiro depende do que o programa faz.

1. Você pode copiar e distribuir cópias fiéis do código-fonte do
Programa da mesma forma que você o recebeu, usando qualquer meio,
deste que você conspícua e apropriadamente publique em cada cópia um
aviso de direitos autorais e uma declaração de inexistência de
garantias; mantenha intactas todos os avisos que se referem a esta
Licença e à ausência total de garantias; e forneça a outros
recebedores do Programa uma cópia desta Licença, junto com o Programa.

Você pode cobrar pelo ato físico de transferir uma cópia e pode,
opcionalmente, oferecer garantia em troca de pagamento.

2. Você pode modificar sua cópia ou cópias do Programa, ou qualquer
parte dele, assim gerando um trabalho baseado no Programa, e copiar e
distribuir essas modificações ou trabalhos sob os termos da seção 1
acima, desde que você também se enquadre em todas estas condições:

a) Você tem que fazer com que os arquivos modificados levem avisos
proeminentes afirmando que você alterou os arquivos, incluindo a
data de qualquer alteração.

b) Você tem que fazer com que quaisquer trabalhos que você
distribua ou publique, e que integralmente ou em partes contenham
ou sejam derivados do Programa ou de suas partes, sejam
licenciados, integralmente e sem custo algum para quaisquer
terceiros, sob os termos desta Licença.

c) Se qualquer programa modificado normalmente lê comandos
interativamente quando executados, você tem que fazer com que,
quando iniciado tal uso interativo da forma mais simples, seja
impresso ou mostrado um anúncio de que não há qualquer garantia
(ou então que você fornece a garantia) e que os usuários podem
redistribuir o programa sob estas condições, ainda informando os
usuários como consultar uma cópia desta Licença. (Exceção: se o
Programa em si é interativo mas normalmente não imprime estes
tipos de anúncios, seu trabalho baseado no Programa não precisa
imprimir um anúncio.)

Estas exigências aplicam-se ao trabalho modificado como um todo. Se
seções identificáveis de tal trabalho não são derivadas do Programa, e
podem ser razoavelmente consideradas trabalhos independentes e
separados por si só, então esta Licença, e seus termos, não se aplicam
a estas seções quando você distribui-las como trabalhos em
separado. Mas quando você distribuir as mesmas seções como parte de um
todo que é trabalho baseado no Programa, a distribuição como um todo
tem que se enquadrar nos termos desta Licença, cujas permissões para
outros licenciados se estendem ao todo, portanto também para cada e
toda parte independente de quem a escreveu.

Desta forma, esta seção não tem a intenção de reclamar direitos os
contestar seus direitos sobre o trabalho escrito completamente por
você; ao invés disso, a intenção é a de exercitar o direito de
controlar a distribuição de trabalhos, derivados ou coletivos,
baseados no Programa.

Adicionalmente, a mera adição ao Programa de outro trabalho não
baseado no Programa (ou de trabalho baseado no Programa) em um volume
de armazenamento ou meio de distribuição não faz o outro trabalho
parte do escopo desta Licença.

3. Você pode copiar e distribuir o Programa (ou trabalho baseado
nele, conforme descrito na Seção 2) em código-objeto ou em forma
executável sob os termos das Seções 1 e 2 acima, desde que você
faça um dos seguintes:

a) O acompanhe com o código-fonte completo e em forma acessível
por máquinas, que tem que ser distribuído sob os termos das Seções
1 e 2 acima e em meio normalmente utilizado para o intercâmbio de
software; ou,

b) O acompanhe com uma oferta escrita, válida por pelo menos três
anos, de fornecer a qualquer um, com um custo não superior ao
custo de distribuição física do material, uma cópia do
código-fonte completo e em forma acessível por máquinas, que tem
que ser distribuído sob os termos das Seções 1 e 2 acima e em meio
normalmente utilizado para o intercâmbio de software; ou,

c) O acompanhe com a informação que você recebeu em relação à
oferta de distribuição do código-fonte correspondente. (Esta
alternativa é permitida somente em distribuição não comerciais, e
apenas se você recebeu o programa em forma de código-objeto ou
executável, com oferta de acordo com a Subseção b acima.)

O código-fonte de um trabalho corresponde à forma de trabalho
preferida para se fazer modificações. Para um trabalho em forma
executável, o código-fonte completo significa todo o código-fonte de
todos os módulos que ele contém, mais quaisquer arquivos de definição
de "interface", mais os "scripts" utilizados para se controlar a
compilação e a instalação do executável. Contudo, como exceção
especial, o código-fonte distribuído não precisa incluir qualquer
componente normalmente distribuído (tanto em forma original quanto
binária) com os maiores componentes (o compilador, o "kernel" etc.) do
sistema operacional sob o qual o executável funciona, a menos que o
componente em si acompanhe o executável.

Se a distribuição do executável ou código-objeto é feita através da
oferta de acesso a cópias de algum lugar, então ofertar o acesso
equivalente a cópia, do mesmo lugar, do código-fonte equivale à
distribuição do código-fonte, mesmo que terceiros não sejam compelidos
a copiar o código-fonte com o código-objeto.

4. Você não pode copiar, modificar, sub-licenciar ou distribuir o
Programa, exceto de acordo com as condições expressas nesta
Licença. Qualquer outra tentativa de cópia, modificação,
sub-licenciamento ou distribuição do Programa não é valida, e
cancelará automaticamente os direitos que lhe foram fornecidos por
esta Licença. No entanto, terceiros que de você receberam cópias ou
direitos, fornecidos sob os termos desta Licença, não terão suas
licenças terminadas, desde que permaneçam em total concordância com
ela.

5. Você não é obrigado a aceitar esta Licença já que não a
assinou. No entanto, nada mais o dará permissão para modificar ou
distribuir o Programa ou trabalhos derivados deste. Estas ações são
proibidas por lei, caso você não aceite esta Licença. Desta forma, ao
modificar ou distribuir o Programa (ou qualquer trabalho derivado do
Programa), você estará indicando sua total aceitação desta Licença
para fazê-los, e todos os seus termos e condições para copiar,
distribuir ou modificar o Programa, ou trabalhos baseados nele.

6. Cada vez que você redistribuir o Programa (ou qualquer trabalho
baseado nele), os recebedores adquirirão automaticamente do
licenciador original uma licença para copiar, distribuir ou modificar
o Programa, sujeitos a estes termos e condições. Você não poderá impor
aos recebedores qualquer outra restrição ao exercício dos direitos
então adquiridos. Você não é responsável em garantir a concordância de
terceiros a esta Licença.

7. Se, em conseqüência de decisões judiciais ou alegações de
infringimento de patentes ou quaisquer outras razões (não limitadas a
assuntos relacionados a patentes), condições forem impostas a você
(por ordem judicial, acordos ou outras formas) e que contradigam as
condições desta Licença, elas não o livram das condições desta
Licença. Se você não puder distribuir de forma a satisfazer
simultaneamente suas obrigações para com esta Licença e para com as
outras obrigações pertinentes, então como conseqüência você não poderá
distribuir o Programa. Por exemplo, se uma licença de patente não
permitirá a redistribuição, livre de "royalties", do Programa, por
todos aqueles que receberem cópias direta ou indiretamente de você,
então a única forma de você satisfazer a ela e a esta Licença seria a
de desistir completamente de distribuir o Programa.

Se qualquer parte desta seção for considerada inválida ou não
aplicável em qualquer circunstância particular, o restante da seção se
aplica, e a seção como um todo se aplica em outras circunstâncias.

O propósito desta seção não é o de induzi-lo a infringir quaisquer
patentes ou reivindicação de direitos de propriedade outros, ou a
contestar a validade de quaisquer dessas reivindicações; esta seção
tem como único propósito proteger a integridade dos sistemas de
distribuição de software livres, o que é implementado pela prática de
licenças públicas. Várias pessoas têm contribuído generosamente e em
grande escala para os software distribuídos usando este sistema, na
certeza de que sua aplicação é feita de forma consistente; fica a
critério do autor/doador decidir se ele ou ela está disposto a
distribuir software utilizando outro sistema, e um licenciado não pode
impor qualquer escolha.

Esta seção destina-se a tornar bastante claro o que se acredita ser
conseqüência do restante desta Licença.

8. Se a distribuição e/ou uso do Programa são restringidos em certos
países por patentes ou direitos autorais, o detentor dos direitos
autorais original, e que colocou o Programa sob esta Licença, pode
incluir uma limitação geográfica de distribuição, excluindo aqueles
países de forma a tornar a distribuição permitida apenas naqueles ou
entre aqueles países então não excluídos. Nestes casos, esta Licença
incorpora a limitação como se a mesma constasse escrita nesta Licença.

9. A Free Software Foundation pode publicar versões revisadas e/ou
novas da Licença Pública Geral de tempos em tempos. Estas novas
versões serão similares em espírito à versão atual, mas podem diferir
em detalhes que resolvem novos problemas ou situações.

A cada versão é dada um número distinto. Se o Programa especifica um
número de versão específico desta Licença que se aplica a ele e a
"qualquer nova versão", você tem a opção de aceitar os termos e
condições daquela versão ou de qualquer outra versão publicada pela
Free Software Foundation. Se o programa não especifica um número de
versão desta Licença, você pode escolher qualquer versão já publicada
pela Free Software Foundation.

10. Se você pretende incorporar partes do Programa em outros
programas livres cujas condições de distribuição são diferentes,
escreva ao autor e solicite permissão. Para o software que a Free
Software Foundation detém direitos autorais, escreva à Free Software
Foundation; às vezes nós permitimos exceções a este caso. Nossa
decisão será guiada pelos dois objetivos de preservar a condição de
liberdade de todas as derivações do nosso software livre, e de
promover o compartilhamento e reutilização de software em aspectos
gerais.

AUSÊNCIA DE GARANTIAS

11. UMA VEZ QUE O PROGRAMA É LICENCIADO SEM ÔNUS, NÃO HÁ QUALQUER
GARANTIA PARA O PROGRAMA, NA EXTENSÃO PERMITIDA PELAS LEIS
APLICÁVEIS. EXCETO QUANDO EXPRESSADO DE FORMA ESCRITA, OS DETENTORES
DOS DIREITOS AUTORAIS E/OU TERCEIROS DISPONIBILIZAM O PROGRAMA "NO
ESTADO", SEM QUALQUER TIPO DE GARANTIAS, EXPRESSAS OU IMPLÍCITAS,
INCLUINDO, MAS NÃO LIMITADO A, AS GARANTIAS IMPLÍCITAS DE
COMERCIALIZAÇÃO E AS DE ADEQUAÇÃO A QUALQUER PROPÓSITO. O RISCO TOTAL
COM A QUALIDADE E DESEMPENHO DO PROGRAMA É SEU. SE O PROGRAMA SE
MOSTRAR DEFEITUOSO, VOCÊ ASSUME OS CUSTOS DE TODAS AS MANUTENÇÕES,
REPAROS E CORREÇÕES.

12. EM NENHUMA OCASIÃO, A MENOS QUE EXIGIDO PELAS LEIS APLICÁVEIS OU
ACORDO ESCRITO, OS DETENTORES DOS DIREITOS AUTORAIS, OU QUALQUER OUTRA
PARTE QUE POSSA MODIFICAR E/OU REDISTRIBUIR O PROGRAMA CONFORME
PERMITIDO ACIMA, SERÃO RESPONSABILIZADOS POR VOCÊ POR DANOS, INCLUINDO
QUALQUER DANO EM GERAL, ESPECIAL, ACIDENTAL OU CONSEQÜENTE,
RESULTANTES DO USO OU INCAPACIDADE DE USO DO PROGRAMA (INCLUINDO, MAS
NÃO LIMITADO A, A PERDA DE DADOS OU DADOS TORNADOS INCORRETOS, OU
PERDAS SOFRIDAS POR VOCÊ OU POR OUTRAS PARTES, OU FALHAS DO PROGRAMA
AO OPERAR COM QUALQUER OUTRO PROGRAMA), MESMO QUE TAL DETENTOR OU
PARTE TENHAM SIDO AVISADOS DA POSSIBILIDADE DE TAIS DANOS.

FIM DOS TERMOS E CONDIÇÕES

Como Aplicar Estes Termos aos Seus Novos Programas

Se você desenvolver um novo programa, e quer que ele seja utilizado
amplamente pelo público, a melhor forma de alcançar este objetivo é
torná-lo software livre que qualquer um pode redistribuir e alterar,
sob estes termos.

Para isso, anexe os seguintes avisos ao programa. É mais seguro
anexá-los logo no início de cada arquivo-fonte para reforçarem mais
efetivamente a inexistência de garantias; e cada arquivo deve possuir
pelo menos a linha de "copyright" e uma indicação de onde o texto
completo se encontra.

<uma linha que forneça o nome do programa e uma idéia do que ele faz.>
Copyright (C) <ano> <nome do autor>

Este programa é software livre; você pode redistribuí-lo e/ou
modificá-lo sob os termos da Licença Pública Geral GNU, conforme
publicada pela Free Software Foundation; tanto a versão 2 da
Licença como (a seu critério) qualquer versão mais nova.

Este programa é distribuído na expectativa de ser útil, mas SEM
QUALQUER GARANTIA; sem mesmo a garantia implícita de
COMERCIALIZAÇÃO ou de ADEQUAÇÃO A QUALQUER PROPÓSITO EM
PARTICULAR. Consulte a Licença Pública Geral GNU para obter mais
detalhes.

Você deve ter recebido uma cópia da Licença Pública Geral GNU
junto com este programa; se não, escreva para a Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307, USA.

Inclua também informações sobre como contactá-lo eletronicamente e por
carta.

Se o programa é interativo, faça-o mostrar um aviso breve como este,
ao iniciar um modo interativo:

Gnomovision versão 69, Copyright (C) ano nome do autor
O Gnomovision não possui QUALQUER GARANTIA; para obter mais
detalhes digite `show w'. Ele é software livre e você está
convidado a redistribui-lo sob certas condições; digite `show c'
para obter detalhes.

Os comandos hipotéticos `show w' e `show c' devem mostrar as partes
apropriadas da Licença Pública Geral. Claro, os comandos que você usar
podem ser ativados de outra forma que `show w' e `show c'; eles podem
até ser cliques do mouse ou itens de um menu -- o que melhor se
adequar ao programa.

Você também deve obter do seu empregador (se você trabalha como
programador) ou escola, se houver, uma "declaração de ausência de
direitos autorais" sobre o programa, se necessário. Aqui está um
exemplo; altere os nomes:

Yoyodyne, Inc., aqui declara a ausência de quaisquer direitos
autorais sobre o programa `Gnomovision' (que executa interpretações
em compiladores) escrito por James Hacker.

<assinatura de Ty Coon>, 1o. de abril de 1989
Ty Con, Vice-presidente

Esta Licença Pública Geral não permite incorporar seu programa em
programas proprietários. Se seu programa é uma biblioteca de
sub-rotinas, você deve considerar mais útil permitir ligar aplicações
proprietárias com a biblioteca. Se isto é o que você deseja, use a
Licença Pública Geral de Bibliotecas GNU, ao invés desta Licença.
 

Tipos de Representação do Código HTML.

E-mail Imprimir PDF

 

Existem hoje diversas normas para caracterização do Código. Ocidental (ISO 8859 -1) Unicode (UTF8) etc etc...

 

Este elemento aplica-se em dois contextos diferentes:

 

1) Metametadados. Norma de codificação de caracteres utilizada para o documento de metadados. Documentação obrigatória. Recomenda-se a utilização do "UTF-8". Este conjunto de caracteres ou norma de codificação de caracteres, para além de incluir os caracteres especiais portugueses,  é o conjunto de caracteres pré-definido para os documentos XML.

 

2) Identificação do Conjunto de Dados Geográficos (CDG). Norma de codificação de caracteres utilizada no CDG. A documentação é condicional, dependendo da existência de texto no CDG.

 

Este elemento só aceita termos da lista controlada MD_CharacterSetCode:

  • ucs2 (001) - Código de caracteres universal de comprimento fixo de 16 bits, baseado na norma ISO 10646

  • ucs4 (002) - Código de caracteres universal de comprimento fixo de 32 bits, baseado na norma ISO 10646

  • utf7 (003) - Formato de transferência em código de caracteres universal de comprimento variável de 7 bits, baseado na norma ISO 10646

  • utf8 (004) - Formato de transferência em código de caracteres universal de comprimento variável de 8 bits, baseado na norma ISO 10646

  • utf16 (005) - Formato de transferência em código de caracteres universal de comprimento variável de 16 bits, baseado na norma ISO 10646

  • 8859part1 (006) - Código de caracteres da Europa Ocidental, latin-1

  • 8859part2 (007) - Código de caracteres da Europa Central, latin-2

  • 8859part3 (008) - Código de caracteres da Europa do Sul, latin-3

  • 8859part4 (009) - Código de caracteres da Europa do Norte, latin-4

  • 8859part5 (010) - Código de caracteres cirílico

  • 8859part6 (011) - Código de caracteres árabe

  • 8859part7 (012) - Código de caracteres grego

  • 8859part8 (013) - Código de caracteres hebraico

  • 8859part9 (014) - Código de caracteres turco, latin-5

  • 8859part11 (015) - Código de caracteres tailandês

  • 8859part14 (016) - Código de caracteres latin-8

  • 8859part15 (017) - Código de caracteres latin-9

  • jis (018) - Código de caracteres japonês utilizado para transmissões electrónicas

  • shiftJIS (019) - Código de caracteres japonês utilizado em máquinas baseadas no sistema operativo MS-DOS

  • eucJP (020) - Código de caracteres japonês utilizado em máquinas baseadas no sistema operativo UNIX

  • usAscii (021) - Código de caracteres ASCII, dos Estados Unidos da América (ISO 646 US)

  • ebcdic (022) - Código de caracteres IBM para mainframes

  • eucKR (023) - Código de caracteres coreano

  • big5 (024) - Código de caracteres de Taiwan (Ilha Formosa)

Vamos Detalhar....



Representação dos documentos HTML

Conteúdos

  1. O conjunto de caracteres do documento
  2. Codificação dos caracteres
    1. Escolhendo o tipo de codificação
      • Notas referentes às codificações específicas
    2. Especificando a codificação dos caracteres
  3. Referências dos caracteres
    1. Referências numéricas dos caracteres
    2. Referências às entidades dos caracteres
  4. caracteres não representáveis

Neste capítulo, nós discutiremos a maneira como os documentos HTML lhe são apresentados no computador e através da Internet.

A secção conjunto de caracteres do documento indica-nos quais os caracteres abstractos que poderão fazer parte de um documento HTML. Estes caracteres incluem a letra latina "A", a letra cirílica "I", o caractére chinês que significa "água", etc.

A secção referente à codificação dos caracteres indica-nos a forma como esses caracteres poderão ser representados num ficheiro ou aqunado transferidos através da Internet. Dados que em algumas das codificações não se podem representar directamente todos os caracteres que o autor possa querer incluir num documento,o Código HTML oferece outros mecanismos denominados de referências dos caracteres , para se poder assim referir e representar qualquer caractére.

Dado que existe um número variado de caracteres resultantes do uso das linguagens humanas, bem como também uma grande variedade de maneiras para representar esses mesmos caracteres, têm de se tomar cuidados especiais para que os documentos possam ser entendidos pelos meios utilizados pelos utentes do Mundo inteiro.

1 O conjunto de caracteres contidos no documento

Com vista a promover uma inter-operacionalidade, o SGML exige que seja especificada em cada aplicação (incluindo o HTML) o conjunto de caracteres nelas contidos. O conjunto de caracteres do documento é constituído por:

  • O repertório: Conjunto de caracteres abstractos, tais como a letra "A" oriunda do Latim, a letra cirílica "I", o caractére em Chinês que significa "água", etc.
  • Código de localização (do Inglês: "position code"), o qual se refere ao caractére em questão: Conjunto de referências definidas por números inteiros relativas aos caracteres contidos nesse repertório.

Cada documento SGML (incluindo ainda os documentos HTML) é uma sequência de caracteres pertencentes ao repertório. O sistema do computador identifica cada um dos caracteres de acordo com o seu código de localização; por exemplo, no conjunto de caracteres ASCII, o código de localização 65, 66 e 67 correspondem, respectivamente, aos caracteres 'A', 'B', e 'C'.

O conjunto de caracteres ASCII não é suficiente para um sistema global de procura de informação como a Web, servindo-se por essa mesma razão o HTML de um conjunto de caracteres muito mais completo, o Conjunto de caracteres Universais (do Inglês: Universal Character Set (UCS), como é definido no documento [ISO10646]. Este documento standard define um repertório constituído por milhares de caracteres, os quais são usados pela comunidade da Web do Mundo inteiro.

O conjunto de caracteres definido em [ISO10646] é equivalente ao Unicode, caractére por caractére ([UNICODE]). Estes dois padrões são períodicamente actualizados com novos caractére, e as emendas poderão ser consultadas nas respectivas “homepages”. Na corrente especificação, o documento "[ISO10646]" é usado para fazer referência aos conjuntos de caracteres contidos num documento, ao passo que o documento "[UNICODE]" se destina apenas à referência ao texto de algorítmos bi-direcional.

O conjunto de caracteres do documento não é contudo o suficiente para permitir aos agentes usados pelos utentes interpretar correctamente os documentos HTML, dado que eles são característicamente modificados ou codificados como uma sequência de “bytes”, no documento ou durante uma transmissão ou transferência de dados “online”. Os meios usados pelos utentes têm assim de reconhecer as codificações específicas dos caracteres que foram usados para transformar a corrente dos caracteres contidos no documento, numa corrente de bytes.

2 Codificações específicas de caracteres

Aquilo que esta especificação denomina de codificação de caracteres, é conhecido noutras especificações por outros nomes (o que poderá causar alguma confusão). Contudo, o conceito é básicamente o mesmo na Internet, pelo Mundo fora. Assim, os cabeçalhos de protocolo, os atributos e os parâmetros referentes à codificação dos caracteres partilham entre si o mesmo nome -- "charset" --, usando ainda os mesmos valores, contidos no registro [IANA] (ver [CHARSETS], a fim de obter a lista completa).

O parâmetro "charset" identifica o tipo de codificação usado no documento, a qual consiste na conversão da sequência de bytes numa sequência de caracteres. Essa conversão adequa-se, como não poderia deixar de ser, ao esquema da actividade da Web: os servidores enviam documentos HTML aos agentes ou meios usados pelos utentes sob a forma de uma sequência de bytes; os agentes usados pelos utentes traduzem por sua vez essa sequência de bytes para uma sequência de caracteres O método de conversão poderá ir da simples correspondência um-para-um até aos mais complicados esquemas de transformação ou algorítmos.

Uma simples técnica de codificação de um "byte" por caractére não é o suficiente para uma sequência textual ("strings") tão grande como em [ISO10646]. Existem várias codificações parciais do [ISO10646] a somar às codificações do conjunto de caracteres inteiro (tais como UCS-4).

2.1 Escolhendo um tipo de codificação

As ferramentas de criação de texto HTML (ex: os editores de texto) podem codificar documentos HTML, usando o tipo de codificação escolhido, dependendo essa escolha das convenções estabelecidas no software do sistema usado computador. Essas ferramentas poderão usar uma codificação mais conveniente, a qual abranja a maioria dos caracteres contidos no documento, desde que essa codificação seja correctamente etiquetada. Os caracteres que estejam ocasionalmente à margem dessa selecção poderão ser na mesma representados, através das referências dos caracteres. Essas referências fazem menção ao conjunto de caracteres contidos no documento e não ao tipo de codificação que foi usado.

Os servidores e os proxies poderão alterar a codificação desses caracteres (transcodificação) com vista a que eles preencham os requesitos de interpretação dos agentes usados pelos utentes (ver a secção 14.2 do [RFC2616], cabeçalho com os requesitos protocolares HTPP "Accept-Charset"). Os servidores e os proxies não têm obrigatóriamente de apresentar o documento com um tipo de codificação que cubra ou abranja o conjunto de caracteres nele contidos por completo.

Os tipos de codificação de caracteres mais vulgarmente utilizadas na Web, incluem o ISO-8859-1 (também conhecido como "Latin-1"; utilizável pela maioria das Línguas Ocidentais Europeias), ISO-8859-5 (o qual suporta o Cirílo), SHIFT_JIS (tipo de codificação para o Japonês), EUC-JP (um outro tipo de codificação Japonês), e UTF-8 ( um tipo de codificação ISO 10646, o qual se serve de um número diferente de bytes na representação de caracteres diferentes). Os nomes atribuídos à codificação dos caracteres não são um caso sensível (não se faz distinção entre maiúsculas e minúsculas), podendo-se portanto escrever, a título de exemplo, "SHIFT_JIS","Shift_JIS" ou "shift_jis".

Esta especificação não impõe o tipo de codificação de caracteres a ser aplicado e suportado pelo agente ou meio usado pelo utente.

Os agentes ou meios usados pelos utentes que estejam em conformidade deverão estar aptos a definir para o código ISO 10646 todas as codificações de caracteres por eles reconhecidas (ou pelo menos comportar-se como se assim o tivessem feito).

Notas referentes às codificações específicas

Quando um texto HTML é transmitido em UTF-16(charset=UTF-16), os dados textuais deverão ser transmitidos segundo o ordenamento da rede de bytes ("big-endian", o byte de maior ordem em primeiro lugar), de acordo com o documento [ISO10646], Secção 6.3 e [UNICODE], artigo C3, pág. 3-1.

Além disso e com o fim de maximizar as possibilidades de uma interpretação mais adequada, é-se recomendado que os documentos transmitidos com uma codificação do tipo UTF-16 comecem sempre por um caractére "ZERO-WIDTHNON-BREAKING SPACE" (hexadécimal FEFF, também denominado de "Byte Order Mark(BOM))" o qual, quando revertido a bytes, se converte num hexadécimal FFFE, um caractére que nunca pode se assinado. Através deste procedimento, o agente ou meio usado pelo utente que receba o hexadécimal FFFE, constituíndo os primeiros bytes de um texto, reconhecerá de imediato que esses bytes terão de ser invertidos para o texto restante.

O formato de transformação UTF-1 do [ISO10646] (registado pela IANA com a referência ISO-10646-UTF-1), não deverá ser usado. Para mais informação acerca do ISO 8859-8 e do algorítmo bi-direccional, por favor consulte a secção referente à bi-direccionalidade e codificação de caracteres.

2.2 Especificando a codificação de caracteres

Como é que o servidor determina qual o tipo de codificação de caracteres aplicado num documento? Alguns servidores examinam os primeiros “byte” do documento ou comparam-nos à base de dados e aos outros ficheiros e codificações já existentes. Muitos dos servidores actuais possibilitam aos “webmasters” um maior controlo sobre as configurações "charset" do que os antigos servidores. Os “webmasters” deverão pois servir-se desses mecanismos para enviar um parâmetro “charset”, sempre que assim o seja possível, devendo contudo tomar o cuidado de não identificar o documento com um valor de parâmetro “charset” errado.

Como é que o utente poderá identificar a codificação de caracteres que foi usada num documento? O próprio servidor deverá fornecer essa informação! A forma mais directa de informar o agente ou meio usado pelo utente acerca do tipo de codificação usada no documento é através do parâmetro "charset" situado no cabeçalho "Content-Type" (tipo de conteúdo), na zona de protocolo HTTP ([RFC2616], secções 3.4 e 14.17) Por exemplo, o cabeçalho HTTP que em seguida lhe iremos mostrar, indica-nos que a codificação dos caracteres utilizada é do tipo EUC-JP:

Content-Type: text/html; charset=EUC-JP

Por favor, consulte a secção referente à conformidade, a fim de obter a definição de text/html.

O protocolo HTTP ([RFC2616], secção 3.7.1) menciona ISO-8859-1 como sendo a codificação dos caracteres que é efectuada por defeito, sempre que o parâmetro "charset" não esteja definido na zona do cabeçalho referente ao "Content-Type" (tipo de conteúdo). Na prática, esta recomendação é inútil, dado que alguns servidores não permitem que o parâmetro "charset" seja enviado e outros ainda não podem ser configurados para esse fim. Por isso mesmo, os meios ou agentes utilizados pelos utentes não terão obrigatóriamente de assumir um valor por defeito para o parâmetro "charset".

A fim de referenciar as limitações verificadas no servidor ou relacionadas com a configuração, os documentos HTML poderão incluir informação explícita, referente ao tipo de codificação dos caracteres; o elemento META poderá ser usado para fornecer as referidas informações aos meios ou agentes utilizados pelos utentes.

Por exemplo, para especificar que a codificação dos caracteres no actual documento é do tipo "EUC-JP", o documento deverá incluir a seguinte declaração META:

<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">

A declaração META deverá ser apenas usada, quando a codificação dos caracteres estiver de tal forma organizada que os bytes com um valor ASCII representem caracteres ASCII(pelo menos até que o elemento META seja processado). As declarações do elemento META deverão aparecer definidas o mais acima possível do elemento HEAD.

Nos casos em que nem o protocolo HTTP nem o elemento META forneçam a informação necessária acerca do tipo de codificação dos caracteres utilizado no referido document, o HTML fornece ainda o atributo charset através de vários elementos. Através da combinação desses mecanismos, o autor poderá aumentar a probabilidade de, sempre que o utente recuperar um recurso, o agente ou meio por ele utilizado reconhecer o tipo de codificação que foi aplicada aos caracteres.

Resumindo, os meios ou agentes usados pelos utentes que estejam em conformidade deverão obedecer às seguintes prioridades, ao determinar-se o tipo de codificação dos caracteres utilizada no documento (por ordem descendente):

  1. Um parâmetro "charset" HTTP contido no campo "Content-Type" (tipo de conteúdo).
  2. Uma declaração do elemento META com "http-equiv" a indicar "Content-Type" e com um valor atribuído para "charset".
  3. O atributo charset aplicado a um elemento que defina um recurso externo.

A somar a esta lista de prioridades, o meio ou agente usado pelo utente poderá servir-se da heurística ou ainda de outros ajustes personalizados. Por exemplo, muitos desses agentes ou meios utilizam a heurística para distinguir as variadas codificações usadas nos textos em Japonês. Além disso, esses meios ou agentes utilizados pelos utentes dispõem geralmente de configurações personalizadas para a codificação de caracteres, a qual poderá ser aplicada no caso de haver uma ausência de outros indicadores.

Eles poderão fornecer um mecanismo que permite aos utentes sobrepôr qualquer tipo de informação incorrecta, relacionada com o "charset". Contudo, se o meio ou agente usado pelo utente lhe oferecer tal mecanismo, ele deverá servir apenas para navegar e não para editar, a fim de evitar a criação de páginas Web marcadas com um parâmetro "charset" incorrecto.

Nota: Se, no caso de uma aplicação específica, se tornar necessário fazer referência a caracteres não pertencentes a [ISO10646], esses caracteres deverão ser atribuídos a uma zona privada, de modo a evitar eventuais conflitos com as versões actuais ou futuras do "standard". Contudo, esta medida é não é recomendada, por motivos de mobilidade.

3 Referências dos caracteres

A codificação de caracteres que é apresentada poderá não estar apta a expressar todos os caracteres contidos num documento. Para tais codificações, ou quando as configurações do "hardware" ou do "software" não permitirem aos utentes a introdução directa de alguns caracteres do documento, os autores poderão usar as Referências dos caracteres SGML. Essas referências são um mecanismo de codificação de caracteres independente, o qual permite que qualquer caractére pertencente ao conjunto total de caracteres possa ser introduzido num documento.

As referências dos caracteres em HTML poderão aparecer sob duas formas distintas:

  • Referências numéricas dos caracteres (décimal ou hexadécimal).
  • Referências às entidades dos caracteres

As referências contidas nos comentários não assumem qualquer significado; eles desempenham apenas uma função informativa.

Nota: o HTML fornece ainda outros modos de apresentar os dados formados por caracteres, em particular através das imagens "online”.

Nota: nalguns casos é possível, em SGML, eliminar a parte final - ";" - situada logo a seguir à referência do caractére (por exemplo, na mudança de linha ou antes do início de uma "tag"). Noutras circunstâncias esse final não poderá ser eliminado (por exemplo, no meio de uma palavra). Nós aconselhamos contudo o uso de ";" em todos os casos, de forma a evitar problemas com os meios ou agentes usados pelos utentes que requiram a presença deste caractére.

3.1 Referências numéricas dos caracteres

As referênciasnuméricas dos caracteres especificam a posição do código de um caractére no conjunto de caracteres do documento. As referências númericas podem assumir duas formas:

  • A sintaxe "&#D;", na qual D é um número décimal, refere-se ao caractére décimal ISO 10646 número D.
  • A sintaxe "H;" ou "H;", na qual H se trata dum número hexadécimal, refere-se ao caractére hexadecimal ISO 10646 número H. Os números hexadécimais definidos pelas referências numéricas dos caracteres são um caso-insensitivo (não se faz distinção entre as maiúsculas e as minúsculas)

Eis aqui alguns exemplos de referências numéricas de caracteres:

  • å (em décimal) representa a letra "a", com um pequeno círculo em cima (useda por exemplo, na Noruega).
  • å representa o mesmo caractére(no código hexadécimal).
  • å (no código hexadecimal) também representa o mesmo caractére.
  • ? (em decimal) representa a letra cirílica maiúscula "I".
  • ? (no código hexadecimal) representa o caractére em Chinês para "água".

Nota: ainda que a representação hexadécimal não esteja definida em [ISO8879], pensa-se contudo que esteja contida na revisão, como o descrito em[WEBSGML]. Esta convenção tornou-se particularmente útil desde que o standard dos caracteres passou a utilizar as representações hexadécimais.

3.2 Referências às entidades dos caracteres

De maneira a fornecer aos autores uma forma mais intuitiva de se fazer uma referência aos caracteres contidos no conjunto de caracteres do documento, o HTML oferece um conjunto de referências às entidades dos caracteres. Essas referências servem-se apenas de nomes simbólicos, para que os autores não se tenham de recordar das posições dos códigos. Por exemplo, a referência à entidade do caractére que é definido por å refere-se à letra minúscula “a” com um círculo por cima; "å" é muito mais fácil de lembrar do que å.

O HTML não define uma referência feita à entidade do caractére para cada caractére contido no conjunto de caracteres de um documento. Por exemplo, não existe nenhuma referência para a letra cirílica "I" maiúscula. Consulte por favor a lista completa das referências dos caracteres definidas em HTML4.

As referências feitas às entidades dos caracteres são um caso-sensível.Assim, Å refere-se a um caractére diferente, nomeadamente à letra maiúscula A com um círculo por cima.

Existem quatro referências feitas às entidades dos caracteres que merecem uma menção especial, dado que elas são frequentemente utilizadas para definir caracteres especiais:

  • "<" representa o sinal < .
  • ">" representa o sinal > .
  • "&" representa o sinal - & -.
  • "" representa o sinal " .

Os autores que pretendam empregar o caractére "<" num texto deverão fazê-lo através de "<" (ASCII decimal 60), de forma a evitar possíveis confusões, relacionadas com o princípio de uma tag (delimitador de abertura de uma "tag"). Similarmente, os autores deverão usar ">" (ASCII décimal 62) num texto, em vez de ">", para evitar problemas relacionados com os meios ou agentes mais antigos usados pelos utentes, os quais o poderão interpretar de uma forma incorrecta como sendo o final de uma "tag" (delimitador de encerramento de uma "tag") sempre que ele apareça entre parênteses, como sendo o valor de um atributo.

Os autores deverão também usar "&" (ASCII décimal 38) em vez de "&", para evitar possíveis confusões relacionadas com o princípio da referência dos caracteres (delimitador de abertura de uma referência de entidades). Os autores deverão ainda usar "&" nos valores dos atributos, desde que as referidas referências sejam permitidas nos valores dos atributos CDATA.

Alguns autores usam a referência """ para codificar as instâncias onde existam parênteses ("), conquanto esse mesmo caractére possa ser usado para delimitar os valores de um atributo.

4 caracteres não representáveis

O meio ou agente usado pelo utente poderá não estar apto a representar de uma forma significativa ou correcta todos os caracteres, dado que ele poderá carecer, a título de exemplo, de uma fonte apropriada ou porque o caractére possui um valor que não pode ser expresso através da codificação de caracteres interna desse mesmo agente, e por aí adiante.

Dado que existem várias soluções, este documento não prescreve qualquer tipo de comportamento específico para esses casos. Dependendo da sua implementação, os caracteres não representáveis poderão ser tratados por um sistema de apresentação subjacente e não pela aplicação em si. Na ausência de outros comportamentos mais sofisticados, por exemplo, à medida das necessidades de uma linguagem ou “script” em especial, nós recomendamos o seguinte comportamento para os meios usados pelos utentes:

  1. Adaptar um mecanismo claramente visível mas não obstrutivo, que alerte o utente para a falta dos referidos recursos.
  2. Se os caracteres em falta forem apresentados usando a sua representação numérica, usar a forma hexadécimal (mas não a décimal), dado que esta é a forma "standard" utilizada para os conjuntos de caracteres.
{mospagebreak}

Referências normativas

[CSS1]
"Folhas de estilo em cascata, Nível 1", H. W. Lie e B. Bos, 17 de Dezembro de 1996. Revisto em 11 Janeiro de 1999. Este é documento http://www.w3.org/TR/1999/REC-CSS1-19990111
[DATETIME]
"Formatos da data e da hora ", W3C Note, M. Wolf e C. Wicksteed, 15 de Setembro de 1997. Revisto em 27 de Agosto de 1998. Este é o documento http://www.w3.org/TR/1998/NOTE-datetime-19980827
[HTML40]
"Especificação HTML 4.0", D. Raggett, A. Le Hors, I. Jacobs. A versão de 24 de Abril encontra-se em http://www.w3.org/TR/1998/REC-html40-19980424. A versão de 24 de Abril incluiu alterações editoriais da Revisão do Original de 18 de Dezembro de 1997.
[IANA]
"Assigned Numbers", STD 2, RFC 1700, USC/ISI, J. Reynolds e J. Postel, Outubro de 1994.
[ISO639]
"Códigos para a representação dos nomes das linguagens", ISO 639:1988. Para mais informação, consulte http://www.iso.ch/cate/d4766.html. Consulte também http://www.oasis-open.org/cover/iso639a.html.
[ISO3166]
"Códigos para a representação dos nomes dos países", ISO 3166:1993.
[ISO8601]
"Elementos dos dados e formatos de intercâmbio – Intercâmbio de informação -- Representação das datas e das horas", ISO 8601:1988.
[ISO8879]
"Processamento da Informação -- Text and Office Systems -- Standard Generalized Markup Language (SGML)", ISO 8879:1986. Por favor, consulte http://www.iso.ch/cate/d16387.html para mais informação acerca do standard.
[ISO10646]
"Tecnologia de Informação -- Universal Multiple-Octet Coded Character Set (UCS) -- Parte 1: Architecture and Basic Multilingual Plane", ISO/IEC 10646-1:1993. Esta referência refere-se a um conjunto de “codepoints” que pode evoluir à medida que novos caracteres lhe sejam atribuídos. Esta referência incluirá para isso futuras alterações desde que elas não alterem as atribuições de caracteres até e incluíndo as primeiras cinco alterações efectuadas em ISO/IE 10646-1:1993. Ainda assim, esta referência prevê que os conjuntos de carcateres definidos por ISO 10646 and Unicode permaneçam equivalentes, carácter por carácter. Esta referência inclui também futuras publicações de 10646 (outras que não a Parte 1) que definem caracteres nos planos 1-16.
[ISO88591]
"Information Processing -- 8-bit single-byte coded graphic character sets -- Parte 1: Alfabeto Latino No. 1", ISO 8859-1:1987.
[MIMETYPES]
Lista de tipos de conteúdo (tipos MIME) registrados. Você pode copiar a lista dos tipos de conteúdos registrados no endereço ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/.
[RFC1555]
"Codificação dos Caracteres em Hebraico nas Mensagens da Internet", H. Nussbacher e Y. Bourvine, Dezembro de 1993.
[RFC1556]
"Processamento dos Textos Bi-Direccionais em MIME", H. Nussbacher, Dezembro de 1993.
[RFC1738]
"Localizadores Uniformes dos Recursos (URL)", T. Berners-Lee, L. Masinter e M. McCahill, Dezembro de 1994.
[RFC1766]
"Tags usadas na Identificação das Linguagens", H. Alvestrand, March 1995. Prevê-se que RFC1766 seja actualizada por http://www.ietf.org/internet-drafts/draft-alvestrand-lang-tags-v2-00.txt, cujos trabalhos estão actualmente em progresso.
[RFC1808]
"Localizadores Uniformes de Recursos Relativos", R. Fielding, Junho de 1995.
[RFC2045]
"Multipurpose Internet Mail Extensions (MIME) Primeira Parte: Format of Internet Message Bodies", N. Freed e N. Borenstein, November 1996. Note que esta RFC torna as referências RFC1521, RFC1522 e RFC1590 obsoletas.
[RFC2046]
"Multipurpose Internet Mail Extensions (MIME) Segunda Parte: Tipos de Meios", N. Freed e N. Borenstein, Novembro de 1996. Note que esta RFC torna as referências RFC1521, RFC1522 e RFC1590 obsoletas.
[RFC2119]
"Key words for use in RFCs to Indicate Requirement Levels", S. Bradner, Março de 1997.
[RFC2141]
"URN Syntax", R. Moats, Maio de 1997.
[RFC2279]
"UTF-8, a transformation format of ISO 10646", F. Yergeau, January 1998. Esta RFC torna a referência RFC 2044 obsoleta.
[RFC2616]
"Protocolo de Transferência do Hipertexto -- HTTP/1.1", R. Fielding, J. Gettys, J. Mogul, H. Frystyk Nielsen, L. Masinter, P. Leach e T. Berners-Lee, June 1999. Esta RFC torna a referência RFC 2068 obsoleta.
[SRGB]
"A Standard Default color Space for the Internet", versão 1.10, M. Stokes, M. Anderson, S. Chandrasekar e R. Motta, 5 de Novembro de 1996. Este é o documento http://www.w3.org/Graphics/Color/sRGB
[UNICODE]
The Unicode Consortium. "The Unicode Standard, Version 3.0", Reading, MA, Addison-Wesley Developers Press, 2000. ISBN 0-201-61633-5. Consulte também http://www.unicode.org/unicode/standard/versions/.
[URI]
"Localizadores Uniformes dos Recursos (URL): Sintaxe Genérica", T. Berners-Lee, R. Fielding, L. Masinter, Agosto de 1998. Note que a Referência RFC 2396 actualiza as Referências [RFC1738] e [RFC1808].
[WEBSGML]
"Final text of revised TC2 to ISO 8879:1986", C. F. Goldfarb, ed., 6 de Dezembro de 1998.

Referências informativas

[ATGL]
"Directrizes referentes à Acessibilidade das Ferramentas de Autoria", J. Treviranus, J. Richards, I. Jacobs, C. McCathieNevile, eds. O último esboço de trabalho destas directrizes referentes à criação de ferramentas de autoria acessíveis está disponível em http://www.w3.org/TR/WAI-AUTOOLS/
[BRYAN88]
"SGML: Manual da Linguagem de Marcação Standard Generalizada destinado aos Autores”, M. Bryan, Addison-Wesley Publishing Co., 1988.
[CALS]
Aquisição contínua e o Suporte durante o Ciclo de Vida (CALS). O CALS é uma estratégia do Departamento encarregado pela estratégia de Defesa, de Defesa, com vista a obter a criação, o intercâmbio e uso efectivos de dados digitais para sistemas de armamento e equipamentos. Para mais informações consulte a CALS home page.
[CHARSETS]
Valores de charset registrados. Você pode copiar a lista dos valores de charset registrados no endereço ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets.
[CSS2]
"Folhas de estilo em cascata, Nível 2", B. Bos, H. W. Lie, C. Lilley, e I. Jacobs, 12 de Maio 1998. Este é o documento http://www.w3.org/TR/1998/REC-CSS2-19980512
[DCORE]
The Dublin Core. Para mais informações consulte http://purl.org/dc
[ETHNO]
"Ethnologue, Languages of the World", 12.a Edição, Barbara F. Grimes editora, Summer Institute of Linguistics, Outubro de 1992.
[GOLD90]
"O Manual do SGML ", C. F. Goldfarb, Clarendon Press, 1991.
[HTML30]
"HyperText Markup Language Specification Version 3.0", D. Raggett, Septembro de 1995. Este é o documento http://www.w3.org/MarkUp/html3/CoverPage
[HTML32]
"Especificação da Referência HTML 3.2", D. Raggett, 14 de Janeiro de 1997. Este é o documento http://www.w3.org/TR/REC-html32
[HTML3STYLE]
"O HTML e as Folhas de Estilo", B. Bos, D. Raggett e H. Lie, 24 March 1997. Este é o documento http://www.w3.org/TR/WD-style-970324
[LEXHTML]
"Analista Lexical do HTML e SGML Básico", D. Connolly, 15 de Junho de 1996. Este é o documento http://www.w3.org/TR/WD-sgml-lex-960615
[OASISOPEN]
A Organization for the Advancement of Structured Information Standards (OASIS): http://www.oasis-open.org/.
[PICS]
Platform for Internet Content (PICS). Para mais informações consulte http://www.w3.org/PICS/
[RDF10]
"Resource Description Framework (RDF) Especificação do Modelo e da Sintaxe", O. Lassila, R. Swick, eds., 22 de Fevereiro de 1999. Este é o documento http://www.w3.org/TR/1999/REC-rdf-syntax-19990222
[RFC822]
"Standard for the Format of ARPA Internet Text Messages", Revised by David H. Crocker, Agosto de 1982.
[RFC850]
"Standard for Interchange of USENET Messages", M. Horton, Junho de 1983.
[RFC1468]
"Codificação dos Caracteres Japoneses nas Mensagens da Internet", J. Murai, M. Crispin, e E. van der Poel, Junho 1993.
[RFC1630]
"Universal Resource Identifiers in WWW: A Unifying Syntax for the Expression of Names and Addresses of Objects on the Network as used in the World-Wide Web", T. Berners-Lee, Junho de 1994.
[RFC1866]
"HyperText Markup Language 2.0", T. Berners-Lee e D. Connolly, Novembro de 1995.
[RFC1942]
"HTML Tables", Dave Raggett, Maio de 1996.
[RFC2048]
"Multipurpose Internet Mail Extensions (MIME) Quarta Parte: Registration Procedures", N. Freed, J. Klensin e J. Postel, Novembro de 1996. Note que esta RFC torna as Referências RFC1521, RFC1522 e RFC1590 obsoletas.
[RFC2070]
"Internationalization of the HyperText Markup Language", F. Yergeau, G. Nicol, G. Adams, e M. Dürst, Janeiro de 1997.
[RFC2388]
"Returning Values from Forms: multipart/form-data", L. Masinter, Agosto de 1998. Consulte ainda a Referência RFC 1867, "Form-based File Upload in HTML", E. Nebel e L. Masinter, Novembro de 1995.
[SP]
SP é um processador de SGML no domínio público. Para mais informações, consulte http://www.jclark.com/sp/index.htm.
[SQ91]
"The SGML Primer", 3.a Edição, SoftQuad Inc., 1991.
[TAKADA]
"Multilingual Information Exchange through the World-Wide Web", Toshihiro Takada, Computer Networks and ISDN Systems, Vol. 27, No. 2, pp. 235-241, Novembro de 1994.
[UAGL]
"User Agent Accessibility Guidelines", J. Gunderson e I. Jacobs, editores. O último esboço de trabalho destas directrizes na criação de agentes acessíveis está disponível em http://www.w3.org/TR/WAI-USERAGENT.
[WAI]
As directrizes para a criação de documentos HTML acessíveis estão disponíveis na homepage da Web Accessibility Initiative (WAI): http://www.w3.org/WAI.
[WCGL]
"Web Content Accessibility Guidelines 1.0", W. Chisholm, G. Vanderheiden, e I. Jacobs, editores, 5 de Maio de 1999. Este é o documento http://www.w3.org/TR/1999/WAI-WEBCONTENT-19990505.
[VANH90]
"Practical SGML", E. van Herwijnen, Kluwer Academic Publishers Group, Norwell e Dordrecht, 1990.
[XHTML]
"XHTML[tm] 1.0: The Extensible HyperText Markup Language", S. Pemberton et al. A última versão desta especificação está disponível em http://www.w3.org/TR/xhtml1. A partir da publicação do corrente documento, o XHTML 1.0 é uma Recomendação proposta pela W3C.

 

O que é DNS (e DNSSEC) bem explicadinho

E-mail Imprimir PDF

Para que você visite um site ou envie um e-mail, um servidor DNS antes assegura se você bate na porta certa. O DNSSEC vem trazer mais segurança.

Por Ricardo Vaz Monteiro

Quando você visita um site através do seu navegador ou quando envia um email, a internet precisa saber em qual servidor o site e o e-mail estão armazenados para poder responder à sua solicitação. A informação da localização destes servidores está em um servidor chamado DNS (Domain Name Server).

Cada domínio possui um registro no DNS que define qual o endereço IP do servidor de hospedagem e o IP do servidor de e-mail que responderão por este domínio. O processo para a descoberta dos servidores que respondem por um domínio é denominado “resolução do nome” ou “resolução do domínio”.

O navegadores e os sistemas clientes de e-mail solicitam que a internet faça a resolução do domínio para apresentar um site, ou enviar um e-mail. Esse processo é totalmente transparente para o usuário, que apenas digita o site que quer visitar e o navegador descobre em qual servidor o site está hospedado e em seguida solicita para o servidor de hospedagem que envie a página inicial.

Por segurança, um domínio pode definir vários servidores DNS. O DNS primário é o primeiro sistema a ser consultado no momento da resolução do nome, caso o servidor DNS primário esteja em manutenção, o servidor DNS secundário é consultado, e assim sucessivamente.

Devido ao intenso tráfego da internet e devido à segurança da rede, a estrutura do banco de dados DNS é distribuída e hierárquica. Ou seja, ao invés de um banco de dados central e único com informações de todos os domínios, a resolução ocorre consultando-se diversos servidores DNS e sua resolução é hierárquica (um servidor DNS pode apontar para outro servidor DNS e assim sucessivamente).

A estrutura hierárquica equivale a uma árvore invertida, ou seja, existe um servidor principal que aponta para um secundário que aponta para um terceiro e assim sucessivamente. O servidor DNS que está no topo da internet é o servidor raiz.

 

servidor_dns.jpg

 

Servidor raiz

O servidor raiz da internet possui uma tabela que indica qual DNS será responsável pela resolução dos domínios para cada extensão de domínio (Top Level Domain) diferente.

A tabela em si é muito pequena, possui apenas uma entrada para cada Top Level Domain existente. Os Top Level Domains são de dois tipos: gTLDs (Generic Top Level Domains - domínios genéricos usados no mundo todo) e ccTLDs (Country Code Top Level Domains - extensões de domínios administrados pelos países).

Por exemplo: todos os domínios terminados em .com serão respondidos pelos servidores da VeriSign; os domínios .br serão respondidos pelos servidores do Registro.br e assim sucessivamente. Cada gTLD ou ccTLD tem apenas uma entrada neste banco de dados.

Por segurança, o servidor raiz foi replicado em 13 servidores raízes diferentes espalhados pelo mundo e duas vezes ao dia seu conteúdo é automaticamente replicado.

Foi convencionado que cada servidor raiz seria chamado por uma letra do alfabeto (Servidor A, Servidor B etc…). Mesmo um determinado servidor raiz, o servidor raiz A, por exemplo, pode ser replicado em várias regiões do mundo, para assegurar que o tempo para a resolução de um domínio seja rápido (baixa latência).

Bem, então na verdade existem treze servidores raiz principais e dezenas de cópias espalhadas pelo mundo. Veja na imagem abaixo a plotagem dos servidores raizes e suas cópias em funcionamento no mundo.

 

servidores_raizes.jpg

 

Os grandes provedores de acesso e empresas de telecomunicações arquivam em seus caches (memória temporária) a tabela dos servidores raiz. Portanto, a cada e-mail enviado ou site visitado os servidores raiz não são obrigatoriamente consultados.

Na verdade, o volume de consultas a estes servidores é muito pequeno, já que sua tabela é alterada apenas quando um novo top level domain é criado. Quem realmente processa o maior volume de queries para resolução de nomes são os servidores dos TLDs (Top Level Domains).

Por exemplo: um servidor raiz normalmente recebe 500 queries por dia e os servidores da VeriSign (responsável pela resolução dos domínios .com) recebem bilhões de queries diariamente.

DNSSEC

A estrutura hierárquica de resolução de nomes, onde um DNS aponta para outro DNS, possui um problema intrínseco de segurança. Imagine a hipótese que um provedor de acesso capture uma querie para resolução de um nome e inadvertidamente responda com um endereço errado de onde o site esteja hospedado. Neste exemplo, você poderia solicitar no seu navegador o endereço www.itau.com.br e o provedor fornecer por erro www.brasdeco.com.br, ou pior, um site phishing, que simula o site do banco Itaú.

Um dos maiores problemas desta hipótese é que realmente seria impossível identificar que o provedor de acesso fez isso. Portanto, para dar segurança a estrutura de resolução de nomes a IETF (Internet Engineering Task Force) criou uma extensão do uso atual do DNS denominado DNSSEC.

A extensão DNSSEC autentica as informações do DNS e garante que estas informações são autênticas e íntegras. Sua adoção depende de cada Top Level Domain. O Registro.br, responsável pela administração dos domínios .br já começou a permitir o registro de domínios com o DNSSEC para algumas extensões como .blog.br, .eng.br etc.

O mercado aguarda a liberação do uso do DNSSEC para a extensão .com.br, de longe a mais utilizada no país. O mercado bancário e financeiro devem ser os primeiros a aderir ao DNSSEC e devem solicitar para que as empresas responsáveis pela sua hospedagem façam esta implementação extra de segurança.  Fonte [Webinsider]

 

Galerias - Qual usar ?

E-mail Imprimir PDF
Bom, nesse artigo que completar um artigo que criei anteriormente [6] e atualizar um pouco o que havia dito sobre as galerias zOOm e Pony,


aqui também vou lhe convencer à desapegar da zOOm em poucos passos, vou te sugerir galerias e comentar as tendências e novidades,
do artigo anterior para esse instalei também a Gallery2, DatsoGallery e RSGallery2, ainda não me arrisco a dizer sobre elas porque estou nos testes ainda.

Mas entre a Pony e a zOOm depois do artigo anterior eu ainda me arrisquei com a zOOm lancei um fork[2] dela e mais uma vez queimei a mão !
Vi que depois de MUITAS imagens o CSS destorceu, e como ela (nem a pony aparentemente) têm uma paginação das galerias, ficou lá umas 100 galerias uma em cima da outra como se tivessem todas com position:absolute no css... ficou cruel e tive que usar ela como tabelas, criar um wrapper dela e colocar em um link do site 'Fotos Antigas' e instalar a pony e uma outra instalação do JOOMLA no meu servidor,
Conclusão: por mais que a zOOm seja atraente pelo envio APPLET e a rotação individual de imagens mesmo após o envio para o servidor, eu vou ficar com a Pony.

Vamos fazer uma 'tabela da verdade' aqui eheheheh

Defeitos REAIS da zOOm Media Gallery:
- Ajax nas galerias:
Já aconteceu de depois de MUITAS fotos uma galeria simplesmente sumir, fora o fato de que de vez em quando some o ícone de 'Nova Galeria', Ajax é web 2.0 mas é perigoso em minha opinião, há boatos de uma versão da zOOm sem o Ajax, porém antiga... ou seja, não trocarei seis por meia dúzia e substituir os defeitos do Ajax por possíveis defeitos que devem ter corrigidos modificando de versão.

- CSS POG[1]:
Descobri o POG do CSS só quando me vi com mais de 60 galerias na ZOOM, a exibição até as primeiras 30 estava legal e as outras as fotos subiam umas em cima das outras como se os divs estivessem com 'position:absolute', me chatiei, coloquei no modo de exibição em tabelas e ficou 'menos feio'.

- Fundo Preto (zOOm original, baixada na zOOm factory):
Alguém já instalou a zOOm em um site com fundo preto?
Fica completamente inviável, é claro para todos de que os antigos administradores e desenvolvedores da zOOm media gallery não investiram em layout, todos sabiam e MUITO BEM php e css, já photoshop, fireworks e derivados nunca foram o forte deles e acho que com razão nunca se preocuparam com isso, afinal já estão fazendo algo free, que os próprios usuários mecham como quiser (é claro que de acordo com a licença tem que ser redistribuido), e assim eles, quer dizer, eu fiz ehehe [2], coloquei essa fork só troquei os ícones, fiz algo para uso próprio mas que talvez auxilie mais gente.
Mas eu também parei com essas tentativas de conserto da zOOm, vi que eles provavelmente se renderam aos defeitos (mesmo que não sejam muitos) quando descontinuaram o projeto.

Mas enfim, continuando os problemas que encontrei pelo caminho de uso.

- Módulo de exibição de Imagens (mod_zoompics):
Esse eu acho que é simplesmente de onde saiu o módulo da Pony, ou seja, esse é o originaaal, e quem disse que o original é sempre o melhor?
O módulo de exibição de imagens da zOOm dá problema se colocado no modo horizontal com alguns templates, na verdade todos que testei, mas no site deles tinha esse módulo rodando liso na horizontal
Esse foi um que mechi também, dei uma desentortada nele pra ficar na horizontal redondo e ficou, mas as imagens não ficam com um tamanho balanceado (se coloco uma imagem horizontal e outra vertical) os tamanhos ficam muito estranhos e você sempre vê uma imagem que se não se adequa aos padrões que você definiu para largura e altura e acaba as vezes as imagens (me refiro das miniaturas) ficando muito pequenas ou muito grandes.

- Módulo de exibição de comentários:
Aí você me diz, ué... desse eu não sabia, existe?
Existe, um belo dia eu abri um Notepad++ aqui e disse HOJE VAI SAIR, e olhando o banco e o php fui fazendo uma SQL para pegar os comentários e a foto do cara e o nome do cara.
Beleza, uma madrugada perdida depois de chegar no serviço de manhã parecendo que tinha fumado maconha e festado a madruga inteira, ferver o cerebro eu abro o site da PonyGallery e tem um módulo assim 'PonyComments' "¬¬_
Conclusão, serviço em vão denovo. Sem contar que meu módulo não exibe os emoticons dos comentários porque eu não soube fazer a substituição pelas imagens, e não funciona só de instalar no joomla porque tem que substituir o nome do usuário, senha e host do banco no mod_clickcomment.php primeiro. Ou seja, inviável. (Se alguem quiser mesmo depois desse post trabalhar em cima dele me manda uma MP com o email que eu envio ele)

Bom, chega de meter o pau na zOOm porque na realidade o serviço foi muito bem elaborado, só não devia ter sido descontinuado.

Vamos para a Pony e seus defeitos (Ao contrário do que você está pensando agora, ela não é perfeita):

- Envio em ZIP:
Esse é o mais cruel! Esses dias um dos meus fotógrafos e desacostumado com a Pony me perguntou:
"Olha, as fotos deram 700 MB, posso enviar que o sistema redimensiona e carimba né?"
Eu quase pulei da cadeira na hora que ele falou isso, PELO AMOR DE DEUS, num envia um arquivo desse tamanho não!
Se ele enviasse por mais que no meu php.ini estivesse com 70.000 MB de permissão de envio o risco de dar errado era 99% por causa de um timeout ou qualquer coisinha, fora o fato de que ele não vai ver o processo de envio porque vai ficar somente como página carregando e não há um que aguente ficar em frente do pc com uma janela carregando a vida toda (literalmente), destaco nesse ponto o applet da zOOm que falaremos mais à frente.

- Publicar galeria (defeito relevante):
Uma dúvida básica, se eu crio uma galeria, pasta ou sei lá o que a minha intenção é qual ?
Exibi-la, correto ?
Então porque vem por padrão despublicada? e toda vez você tem que publicar?
Quando é você que administra seu site é simples, mas no meu caso que tive que criar um tutorial de publicação de fotos para os managers do site esse foi um passo a mais da video-aula, achei ruim isso. Claro que não achei ruim o fato de publicar e despublicar hora que quiser, isso inclusive é uma vantagem sobre a zOOm que se você quiser despublicar uma galeria você tem que deletar ela.

- Galerias Permitidas (Defeito relevante, ou não):
"Escolha lista de galerias para qual os usuarios podem postar imagem via 'Minha Galeria' . Se nada for selecionado as postagens por upload são invalidas!".
É assim que a gente vê nas configurações da Pony (na aba Permissões do Usuário)
Uma dúvida, se eu permito o envio de imagens sem aprovação do administrador, porque eu tenho que escolher as galerias que podem se eu já permiti o envio para todas consequentemente permito também para o FTP, correto ou não ?
Mas aí você pode me dizer... "É para dar opção de permitir um envio para uma galeria somente, ou algumas só."
Mas então porque não deixar uma opção "Permitir o envio FTP para todas as galerias"? Seria super viável para mim se eu tivesse essa opção assim não teria que permitir sempre esse envio, mas tudo bem não vou criticar muito a função FTP Upload porque não me aventurei muito com ela, se eu tivesse me aventurado muito com ela talvez tivesse conseguido integrar o JUpload.biz com ela, mas isso não vem ao caso (por enquanto).

- Numero maximo de imagens (Configurações - Segunda aba / Defeito relevante):
O tanto de imagens que eu quero que meu usuário envie, se eu quiser infinito onde estão os números eu escrevo: "Infinito"?


Certo, não tem muitos defeitos à serem citados da Pony e a maioria são relevantes (ao meu ponto de vista),

Vamos falar um pouquinho (mas pouco mesmo para não extender muito a minha conversa e ficar parecendo que eu tô achando que sei tudo de galerias, lembrando que aqui eu só conto as minhas experiências com as galerias, como se diz, qualquer coisa que possa parecer real é mera coincidências rs) das qualidades da Pony

- Envio ZIP:
"Ué, mas agora a pouco você não citou como um defeito?"
Mas imagina se não tivesse "¬¬
É um defeito desde que você queira enviar 1000 fotos de uma vez, mas é bem melhor que ficar colocando as 1000 fotos campo por campo.
E o envio ZIP faz tudo que o envio ZIP da zOOm faz, então coloquei como qualidade para ambas.

- Publicar e despublicar galerias
Isso é muito útil quando quer sumir com uma galeria, na zOOm só deletando ou achando a classe dela no CSS e colocando display:none; hahaha

- Código limpo:
O código interno da zOOm é mil vezes mais comentado e identado do que o da zOOm, mas isso a gente já vê só de ser usuário comum.

- Site limpo:
A adaptação ao fundo do site, ao css e a maleabilidade dos estilos da Pony é um ponto forte na comparação dela com a zOOm media gallery.

- Avançar e Voltar pelas setas do teclado:
Isso é fantástico, e tão bem elaborado, que o próprio Orkut que é da Google tá adaptando isso agora (25/09/2008)! A Pony pensou antes mesmo deles.

- Marca d'agua em tempo real:
Isso quase ninguém viu mas a pony pinta as fotos sem manchar o tecido por assim dizer, ela faz o upload das fotos mas só coloca a marca d'agua no momento de que o usuário tá vendo as fotos, ou salvando, é colocado no sistema a marca d'agua e não é aplicado nas fotos originais, ou seja... você mantém no servidor as fotos originais sem marca-las e mostra pro usuário marcada, de quebra você pode colocar para que só você possa fazer download dela sem a marca. Isso para mim foi sensacional, normalmente dá um peso maior para o carregamento da página, mas pensaram nisso também e trabalharam para que ficasse leve.

- Comentários como 'Convidado':
Quem trabalha com comentários nas fotos já passou por aquela situação do individuo usando seu site como divulgação do site dele que não tem nada haver com o assunto do seu, ou talvez que seja até seu concorrente?
Então, a Pony pensou nisso e nas configurações ela (diferente da zOOm) deixa você nomear quem não for registrado de "Convidado" sem dar opção do sujeito colocar o próprio nome, na zOOm o cara pode comentar e colocar o nome de "Admin" e dizer como se fosse você, até que você exclua o comentário muita gente já pode ter lido.

- Envio para amigo:
Não é lá um E-Card bonitinho fresquinho que nem o da zOOm mas é bem objetivo e envia para a amizade a foto apontada sem problema algum.

- Javascript com as miniaturas das fotos embaixo das mesmas:
Aquelas miniaturinhas em baixo de cada foto, aquilo é útil pro convidado de um jeito que você não tem idéia, esse é também mais uma qualidade da galeria.

- BBCode nos comentários:
Sempre achei esse essencial, nos sites que faço em Django + Python a primeira coisa que procuro é um TinyMCE pra instalar e o pobre coitado do noob em HTML, nos comentários é muito importante ter um auxiliar de BBCODE também igual temos no AkoComment, mas nisso ainda não pensaram... vamos considerar também mais um erro relevante.

Chega de pony!

Para não estender mais ainda vamos falar menos ainda das qualidades da zOOm.

- Envio através do applet Java:
O maldito só foi me despertar curiosidade depois de uns 3 meses usando a zOOm, vi lá "Arrastar e soltar" e pensei: Que isso aqui gente?
Até que me apaixonei no plugin da zOOm ><
No caso que contei anteriormente pra você que tá lendo desde o começo o meu fotógrafo poderia enviar os 700 MB através do Java Applet [3]
sem problema algum, o resultado seriam fotos publicadas distribuídas e já podendo ser visualizadas pelos usuários, lembrando que a Pony não faria tudo automatico porque você tem que publicar a galeria (vem como padrão despublicada) para que possa tudo funcionar normalmente. Com a zoom a automatização seria certa enquanto o fotógrafo tirasse um cochilo, ou mesmo ficasse vendo serem enviadas já que no applet tem uma barra exata de progresso que cada arquivo que está sendo enviado.

- Rotação individual de imagens
Opa! Mandei uma imagem que era na horizontal mas tá na vertical, preciso fazer um 90° com ela, calma... a zOOm resolve - a Pony não.

- Zoom:
Nada mais justo que a zOOm image gallery tivesse ZOOM!
ehehe tem sim, ela tem um zOOm com as setas para baixo a para cima, legal... mas não é algo que você vai usar com frequência (desde que o Windows lançou o "Visualizador de imagens e fax do Windows" ou então um Gnome Image Viewer, ACDsee etc...) Resumindo, o usuário prefere baixar e ter o zoom no próprio se ele está com a imagem aberta é porque ele tem interesse, se ele tem interesse ele vai salvar (desde que inventaram o HD com mais de 2 Gb), então, inviável porém é um à mais para a galeria em relação a Pony.


Pois bem,
Acho que descrevi um tanto booooom o que achei de cada uma nesse artigo, quero deixar claro que por mais uma tenha dado POG e a outra não, ainda tenho muito à descobri sobre as duas, a diferença é que a minha atualização com a que uso atualmente (Pony Image Gallery) será maior que a da zOOm que só usarei quando um cliente me pedir uma galeria para muitas imagens e poucas galerias (evitar o POG do CSS no futuro).
Fora isso ambas têm o risco de melhor ou piorar, isto é, se os desenvolvedores da zOOm continuarem em algum momento, esperança e sogra são as últimas que morrem... concerteza o componente e seus módules têm tudo para ser sucesso e apoio isso, mas por mais que eu tenha falado muito das duas galerias não podemos esquecer que teremos revelações durante esse semestre ainda, como por exemplo a ...

RSGallery2 que o Administrador já anunciou que integrará um Java Uploader[4] isso tornaria a galeria uma excelente alternativa, ela já é uma excelente galeria que evoluiu muito rápido (tudo bem que está bem lerdo atualmente) mas que trabalharam muito no inicio dela, então ela tem uma base muito bem construída e já serve para o Joomla 1.5 na nova versão.

Temos também a Gallery2 - Que pelo que parece os desenvolvedores já se sentem no topo e aparentemente não mudam tanto quanto poderiam mudar, a integração dela com o Joomla não parece muito boa visualmente (até que alguém me prove o contrário com bons templates), precisa de um componente para integra-la fica parecendo um wrapper ou iframe, porém ela tem só tudo, ela sozinha já é um CMS.
Mas como assim ?
Na instalação dela, que tem que ser feito separadamente do Joomla, ela te questiona o que você irá usar e FAZ O DOWNLOAD dos plugins necessários, instala somente o que você precisa e roda redondo, ela tem inclusive o tão falado Java Uploader, tem um Uploader exclusivo para Windows XP para você enviar as fotos direto do Windows Explorer, se você der uma olhada na comparação[5] de todas as galerias (apesar de ser no site da Gallery2) você vê que ela é a mais completa das galerias, fora o fato de já funcionar no Joomla 1.5.

Temos a Datso Gallery que eu desisti de testa-la novamente para publicar algo mais completo aqui quando fui procura-la novamente e me deparei com o site em francês (alemão? ou russo? não sei), sei que no primeiro teste pareceu um clone qualquer da Pony com chances para ser uma galeria bem sucedida e que está ao mesmo nível da pony sem mais nem menos, não tive tempo para testar os módulos.

Temos a Exposé 4:
Que o nosso amigo Eunir testou mais do que eu, mas que serve 100% para quem quer um site bonito e com poucas fotos, ela é sensacional para isso.
Esquece o envio em zip ¬¬

Temos a EasyGallery que eu não testei ainda quando li que não se compara com a Datso :O
Ignorei de primeira, mas me comprometo à testar se eu chegar no site do desenvolvedor e tiver atualizações constantes.

Enfim, entre outras galerias aí que ainda estou para testar deixo as considerações finais a quem me leu aqui agora, que avalie com a comparação (muito boa) das galerias [4] as reais necessidades do seu projeto e aplique com cautela o componente que precise, modele a galeria, não rejeite o componente de primeira só porque não foi com a cara das configurações, especule, os fóruns são para questionar mesmo e discutir, sempre temos dúvidas e todos temos.
Espero que tenham gostado do artigo, peço desculpas por algum possível equívoco, comentário, citação ou invericidade, mas como eu disse ficou aqui a minha experiência com o uso dos componentes descritos acima e concerteza com a mudança das versões esse meu artigo ficará "deprecated" (ultrapassado), mas serve para quem tiver tentando começar um site com fotos usando o Joomla 1.0.15.

[1] http://desciclo.pedia.ws/wiki/POG
[2] http://www.joomlaclube.com.br/site/index.php?option=com_fireboard&Itemid=86&func=view&id=14843&catid=5
[3] http://www.jupload.biz
[4] http://rsgallery2.net/component/option,com_smf/Itemid,17/topic,15557.0
[5] http://www.gallery-addons.com/Gallery-Addons/Component/Media_Gallery_Feature_Comparison/
[6] http://www.joomlaclube.com.br/site/index.php?option=com_content&task=view&id=208&Itemid=138

-------------------------------------
Download das galerias citadas:
Pony Gallery: http://www.en.joomgallery.net
Gallery2: http://www.gallery2.org
RsGallery2: http://rsgallery2.net/content/view/92/62/
DatsoGallery: http://www.datso.fr
zOOm Gallery: http://www.zoomfactory.org/downloads/
zOOm Gallery (modificado por mim): http://www.clicknight.net/com_zoom-Lmax.zip
Exposé 4: http://joomlacode.org/gf/project/expose/frs/


Buy Elvis

A Pony ressucitou com o nome de JoomGallery. Testei e achei muito legal. Nem comparação com a anterior.

Outra muito boa e elegante que testei foi a Phoca Gallery. Ela é nova, mas está crescendo rápido e já tem diversos add-ons para ela.

 

Espero ter ajudado,
Fiquem com Deus,

Max
-------------------------------------
Dúvidas, Criticas e Sugestões:

\n \n Este endereço de e-mail está protegido contra spambots. Você deve habilitar o JavaScript para visualizá-lo.
 

Top Comentaristas

Últimos comentários