Mostrando postagens com marcador Webdesign. Mostrar todas as postagens
Mostrando postagens com marcador Webdesign. Mostrar todas as postagens

sexta-feira, 22 de janeiro de 2010

Coding Standards

* Artigo do site iConnect.

Por que aprender Coding Standards?

Atualmente, fala-se um pouco sobre Code Standards. Porém, fala-se bem mais do que há 5 anos. Com o "boom" do Tableless, a W3C ganhou um pouco mais de visibilidade, e seus padrões começaram a ser praticados no meio web, abrangendo basicamente HTML, CSS, XML, etc.
O grande diferencial passa a ser notado quando se define Code Standards no desenvolvimento em linguagens como: PHP, JavaScript, etc. A Sun tem uma ótima documentação de Code Standards, que normalmente é seguida pelos desenvolvedores Java, e criou também, um Padrão de Documentação em Código excelente, conhecido como JavaDoc, onde há ferramentas que geram a documentação em HTML e outros formatos baseados nos blocos de documentação feitos no código fonte.
Mais tarde, baseados nesse padrão, surgiram: PHPDoc, JSDoc e CSSDoc, seguindo a mesma base e estrutura de documentação, o que facilita a tomada de decisão com relação a qual padrão de documentação deve-se seguir.

Qual a importância?

Em se definindo e aplicando "Padrões de Codificação e Documentação", há um enorme ganho com:
  • Facilidade de implementação;
  • Melhorias no código em:
    • Visibilidade;
    • Portabilidade;
    • Reaproveitamento;
  • Redução de tempo em:
    • Adaptação de novos desenvolvedores.
    • Manutenção;
    • Migração;
    • Identificação, rastreamento e correção de erros.
  • Diminuição de reescrita de código por falta de documentação.
Nas fábricas de software, padrões de codificação, nomenclaturas e documentação refletem diretamente na diminuição do alocação de recursos e consequentemente prazo de entrega, tempo de desenvolvimento e custo final do projeto.

Fator profissional

Por ser uma prática pouco conhecida e disseminada entre desenvolvedores Júnior e Pleno, o profissional que trabalha sob coding standards destaca-se entre os demais. A necessidade/utilidade é percebida ao entrar em um ambiente de desenvolvimento com maior número de profissionais, observando a realidade das fábricas de softwares.
Com certeza, há uma tendência natural de que Code Standards seja um requisito obrigatório para quem é ou pretende ser arquiteto de linguagem, seja Java, PHP, Delphi ou qualquer outra. Para desenvolvedores Java é praticamente requisito indispensável seguir o padrão oferecido pela SUN, e para desenvolvedores PHP já temos ótima disseminação do assunto nos recentes eventos nacionais e regionais, bem como o "PHP Standards", que está sendo discutido e elaborado por vários líderes de  projetos/frameworks de renome. Em breve, teremos um padrão a ser seguido para projetos a partir da versão 5.3 do PHP.

Onde encontrar informações:

Se você trabalha com PHP, há o artigo: PHP Coding Standards falando sobre o assunto e com materiais de referência que irão facilitar muito sua vida. Sendo Java: Code Conventions for the Java Programming Language.
Em breve publicarei mais artigos aprofundando esse assunto que, com certeza, é bastante abrangente e importante.

Fonte: iMasters

Técnicas para reset CSS

* Artigo do site iConnect.

Por padrão, todos os elementos HTML possuem um estilo incorporado, e isso varia de browser para browser, não existe um padrão. Com isso você pode passar por vários problemas ao tentar desenvolver CSS Cross-browser.

Para evitar esse tipo de problema, é aconselhável utilizar técnicas de CSS Reset, ou seja, iniciar o CSS com todos as tags HTML sem qualquer estilo padrão definido pelo browser. Abaixo vou mostrar algumas técnicas, algumas desconhecias por alguns, outras já utilizadas por default por vários desenvolvedores.

1. Generic Reset CSS

Esse com certeza é o mais conhecido e utilizado pelos desenvolvedores:
* {
    padding: 0;
    margin: 0;
    border: 0;
}

2. Ateneu Popular CSS Reset

CSS inicial sugerido pelo site Ateneu Popular

html, body, div, span, applet, object, iframe, h1, h2, h3,
h4, h5, h6, p, blockquote, pre, a, abbr, acronym,
address, big, cite, code, del, dfn, em, font, img, ins,
kbd, q, s, samp, small, strike, strong, sub, sup, tt,
var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-weight: inherit;
font-style: inherit;
font-size: 100%;
font-family: inherit;
vertical-align: baseline;
}
:focus { outline: 0;}
a, a:link, a:visited, a:hover, a:active{text-decoration:none}
table { border-collapse: separate;border-spacing: 0;}
th, td {text-align: left; font-weight: normal;}
img, iframe {border: none; text-decoration:none;}
ol, ul {list-style: none;}
input, textarea, select, button {font-size: 100%;font-family: inherit;}
select {margin: inherit;}
hr {margin: 0;padding: 0;border: 0;color: #000;background-color: #000;height: 1px}

3. Chris Poteet's Reset CSS

Técnica sugerida por Chris Poteet's para Reset CSS:
* {
    vertical-align: baseline;
    font-family: inherit;
    font-style: inherit;
    font-size: 100%;
    border: none;
    padding: 0;
    margin: 0;
}
body {
    padding: 5px;
}
h1, h2, h3, h4, h5, h6, p, pre, blockquote, form, ul, ol, dl {
    margin: 20px 0;
}
li, dd, blockquote {
    margin-left: 40px;
}
table {
    border-collapse: collapse;
    border-spacing: 0;
}

4. Yahoo's CSS Reset

Técnica de Reset CSS proposta pelo Yahoo:
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,
form,fieldset,input,textarea,p,blockquote,th,td {
    padding: 0;
    margin: 0;
}
table {
    border-collapse: collapse;
    border-spacing: 0;
}
fieldset,img {
    border: 0;
}
address,caption,cite,code,dfn,em,strong,th,var {
    font-weight: normal;
    font-style: normal;
}
ol,ul {
    list-style: none;
}
caption,th {
    text-align: left;
}
h1,h2,h3,h4,h5,h6 {
    font-weight: normal;
    font-size: 100%;
}
q:before,q:after {
    content:'';
}
abbr,acronym { border: 0;
}

5. Eric Meyer Reset CSS

Esse com certeza deve ser o mais utilizado entre os desenvolvedores, proposto por Eric Meyer, é o que eu utilizo atualmente:
html, body, div, span, applet, object, iframe, table, caption,
tbody, tfoot, thead, tr, th, td, del, dfn, em, font, img, ins,
kbd, q, s, samp, small, strike, strong, sub, sup, tt, var,
h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr,
acronym, address, big, cite, code, dl, dt, dd, ol, ul, li,
fieldset, form, label, legend {
    vertical-align: baseline;
    font-family: inherit;
    font-weight: inherit;
    font-style: inherit;
    font-size: 100%;
    outline: 0;
    padding: 0;
    margin: 0;
    border: 0;
}
:focus {
    outline: 0;
}
body {
    background: white;
    line-height: 1;
    color: black;
}
ol, ul {
    list-style: none;
}
table {
    border-collapse: separate;
    border-spacing: 0;
}
caption, th, td {
    font-weight: normal;
    text-align: left;
}
blockquote:before, blockquote:after, q:before, q:after {
    content: "";
}
blockquote, q {
    quotes: "" "";
}

6. Tantek Celik Reset CSS

Técnica de Reset CSS proposta por Tantek Celik:
:link,:visited { text-decoration:none }
ul,ol { list-style:none }
h1,h2,h3,h4,h5,h6,pre,code { font-size:1em; }
ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,body,html,p,blockquote,fieldset,input
{ margin:0; padding:0 }
a img,:link img,:visited img { border:none }
address { font-style:normal }

7. Christian Montoya Reset CSS

Técnica sugeria por Christian Montoya:
html, body, form, fieldset {
    margin: 0;
    padding: 0;
    font: 100%/120% Verdana, Arial, Helvetica, sans-serif;
}
h1, h2, h3, h4, h5, h6, p, pre,
blockquote, ul, ol, dl, address {
    margin: 1em 0;
    padding: 0;
}
li, dd, blockquote {
    margin-left: 1em;
}
form label {
    cursor: pointer;
}
fieldset {
    border: none;
}
input, select, textarea {
    font-size: 100%;
    font-family: inherit;
}

8. Rudeworks Reset CSS

Técinca de Reset CSS proposta por Rudeworks

* {
    margin: 0;
    padding: 0;
    border: none;
}
html {
    font: 62.5% "Lucida Grande", Lucida, Verdana, sans-serif;
    text-shadow: #000 0px 0px 0px;
}
ul {
    list-style: none;
    list-style-type: none;
}
h1, h2, h3, h4, h5, h6, p, pre,
blockquote, ul, ol, dl, address {
    font-weight: normal;
    margin: 0 0 1em 0;
}
cite, em, dfn {
    font-style: italic;
}
sup {
    position: relative;
    bottom: 0.3em;
    vertical-align: baseline;
}
sub {
    position: relative;
    bottom: -0.2em;
    vertical-align: baseline;
}
li, dd, blockquote {
    margin-left: 1em;
}
code, kbd, samp, pre, tt, var, input[type='text'], textarea {
    font-size: 100%;
    font-family: monaco, "Lucida Console", courier, mono-space;
}
del {
    text-decoration: line-through;
}
ins, dfn {
    border-bottom: 1px solid #ccc;
}
small, sup, sub {
    font-size: 85%;
}
abbr, acronym {
    text-transform: uppercase;
    font-size: 85%;
    letter-spacing: .1em;
    border-bottom-style: dotted;
    border-bottom-width: 1px;
}
a abbr, a acronym {
    border: none;
}
sup {
    vertical-align: super;
}
sub {
    vertical-align: sub;
}
h1 {
    font-size: 2em;
}
h2 {
    font-size: 1.8em;
}
h3 {
    font-size: 1.6em;
}
h4 {
    font-size: 1.4em;
}
h5 {
    font-size: 1.2em;
}
h6 {
    font-size: 1em;
}
a, a:link, a:visited, a:hover, a:active {
    outline: 0;
    text-decoration: none;
}
a img {
    border: none;
    text-decoration: none;
}
img {
    border: none;
    text-decoration: none;
}
label, button {
    cursor: pointer;
}
input:focus, select:focus, textarea:focus {
    background-color: #FFF;
}
fieldset {
    border: none;
}
.clear {
    clear: both;
}
.float-left {
    float: left;
}
.float-right {
    float: right;
}
body {
    text-align: center;
}
#wrapper {
    margin: 0 auto;
    text-align: left;
}

9. Anieto2K Reset CSS

Técnica de Reset CSS proposta por Andrés Nieto:
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p,
blockquote, pre, a, abbr, acronym, address, big,
cite, code, del, dfn, em, font, img,
ins, kbd, q, s, samp, small, strike,
strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
center, u, b, i {
    margin: 0;
    padding: 0;
    border: 0;
    outline: 0;
    font-weight: normal;
    font-style: normal;
    font-size: 100%;
    font-family: inherit;
    vertical-align: baseline
}
body {
    line-height: 1
}
:focus {
    outline: 0
}
ol, ul {
    list-style: none
}
table {
    border-collapse: collapse;
    border-spacing: 0
}
blockquote:before, blockquote:after, q:before, q:after {
    content: ""
}
blockquote, q {
    quotes: "" ""
}
input, textarea {
    margin: 0;
    padding: 0
}
hr {
    margin: 0;
    padding: 0;
    border: 0;
    color: #000;
    background-color: #000;
    height: 1px
}

10. CSSLab CSS Reset

Técnica de CSS Reset proposta pelo site CSSLab:
html, body, div, span, applet, object, iframe, h1, h2, h3,
h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address,
big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li,
fieldset, form, label, legend, table, caption, tbody, tfoot,
thead, tr, th, td {
    margin: 0;
    padding: 0;
    border: 0;
    outline: 0;
    font-weight: inherit;
    font-style: inherit;
    font-size: 100%;
    font-family: inherit;
    vertical-align: baseline;
}
:focus {
    outline: 0;
}
table {
    border-collapse: separate;
    border-spacing: 0;
}
caption, th, td {
    text-align: left;
    font-weight: normal;
}
a img, iframe {
    border: none;
}
ol, ul {
    list-style: none;
}
input, textarea, select, button {
    font-size: 100%;
    font-family: inherit;
}
select {
    margin: inherit;
}
/* Fixes incorrect placement of numbers in ol's in IE6/7 */
ol { margin-left:2em; }
/* == clearfix == */
.clearfix:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}
.clearfix {display: inline-block;}
* html .clearfix {height: 1%;}
.clearfix {display: block;}
 
Se você costuma utilizar alguma técnica de Reset CSS que não foi listada aqui, ou criou alguma, liste-a nos comentários.

Fonte: iMasters

Criando um componente de paginação - Parte 01

* Artigo do site iConnect.


Neste novo artigo irei demonstrar como criar um componente de paginação. Sabemos que em grande parte dos projetos é necessário amostrar diversos tipos de informação seguindo os padrões de Master Detail (Grid, List, etc.). Para este tipo de amostragem de dados, a paginação é um componente super importante, pois previne alguns problemas básicos, como:
  1. Problemas de performance na busca e listagem dos dados.
  2. Problemas de usabilidade com relação ao scroll vertical que é criado devido ao montante de dados.
A criação deste componente será dividida em dois artigos, sendo este o primeiro da série. Assim, neste primeiro desenvolveremos um componente que irá apenas paginar um montante de dados estáticos armazenados em um ArrayCollection, ou seja, criaremos toda a lógica para percorrer a lista e paginá-la em um componente do tipo lista (DataGrid, List, etc).
Já na segunda parte, faremos com que o servidor fique responsável pela tarefa de buscar e calcular o total de dados referentes à pesquisa. Desta maneira, nosso componente ficará responsável apenas por enviar qual a quantidade de dados a ser retornada e qual a faixa em que se encontra a sequência.
O principal motivo deste artigo estar dividido em duas partes é fazer com que o desenvolvedor entenda o funcionamento interno da paginação de dados, possibilitando a realização de melhorias durante a utilização do server-side se necessário.
Requisitos:
  • Ter Flex/Flash Builder ou outra IDE.
  • Ter SDK 3 ou superior.
  • Conhecimento em ActionScript e Mxml.
Nivel de dificuldade: 7.5
Agora vamos ao que interessa.

Passo 1

Iremos criar um componente customizado que estenda o Button, este será responsável por referenciar e exibir os dados referentes a uma página. Este componente é muito simples, o que realmente devemos observar são os seguintes pontos:
  1. Propriedade "pagina", a qual indica qual pagina será exibida.
  2. Propriedade "intervaloInicial", indica qual o ponto inicial em que teremos que buscar os dados da coleção.
  3. Evento "clickHandler", realizaremos um override neste método para que seja disparado um evento personalizado que avisará nosso componente principal que o usuário deseja ir para a página x.
Segue o código:
package com.imaster.impl {
    import com.imaster.event.PaginacaoEvent;
    import flash.events.MouseEvent;
    import mx.controls.Button;
    /**
     *
     * @author Fabiel Prestes
     *
     */
    [Event(name="exibirPagina", type="com.imaster.event.PaginacaoEvent")]
    public class BotaoPagina extends Button {

        [Bindable]
        private var _pagina:int;

        [Bindable]
        private var _intervaloInicial:int;
        private var _evtPaginacao:PaginacaoEvent;
        public function BotaoPagina() {
            super();
        }
        override protected function childrenCreated():void{
            super.childrenCreated();
            this.buttonMode = true;
            this.useHandCursor = true;
            /* Define a label do botao com o mesmo numero de pagina */
            if(this.label == '')
                this.label = String(_pagina);
        }
        /**
         * Define a pagina a qual este botao deve amostrar os dados para o usuario.
         * @param int Numero da pagina
         */
        public function set pagina(value:int):void {
            _pagina = value;
        }
        /**
         * Retorna o numero da pagina na qual este botao deve amostrar os dados.
         * @return
         */
        public function get pagina():int {
            return _pagina;
        }
        /**
         * Define o intervalo Inicial que deverá ser amostrado na noav listagem
         * @param int Numero da pagina
         */
        public function set intervaloInicial(value:int):void {
            _intervaloInicial = value;
        }
        /**
         * @return
         */
        public function get intervaloInicial():int {
            return _intervaloInicial;
        }
        override protected function clickHandler(event:MouseEvent):void {
            super.clickHandler(event);
            if(this.selected){
                _evtPaginacao = new PaginacaoEvent(PaginacaoEvent.EXIBIR_PAGINA);
                _evtPaginacao.botaoPagina = this;
                this.dispatchEvent(_evtPaginacao);
            }
        }
    }
}

Passo 2

Agora, com o componente BotaoPagina criado, iremos desenvolver nosso evento personalizado, que irá delegar e orquestrar as requisições feitas entre o BotaoPagina e nosso componente principal.
package com.imaster.event {
    import com.imaster.impl.BotaoPagina;
   
    import flash.events.Event;

    /**
     *
     * @author Fabiel Prestes
     *
     */
    public class PaginacaoEvent extends Event {
       
        public static const EXIBIR_PAGINA:String = "exibirPagina";
       
        public var botaoPagina:BotaoPagina;
       
        public function PaginacaoEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false) {
            super(type, bubbles, cancelable);
        }

    }
}

Passo 3

Abaixo está o código mxml que será a capa do componente de paginação principal, neste teremos os seguintes componentes:
  1. Dois Buttons: um será responsável por avançar e outro para retroceder uma página, sempre baseados na página atual.
  2. Um HBox, este container será responsável por armazenar e identar o componente BotaoPagina.
  3. Por último um ComboBox, que irá definir os intervalos de dados que cada página deverá amostrar.
Segue o código abaixo


    
        [ExcludeClass]
    
    
    
    
    
        
            
            
            
        
    

Passo 4

Agora daremos início à criação do componente que orquestrará toda a tarefa de manipulação da paginação. Este componente é bem simples, contudo requer atenção em alguns pontos, já que nesta primeira parte do artigo iremos criar toda a lógica de paginação e, no próximo artigo, será de responsabilidade do server-side.
Métodos principais:
  1. childrenCreated: Iremos realizar um override para adicionar todos os listener necessários, quando todos os componentes da tela forem criados, para os botões de avançar e retroceder e para o ComboBox de retroceder.
  2. invalidateProperties: Iremos realizar um override para as propridedades quando o commitProperties for chamada.
  3. configurarBotoesPagina: Este é um dos principais métodos, já que é responsável por calcular a quantidade de páginas necessárias, baseado no montante de dados, e depois criar os BotesPagina e adicioná-los no container.
  4. configurarListaNaPagina: Método chamado sempre que uma nova página for requisitada. Assim o método recupera a página selecionada e qual intervalo foi selecionado pelo usuário para, assim, realizar a coleta dos dados na coleção.
Há outros métodos na classe, contudo os citados acima são os mais importantes, deixei todo o código comentado, assim ficará mais fácil tirar as dúvidas.
Segue o código:
package com.imaster.impl {
    import com.imaster.PaginacaoUI;
    import com.imaster.event.PaginacaoEvent;
    import flash.events.MouseEvent;
    import mx.collections.ArrayCollection;
    import mx.controls.listClasses.ListBase;
    import mx.events.ListEvent;
    /**
     *
     * @author Fabiel
     *
     */
    public class Paginacao extends PaginacaoUI {
        [Bindable]
        private var _totalPorPagina:int = 5;
        [Bindable]
        private var _totalDados:int;
        [Bindable]
        private var _listaBase:ArrayCollection;
        [Bindable]
        private var _listaBaseAux:ArrayCollection;
        private var _bpAux:BotaoPagina;
        private var _bpAtual:BotaoPagina;
        private var _listaAlvo:ListBase;
        private var _botoesPagina:Array = [];
        private var totalBotoes:int;
        public function Paginacao() {
            super();
        }
        override protected function childrenCreated():void{
            super.childrenCreated();
            /* Adicionando os Listeners */
            this.bpPaginaAnterior.addEventListener(MouseEvent.CLICK, trateExibirPaginaAnterior, false, 0, true);
            this.bpProximaPagina.addEventListener(MouseEvent.CLICK, trateExibirProximaPagina, false, 0, true);
            this.cbIntevalo.addEventListener(ListEvent.CHANGE, trateTrocaIntervalo, false, 0, true);
        }
        override public function invalidateProperties():void{
            super.invalidateProperties();
            /* Inicializa a configuração da paginação */
            configurarBotoesPagina();
        }
        /**
         * @private
         * Fica escutando quando o usuario trocou o total de interva de dados a ser amostrado na lista
         * @param evt
         */
        private function trateTrocaIntervalo(evt:ListEvent):void{
            _totalPorPagina = cbIntevalo.selectedItem.value;
            /* Inicializa a configuração da paginação */
            configurarBotoesPagina();
        }
        /**
         * @private
         * Responsavel por configurar os botoes de paginação na tela.
         */
        private function configurarBotoesPagina():void{
            /* Calcula a quantidade de botoes que deverao ser criados baseado no total de dados e total de dados por pagina */
            totalBotoes = Math.ceil(totalDados/totalPorPagina);
            /* Se houver BotoesPagina ja configurado no container, deve-se removelos para
             * recalcular o total de paginas */
            if(containerBpIntermadiarios != null && containerBpIntermadiarios.getChildren() != null){
                containerBpIntermadiarios.removeAllChildren();
                _botoesPagina = [];
            }
            /* Realiza um loop criando os botoes */
            for(var i:int = 1; i <= totalBotoes; i++){
                /* Cria e configura o BotaoPagina */
                _bpAux = new BotaoPagina();
                _bpAux.toggle = true;
                _bpAux.pagina = i;
                _bpAux.intervaloInicial = (i - 1) * _totalPorPagina;
                _bpAux.addEventListener(PaginacaoEvent.EXIBIR_PAGINA, trateExibirPagina);
                _botoesPagina[i] = _bpAux;
                /* Se for o primeiro BotaoPagina criado deve-se configurar a lista de dados na componente tipo ListBase */
                if(i == 1){
                    _bpAux.selected = true;  
                    _bpAtual = _bpAux;
                    configurarListaNaPagina(_bpAux);
                }
                /* Adiciona os botoes no container */
                containerBpIntermadiarios.addChild(_bpAux);
            }
        }
        /**
         * @private
         * Configura e renderiza os dados Base para ser amostrado na tela levendo-se em consideração
         * o intervalo passado.
         * @param intervloIncial
         *
         */
        private function configurarListaNaPagina(bpAtual:BotaoPagina):void{
            _listaBaseAux = new ArrayCollection();
            /* para cada Loop é copiado o objeto que se encontra no intervalo passado como parametro */
            for(var j:int = 0; j < _totalPorPagina; j++){
                if(bpAtual.intervaloInicial + j < _totalDados)
                    _listaBaseAux.addItem(_listaBase.getItemAt(bpAtual.intervaloInicial + j));
            }
            /* Configurando os botoes de avançar e retornar */
            if(bpAtual.pagina > 1){
                configBpPaginaAnterior();
            } else {
                configBpPaginaAnterior(false);
            }
            if(bpAtual.pagina == totalBotoes){
                configBpProximaPagina(false);
            } else {
                configBpProximaPagina();
            }
            /* Define o provider clonado e define na ListBase */
            this._listaAlvo.dataProvider = _listaBaseAux;
        }
        /**
         * @private
         * Responsavel por ficar escutando quando o usuario deseja visualizar o conteudo de cada pagina
         */
        private function trateExibirPagina(evt:PaginacaoEvent):void{
            _bpAtual.selected = false;
            _bpAtual = evt.botaoPagina;
            configurarListaNaPagina(_bpAtual);
        }
        /**
         * @private
         * Responsavel por exibir os dados da paragina anterior.
         */
        private function trateExibirPaginaAnterior(evt:MouseEvent):void{
            /* Verifica qual a pagina em que esta para pegar a anterior */
            var i:int = (_bpAtual.pagina >= 1) ? _bpAtual.pagina - 1 : 0;
            _bpAtual.selected = false;
            _bpAtual = _botoesPagina[i];
            _bpAtual.selected = true;
            configurarListaNaPagina(_bpAtual);
        }
        /**
         * @private
         * Responsavel por amostrar os dados da proxima pagina
         */
        private function trateExibirProximaPagina(evt:MouseEvent):void{
            /* Verifica qual a pagina em que esta para pegar a proxima */
            var i:int = (_bpAtual.pagina < (_botoesPagina.length - 1)) ? _bpAtual.pagina + 1 : _botoesPagina.length;
            if(i < _botoesPagina.length){
                /* Desmarca o botao atual */
                _bpAtual.selected = false;
                /* Recupera o proximo botao e marca o mesmo */
                _bpAtual = _botoesPagina[i];
                _bpAtual.selected = true;
                /* Configura a lista na pagina */
                configurarListaNaPagina(_bpAtual);
            }
        }
        /**
         * Define o total de dados que serão amostrados em cada pagina
         * @param value
         *
         */
        public function set totalPorPagina(value:int):void{
            _totalPorPagina = value;
        }
        /**
         * Retorna o numero de dados que esta/serão amostrados na tela.
         * @return
         */
        public function get totalPorPagina():int{
            return _totalPorPagina;
        }
        /**
         * Define o total de dados que serão amostrados em cada pagina
         * @param value
         *
         */
        public function set totalDados(value:int):void{
            _totalDados = value;
        }
        /**
         * Retorna o numero de dados que esta/serão amostrados na tela.
         * @return
         */
        public function get totalDados():int{
            return _totalDados;
        }
        public function set listaAlvo(value:ListBase):void{
            _listaAlvo = value;
        }
        public function get listaAlvo():ListBase{
            return _listaAlvo;
        }
        /**
         * Define a lista que será utilizada para exibir na paginacao
         * @param value
         *
         */
        public function set listaBase(value:ArrayCollection):void{
            _listaBase = value;
            if(_listaBase){
                _totalDados = _listaBase.length;
            }
        }
        public function get listaBase():ArrayCollection{
            return _listaBase;
        }
        private function configBpPaginaAnterior(value:Boolean = true):void {
            this.bpPaginaAnterior.enabled = value;
        }
        private function configBpProximaPagina(value:Boolean = true):void {
            this.bpProximaPagina.enabled = value;
        }
    }
}

Fonte: iMasters

Efeito Caleidoscópio

* Artigo do site iConnect.

01. Pressione Ctrl+O e abra uma foto qualquer, clique duas vezes na layer Background e pressione Ok para eliminar o cadeado e destravar a layer.



02. Agora pressione Ctrl+T para abrir a caixa de Free Transform, rotacione a layer e deixe como na foto abaixo. A imagem deve atravessar verticalmente o documento. Pressione Enter para finalizar a transformação.



03. Agora pressione a letra W do teclado para selecionar a Magic Wand Tool. Clique na parte vazia do documento para ativar a seleção, vá em Select> Inverse para inverter a seleção. Agora vá em Select> Modify> Contract, defina o valor de 1 pixel e pressione Ok. Vá em Image> Crop.

04. Pressione Ctrl+J para duplicar a layer, vá em Image> Canvas Size, desmarque a opção Relative e defina o valor de Width 3 vezes maior que a altura (Height) e a altura (Height) duas vezes maior que a altura original. Em Anchor clique no quadrado central superior para que ele fique com na foto abaixo, pressione Ok.

05. Agora vá em View> Snap To> All, entre em View> Snap e certifique-se de que a opção Snap esteja marcada. Pressione a letra V do teclado para selecionar a Move Tool, pressione Ctrl+T para abrir a caixa de Free Transform, na barra de opções da ferramenta defina o valor de -100% em With. Com a tecla Shift pressionada clique e arraste a cópia da layer até que ela fique com na foto abaixo. Pressione Enter para finalizar a transformação.


06. Pressione Ctrl+E para mesclar as duas layers, pressione Ctrl+J para duplicar a layer, vá em Edit> Free Transform. Dentro da caixa de Free Transform arraste o ponto de ancoragem (no centro da caixa) para o centro do mosaico que estamos criando, agora gire a imagem da layer e posicione-a como na foto abaixo. Pressione Enter para finalizar a transformação.

 





07. Repita o procedimento até completar o mosaico como na foto abaixo.



08. Pressione Ctrl+Shift+E para mesclar todas as layers. Com a tecla Ctrl pressionada clique sobre a miniatura da layer para ativar a seleção ao redor do mosaico que criamos, vá em Image> Crop.




09. Agora pressione Ctrl+J para duplicar a layer, pressione Ctrl+T para abrir a caixa de Free Transform. Com as teclas Shift+Alt pressionadas clique em um dos pontos diagonais da caixa e arraste para dentro afim de diminuir a cópia da layer. Ela deverá ficar como a da foto abaixo.




10. (Opcional) Você pode testar alguns efeitos de cor adicionando uma Adjustment Layer de Hue/Saturation. Para isso vá em Layer> New Adjustment Layer> Hue/Saturation, mova o slider de Hue até achar a cor que mais lhe agrade.




11. Assim que seu mosaico estiver terminado vá em Edit> Define Pattern para criar um pattern. Agora basta pressionar Ctrl+N para criar um novo documento, defina um tamanho qualquer, 72 dpi's e modo de cor em RGB. Pressione Ok, vá em Edit> Fill, em Contents> Use clique no menu dropdown e escolha a opção Pattern. Clique na caixa que irá aparecer e escolha o Pattern que criamos, pressione Ok. Ele será aplicado no documento, criando um efeito caleidoscópico como o da foto abaixo.




 

Fonte: iMasters

Curso básico de WebDesign - Introdução

* Artigo do site iConnect.

Introdução

Bem vindo a este breve curso Passo a Passo para Web Designer que vou postar todo dia para os usuários do Oficina da Net.
Com o avanço cada vez mais da Internet é necessário mais do que nunca você está dentro da Rede Mundial de Computadores, a Net para os amigos íntimos.

Hoje com um custo mínimo para acessar a Internet pessoas do mundo inteiro procuram está sempre inteirado do assunto sobre Internet e dos recursos que ela oferece, ainda mais agora com meios de aceso gratuito através do IG, Super11 e outros…
Você sabe que a Internet é o meio fácil de se comunicar com as pessoas, localizar informações sobre política, economia, notícias, educação, imagens, enfim qualquer tema que precisar, até mesmo assuntos quentes.
Pela Internet também eu posso fazer amigos, divulgar meu trabalhos, fazer conferências através de programas de bate papo como Mirc, ICQ e outros. Mais ainda, posso comprar, vender e divulgar o meu negócio pela Internet, através de aplicativos voltados para WEB, desenvolvidos em qualquer plataforma para atender a nós amantes da NET.
Com toda essa tecnologia é necessário hoje, não se limitar ao Uso da Internet, somente em saber:
  • O que é preciso para se conectar
  • Meios de Navegação
  • Rede Dial Up
É necessário entender que estas informações se propagam através de página no formato de hypertexto, ou seja HTML(HyperText Markup Language), tornando a WEB cada vez mais dinâmica.
Por isso é necessário hoje, qualquer pessoa navegante da Internet Ter um conhecimento mínimo sobre HTML, para que assim ela possa fazer sua própria Home Page com tantos megabytes como diz Gilberto Gil e criar seu Web Site para que suas informações pessoais ou comerciais possam velejar pela Internet e possa atingir seu público.
Web Designer – Passo a Passo para Iniciantes, é um guia voltado para usuários leigos no assunto sobre confecção de Home Pages e que ao final pretende deixá-lo pronto para montar uma página pessoal ou comercial composta de animações, letreiros, banners, imagens, tabelas e formulários postados pára caixa de e-mail e ainda abordar os conceitos sobre WWW (World Wide Web), com textos objetivos, passando por tutorias amplamente exemplificados sobre construção de páginas em HTML e depois trabalhando com o modo interativo através Front Page Express.

Lembrando que existem hoje muitos Editores de Páginas para WEB, limitar-se somente ao Front Page Express, programa este que acompanha o Windows 98, é ancorar seu barco na Net, procurar expandir seus conhecimentos em Web Designer é realmente Ter entendido o Front Page Express e Ter evoluído, pois chegará um tempo em que este software não atenderá a tanta imaginação ou criação que pretenda fazer. Por hora, é uma excelente ferramenta para iniciar seus estudos sobre confecção de Home Pages , mão obras e um bom estudo!

INTERNET

INTRODUÇÃO
Mais que um modismo a Internet tornou-se um fenômeno. Conectando mais de um milhão de computadores e cerca de 40 milhões de usuários, espalhados em noventa países, valores estes que mudam a cada dia, sem dúvida não dar para ficar de fora desta teia. Enfim, se formos descrever Internet, a melhor é definirmos como Comunicação. Com ela encontramos serviços e facilidades, notícias e atualidades, ou se preferir como é o caso de muitos pessoas, um excelente local para encontrar amigos, jogos, bate papo e muito mais, como lojas virtuais, onde você pode comprar ou vender com toda segurança.

HISTÓRICO
A Internet deve início em 1969 sob o nome de ARPANET (USA).
Composta de quatro computadores tinha coo finalidade, demonstrar as potencialidades na construção de redes usando computadores dispersos (espalhados) em uma grande área. A idéia foi boa, e em 1972, 50 universidades e instituições militares já possuíam conexões. Hoje é uma arquitetura de software e hardware que se comunicam entre si que são mantidas por organizações comerciais e governamentais. Mas uma das principais características da Internet, é que não possui dono, para organizar toda essa troca de informações, existem associações e grupos que se dedicam para suportar, ratificar padrões e resolver questões operacionais, visando promover os objetivos da Internet.


As pessoas costuma falar em Internet e Web, será a mesma coisa?
Será apenas uma gíria da moçada do bate papo? Ou existe realmente um conceito científico para isto?
Para resolver esta dúvida e também para começarmos a entender esta série de definição de conceitos, vamos partir do seguinte princípio:

A Word Wide Web (teia mundial) é conhecida como WWW, uma nova estrutura de navegação pelos diversos itens de dados em vários computadores diferentes. O modelo WWW é tratar todos os dados da Internet como hipertexto, isto é, vinculações entre as diferentes partes do documento para permitir que as informações sejam exploradas interativamente e não apenas de uma forma linear.
Por isso existem programas como Microsoft Internet Explorer, que aumentaram muito a popularidade da Internet e graças as suas potencialidades, hoje podemos ver nas páginas da Internet, documentos formatados (cores, efeitos e etc…), escutar música, assistir a vídeos, e muito mais.

Enfim a Web, é a interface gráfica da Internet, pois podemos acessar a Internet, transferir arquivos( Processo a qual chamamos UpLoad), e realizar outras operações básica sem precisar de uma interface gráfica.
Para concluir só estamos de fato usando a Web, quando estamos navegando fazendo uso das Home Pages para acessar um site, ou seja, um endereço único que contêm a Home Page (página inicial) e outras páginas que fazem parte deste conjunto de páginas e todas em um único código fonte escrito em uma linguagem chamada HTML.

CONECTANDO-SE À INTERNET

Em tempos remotos somente alguns privilegiados podiam Ter acesso à Internet. Agora, qualquer um pode obter esse acesso por um preço mínimo, ou melhor, você poderá Ter acesso gratuito, pagando somente o pulso da linha telefônica, ou mais gratuito ainda, o acesso e ainda o pulso da linha telefônica, ou seja, você dependendo do tipo da conexão que use não precisa pagar nada, só precisa Ter o equipamento necessário para Ter acesso a Internet.

Fonte: Oficina da Net

quinta-feira, 21 de janeiro de 2010

Conheça o Web Designer - Profissão ou Hobby?

* Artigo do site iConnect.

“As páginas não seriam tão bonitas, ergonômicas e funcionais se não houvesse a influência de pessoas que estudaram meios para fazer da internet algo além de hiperlinks e botões. Conheça o webdesigner!”
Se voltarmos dez anos no tempo só para analisarmos como um site de internet se parecia, encontraríamos algo bastante rudimentar em comparação ao que temos hoje. Interfaces constituídas por frames, hiperlinks mantidos em azul, botões e gifs animados - que atualmente renderiam motivos para não voltar mais àquela página. Entretanto, resumir a atuação do webdesigner a apenas deixar interfaces bonitas e saber trabalhar com softwares gráficos é eliminar uma série de estudos (indispensáveis) na formação de um bom profissional.
Entretanto, antes de chegarmos ao webdesign propriamente dito, é preciso saber que esta profissão é um dos braços do design aprendido nas faculdades. Por isso, é importante ter em mente que ser um bom designer pouco tem a ver com saber aplicar filtros de Photoshop com maestria, tampouco criar formas e layouts a esmo. Se você deseja trabalhar como webdesigner, precisa saber que a faculdade envolve três grandes áreas: o design gráfico, design de produto e design de moda.

O QUE É O WEBDESIGN?


Dessa maneira, pode-se encaixar o webdesign dentro do design gráfico, uma vez que trabalha com a criação de projetos e desenvolvimento de interfaces gráficas de acordo com um briefing passado pelo cliente. De maneira geral, o webdesigner deve estar preparado para criar projetos, layouts, banners e até mesmo alguns scripts e ajustes na estrutura do produto web no qual ele estiver trabalhando.
O trabalho do webdesigner não se resume a criar apenas as interfaces. Muitos deles podem desenvolver aplicações web, afinal, muito do webdesign passa por linguagens de marcação e programação. Entretanto, é importante não confundir as atribuições desses profissionais com as dos desenvolvedores web. Os webdesigners têm como maior preocupação desenvolver uma interface sólida que garanta o perfeito entendimento do conteúdo e a qualidade de navegação. Os focos são bastante diferenciados, porém nada impede ambos de acumularem as funções.

QUAIS PROGRAMAS ELES USAM?

Para ser um bom webdesigner você precisa saber linguagens de marcação como HTML, XML, XHTML, linguagens de folhas de estilo (CSS, XSL), assim como algumas formas de script como JavaScript, PHP e ASP. Não é necessário saber as essências dessas linguagens, porém é bom tê-las bem trabalhadas para casos em que o projeto envolva fazer alterações estruturais em templates e outros usos. Já que haverá a necessidade de saber usar PHP e ASP, é importante saber como trabalhar com bancos de dados MySQL e PostgreSQL.
Em termos de software, o webdesigner irá utilizar técnicas do design aplicadas em softwares como o Adobe Photoshop, Illustrator e Fireworks para gerar imagens; Adobe Dreamweaver para trabalhar com CSS e linguagens de marcação; e Corel Draw para trabalhar com imagens em vetor. Esses programas oferecem precisão e facilidade para a compreensão de ferramentas, filtros e controles que garantem um bom aproveitamento da técnica aprendida na faculdade. Contudo, existem alternativas gratuitas aos editores de imagem, como por exemplo o GIMP. Alguns sites exigem animações interativas; para isso, o Adobe Flash é uma das ferramentas chave!

Entretanto, ao contrário do que algumas pessoas podem pensar, o webdesigner é um dos profissionais que mais precisa estar atualizado. O mercado de trabalho para estes especialistas é abrangente e requer estudo das teorias de cores, formas, além de noções de fotografia, história da arte e até mesmo marketing. Afinal é preciso conhecer muito bem o público que irá acessar aquele site ou aplicativo para poder adequar o design para as características que agrada a eles.

ÁREAS DE ATUAÇÃO


As áreas de atuação são bastante variadas. Basta que a empresa possua um setor de web para que esse profissional seja requisitado. Além disso, o webdesigner pode atuar como profissional autônomo ou freelancer, de modo que seus projetos serão independentes de uma empresa, porém dependem da vontade dos clientes. Dessa forma, o projeto de webdesign passa pelas seguintes etapas:
  • Análise de contexto;
  • Propósito;
  • Análise de público;
  • Adequação ao conteúdo;
  • Compatibilidade e restrições (navegadores, fontes etc).
Todos esses pontos estão interligados de uma maneira bastante forte. Inicialmente é fundamental levantar todas as informações inerentes ao público-alvo e as diretrizes de comunicação que melhor o atendem. Em seguida é definida a estrutura do site e as tecnologias que serão empregadas para viabilizar o desenvolvimento do projeto. Um dos aspectos a ser considerado é que, por ser uma mídia em constante mudança, a web exige especial atenção no que se refere a resolução, navegadores e padrões de linguagem.
Segue-se então a etapa de criação da interface, montagem dos HTMLs, folhas de estilo e demais recursos, seguida pela fase da implementação do projeto e execução de testes. Assim, se você quer ser webdesigner, deve saber que é preciso trabalhar com um resumo daquilo que o projeto deverá conter. A partir daí, é preciso fazer uma série de análises, testes e estudos a respeito das cores utilizadas, fontes, formas e vários outros aspectos.

Essa dedicação se faz bastante necessária nos últimos tempos, afinal as convergências tecnológicas vêm exigindo uma flexibilidade tanto das linguagens de programação, quanto da interface que acompanha este sistema. Por isso, depois de ter analisado o mercado e observado que as palavras de ordem são flexibilidade, disposição e conhecimento é possível fazer quase qualquer tipo de trabalho para o qual você seja designado. De nada adianta pensar em plataformas e não aplicar formas de torná-las integradas e participativas.

COMO ESTÁ O MERCADO DE TRABALHO?


Atualmente, o webdesigner deve saber atuar em meios bastante variados, afinal em pouco tempo a internet deixará de ser exclusividade de computadores. A entrada de smartphones no mercado fez com que o usuário tenha a web próxima a ele não importa onde esteja. Dessa mesma forma, o webdesigner deverá ser um profissional pronto para aprender novas linguagens e absorver novas tendências. Do contrário, o estilo e as criações ficam obsoletos, afastando este profissional do mercado. Por isso, a adaptação às várias mídias é praticamente a nova lei aos webdesigners.
Em termos de rotina de trabalho, a demanda depende bastante do lugar em que o webdesigner trabalha. Porém, o mercado tem sido ameaçado pelo que os designers chamam de “sobrinhos”. Esses “sobrinhos” nada mais são do que um usuário que até possui alguns conhecimentos de utilização de software e que começam a fazer sites para amigos e familiares. Mais tarde eles passam a fazer parte de uma parcela “não especializada”, que consegue roubar clientes dos designers profissionais por oferecerem um preço menor.

Contudo, a prática dos amadores fica em um nível em que o cliente também não exige um produto exatamente profissional. Mas ainda assim os “sobrinhos” são concorrentes. Porém, quando se trata de empregos em agências multidisciplinares - que abordam a comunicação de uma maneira completa com especialistas em web, rádio, televisão, redação e marketing - os webdesigners têm um bom momento para conseguir um lugar ao sol.
A média nacional de salários pagos a webdesigners fica em torno de R$ 1.100,00 para um webdesigner pleno. Os valores pagos a um profissional nível “master" pode chegar a R$ 1.417,00, de acordo com o Banco Nacional de Empregos. Contudo, dependendo do projeto a ser realizado, o profissional pode chegar a receber mais que o dobro desses valores, caso o cliente peça interfaces elaboradas e vários recursos. Por isso, sempre existe a alternativa de trabalhar de maneira independente, com projetos isolados.
Se você deseja se tornar um webdesigner, já tem algumas dicas de como atuar no mercado e, principalmente, a informação de que não basta apenas saber como operar os softwares. É preciso ter muito estudo e basear-se em fundamentos como cores, texturas, ponto e linha, coisa que os “sobrinhos” normalmente não têm. Por isso, se você quer se tornar um webdesigner, é importante ter a formação exigida.

Fonte: Baixaki

Sites governamentais ganham formato mais acessível

* Artigo do site iConnect.

Composição de cores e mudança na disposição dos links. Essas são algumas mudanças que vão deixar a navegação dos portais do Governo do Estado mais fácil para portadores de necessidades especiais.
De acordo com Censo realizado em 2000 pelo Instituto Brasileiro de Geografia e Estatística (IBGE), cerca de 25 milhões de brasileiros são portadores de algum tipo de necessidade especial (PNEs). Várias políticas de inclusão já foram criadas e com o mundo digital não é diferente.
Pensando nisso, a Fivecom Soluções em Web 2.0, empresa da Rede Gazeta, está reformulando alguns dos portais do Governo do Estado do Espírito Santo para torná-los mais acessíveis para essas pessoas. A previsão é de que ainda neste ano sejam lançados os novos portais das secretarias de Turismo (Setur), Gestão e Recursos Humanos (Seger) e Economia e Planejamento (SEP).
“Uma página de fácil navegação e que permita a participação de PNEs na sociedade é fundamental para proporcionar oportunidades iguais nas diversas áreas. Por isso, a Fivecom se antecipou na especialização de produzir esses sites. Além de respeito aos direitos humanos, manter uma web acessível para esse público é uma obrigação legal para sites de interesse público”, explica o diretor comercial da Fivecom, Eustáquio Martins.
Entenda as mudanças
O conteúdo será reformulado para melhor entendimento de todos, sejam deficientes visuais, fisico-motores ou auditivos. “Visualmente falando, é necessário utilizar espaçamentos, os ‘respiros’, em cada elemento do site. Vamos trabalhar com um contraste significante nas fontes e links para que as pessoas com pouca visão possam distinguir cada item do site sem qualquer dificuldade. Siglas e abreviações devem ser evitadas ou descritas ao usuário”, explica Eustáquio Martins.
Ele ressalta que as mudanças não serão apenas estéticas. “Haverá também reformulação do modo como é desenvolvido o site. Para facilitar a usabilidade de quem possui alguma limitação motora haverá redistribuição de links, tornando mais fácil a chegada a determinado ponto da página. Descrever e dar títulos às figuras, bem como permitir a manipulação do tamanho da fonte, também são medidas adotadas a favor do usuário”, acrescenta.
“Além disso, os portais poderão ser navegados com a ferramenta DOSVOX, uma referência nacional em acessibilidade para deficientes visuais. Ela possui um sistema de síntese de voz, ampliador de telas e outras funções que permitem a essas pessoas o desenvolvimento de suas tarefas de forma independente”, finaliza Eustáquio.
Outros portais
No Espírito Santo, o portal de notícias Gazeta Online também adotou o conceito de acessibilidade e já dispõe dessas ferramentas para seus usuários. O site tem o cuidado de deixar suas interfaces usáveis e foi validado pelo avaliador “Da Silva” (www.dasilva.org.br) como acessível. A organização avalia o código HTML e faz uma análise do conteúdo, verificando quais sites estão ou não dentro de um conjunto de regras que beneficiam o PNE.

Fonte: Oficina da Net

segunda-feira, 18 de janeiro de 2010

A importância das palavras chaves no Search Engine Marketing

* Artigo do site iConnect.

Aliás, marketing, tecnologia e conteúdo hoje em dia tem que andar alinhados. Vivemos uma época de geração de conteúdo, o usuário produz para os usuários e assim vai... Mas vamos voltar as palavras chaves dos nossos anúncios.

Um hotel por exemplo, quer escolher as melhores palavras chaves para o seu anuncio, o gerente geral deseja saber se as pessoas querem hotéis com cavalos ou hotéis com piscinas, para decidir aonde fará o investimento para a próxima temporada.

Vamos analisar no mês de julho de 2006 quais foram as palavras mais digitadas no Google:

1. copa do mundo
2. cristiano ronaldo
3. receita federal
4. rebelde

Um detalhe interessante aí, é que as palavras chaves têm sempre haver com o que esta acontecendo naquele período, como copa do mundo.

Outra ferramenta importante que o Google oferece é o Google Trends, essa aplicação monitora ao longo de todo o ano, as palavras mais digitadas pelos usuários em suas buscas.

Todas essas ferramentas unidas com um bom conhecimento de "encontrabilidade" (termo que retirei do livro Google Marketing) tendem a não falhar.

O que as empresas ainda não se deram conta, ou a maioria delas, é que a Internet é um poderoso instrumento de criação de marcas. Existem vários casos de empresas pequenas que hoje estão indo muito bem graças a suas boas ações de marketing digital.

Para concluir, eu diria que se você ainda não tem idéia de como a Internet poderia ajudar no seu negócio, diria que você não sabe nada de Internet. Precisamos usar a Internet como meio de mídia interativa, pois é isso que ela é, e não como uma TV ou Rádio. E sabe o melhor disso tudo? É que fazer Marketing na Internet é bem mais barato do que em outras mídias tradicionais, basta saber usar isso como um canal de comunicação interativo e assim através dele obter resultados.

Autor: Jair Viegas. Está matéria faz parte da parceria entre o site Weblivre.net e a Oficina da Net!

CSS: Múltiplas fontes e Fonte incorporada

* Artigo do site iConnect.

Múltiplas fontes

Você pode utilizar na tag múltiplas fontes especificando a ordem de preferência. Ou seja, se a primeira fonte indicada por você não constar no computador do visitante, a segunda será a escolhida, caso não tenha passa a ser a terceira e assim por diante. Veja o exemplo:

Ou na declaração CSS:
H1 {font-family: "Arial, Comic Sans MS, Helvetica" ... }

Fonte incorporada

Utilizando as fontes incorporadas, o visitante de seu site fará o download e a instalação da fonte utilizada por você em seu site caso ele ainda não a tenha em seu micro. A sintaxe para incorporação é a seguinte:

OBS: Essa declaração deve estar entre as tags ...em sua página HTML.

Fonte: Oficina da Net

O futuro do desenvolvimento web: HTML 5

* Artigo do site iConnect.

No momento de escrever este artigo, a especificação de HTML 5 está ainda em fase de prova, não obstante, em alguns navegadores, recentemente estão se colocando em funcionamento, de forma experimental, algumas das características que trará consigo este novo padrão. Paralelamente, vão surgindo novas informações e referências que explicam o que é HTML 5, o que faz com que nos sintamos cada vez mais impacientes por conhecer bem as novas particularidades da linguagem e sobretudo, por começá-las a aplicar em nossos desenvolvimentos.

Por que se cria HTML 5

Aos que se dedicam a fazer páginas web sabem que um website é como um quebra-cabeça de tecnologias que operam entre si. Para fazer uma página, à princípio , se necessita simplesmente HTML, porém esta afirmação hoje tem pouco a ver com a realidade e com as necessidades dos desenvolvedores para criar uma rica experiência de usuário.

É que hoje poucos websites se baseiam unicamente em HTML. Pode-se utilizar CSS para definir o aspecto da página, algum tipo de script do lado do cliente, em Javascript, vídeos em diversos formatos ou Flash para realizar alguma animação ou interação com o usuário. Para poder se beneficiar e integrar todas estas tecnologias, existem uma infinidade de etiquetas que se foram criando, segundo iam se necessitando, e as quais não passaram pelo filtro dos normalizadores de tecnologias como o W3C.

Portanto, mais de 10 anos depois que se publicasse a última especificação do HTML, resulta primordial para o futuro da web a criação de um novo padrão que recolha e solucione de alguma maneira, as necessidades dos desenvolvedores que se foram criando ao longo de todo este tempo.

Esforços em diversas vertentes para a criação de HTML 5

Sem dúvida já faz tempo que se necessitava esta nova especificação, que hoje ainda está em fase de prova e poderíamos nos perguntar: Por que se passou tanto tempo sem se publicar esta nova versão da linguagem? A resposta é que HTML 5 se converteu em um projeto muito ambicioso, onde há muitas pessoas, empresas e instituições que têm muito que opinar. É de vital importância, portanto, coordenar a todos os implicados para criar um único ponto comum, que assegure esta vez um êxito da tecnologia como um padrão.

À princípio, os encarregados de regular os padrões da Internet são os integrantes do W3C, que estiveram trabalhando durante bastante tempo em outras linguagens como XML. Não se pode dizer que deixaram de lado HTML, porém de alguma maneira estavam criando outros padrões mais rígidos que substituíssem a linguagem. Diante dessa falta de interesse em HTML e as necessidades reais dos desenvolvedores de webs por parte do W3C, se criou em 2004 uma comunidade de pessoas interessadas em melhorar e modernizar a linguagem de marcação. Este novo grupo, chamado WHATWG (Web Hypertext Application Technology Working Group), se criou a raiz de uma conferência do W3C com pessoas integrantes das equipes de desenvolvimento de Apple, a Fundação Mozilla e Opera, ao que se foram agregando pessoal de Microsoft e outras empresas implicadas no mundo web.

O WHATWG, que funciona de maneira independente do W3C, tem como objetivo principal trabalhar na nova especificação do HTML 5 e a eles devemos muitos dos avances que estão por chegar com relação à linguagem. É uma organização aberta, onde qualquer um pode participar livre e gratuitamente. De fato, segundo comentam em sua web, estão realmente interessados nas opiniões e interesses das pessoas que trabalham com o desenvolvimento web, para criar umas especificações que respondam às necessidades reais dos profissionais da Internet.

Links relacionados

Para a documentação dos leitores, publicamos os links às provas de especificações do HTML 5 e as organizações que trabalham nelas:

W3C HTML Working Group:
http://www.w3.org/html/

WHATWG
http://www.whatwg.org

Última versão publicada das especificações de HTML 5
http://www.w3.org/TR/html5/

Especificações do HTML 5 pela WHATWG
http://www.whatwg.org/specs/web-apps/current-work/multipage/

Conclusão

Pudemos comprovar que existem numerosos esforços para a criação das novas especificações do HTML 5, realizados por distintas organizações, independentes, porém que trabalham em uma frente comum.

Fonte: CriarWeb

Twitter Delicious Facebook Digg Stumbleupon Favorites More