Mostrando postagens com marcador Artigos. Mostrar todas as postagens
Mostrando postagens com marcador Artigos. Mostrar todas as postagens
Postado por Cássio Fabre quinta-feira, 3 de julho de 2014 às 10:24
E ai pessoal, beleza? Continuando o "Vale (ou não) a pena comprar",  hoje vamos conhecer a loja online MOTORCYCLE SPORT, que está situada no conhecido Mercado Livre.

Se você leu o post 01 desta série, sabe que comprei uma motoca pra mim. Na loja em questão hoje, comprei um par de retrovisores esportivos para ela. Aliás, era o último do anúncio.

A compra foi feita no sábado, dia 28/06/2014, à noite, porém por um deslize meu (que acabou dando certo) eu não tinha o valor do frete. Mas só me apercebi disso depois de ter clicado em "comprar". Pra minha surpresa, e fica ai uma dica de compra no mercado livre, recebi um e-mail dizendo que o produto já era meu e que deveria escolher uma forma de pagamento, o que me deu tempo para entrar em contato, também via e-mail, com o vendedor Vagner para ter o valor do frete e informá-lo quando necessário no Mercado Livre. Assim o fiz.

Para outra surpresa minha, o Vagner respondeu meu e-mail no mesmo dia, isto é, no sábado e já me enviou as informações necessárias para que concluísse a compra. O que falei na minha análise da compra no Mercado Livre, vou repetir aqui: o vendedor é sensacional.

Meus retrovisores foram postados na segunda-feira seguinte à compra (30/06/2014) e me foi enviado o código de rastreamento no mesmo dia. Acompanhei junto aos Correios que, por sinal, ainda continuam com a mesma falha de envio de informações aos clientes. Uma defasagem muito grande que fez com que você não tenha certeza se o que está sendo informado lá é, de fato, onde o produto está. Um exemplo disso é a compra da post 01 desta série: eu recebi o produto mais ou menos 12h do dia citado lá. O produto foi dado como entregue, no site dos correios, às 18h (arredondando). Na minha cabeça, a hora da entrega deveria ser anotada e lançada corretamente. Isso pode até não acontecer, mas 4h de defasagem numa cidade pequena como a que moro é algo estrondoso.

Por outro lado, desta vez recebi o meu produto em 4 dias úteis, ou seja, na data deste post 03/07/2014, já estou com o produto em mãos (apesar de ainda não ter aberto a caixa). Os correios estão de parabéns pela rapidez na entrega, apesar do problema acima.

Análise final: vale(ou não) a pena comprar

Não preciso nem dizer, não é mesmo? Vale a pena comprar no MOTORCYCLE SPORT. O vendedor foi sensacional, rápido e atencioso. Quem me dera se todos os vendedores online tivessem esse respeito pelo cliente e quisessem, de fato, que este esteja completamente satisfeito ao fim da transação.

Abraços e até mais!
Postado por Cássio Fabre terça-feira, 1 de julho de 2014 às 09:53
Bom pessoal, hoje vou começar a falar de outro assunto também aqui no SM: impressões sobre compras online bem como seus respectivos vendedores/empresas.

Sei que à primeira vista, parece não ter muito a ver com o intuito do site, mas eu não penso assim. Já que o site busca "ensinar", logo postar experiências com compras online, o que atualmente já se tornou algo normal e usual, pode te precaver de tomar alguma pernanda de alguns vendedores.

Para início de conversa, recentemente comprei a moto dos meus sonhos juvenis: a Honda CB 300R. "Nossa, sonha baixo, hem!". Talvez você tenha pensado isso. Mas essa moto, pra mim, é uma das motos mais lindas já feitas.

Dito isto, comprei na loja Serjão Moto Peças um par de manoplas esportivas para minha motoca.

A compra do referido produto foi feita na dia 24/06/2014. A princípio, o frete foi um pouco caro, mas nenhum absurdo a ponto de merecer reclamação. A promessa foi de entrega em 5 dias úteis.

Como utilizei cartão de crédito para a transação, demorou poucos minutos para que a compra fosse aprovada pela empresa responsável por ele. Por haver um período para a separação, conferência, emissão de nota fiscal e todo o procedimento para enviar o produto da maneira correta, acredito que, por este motivo, a loja acabou por postar o produto no dia 25/06/2014 depois do horário limite da agência dos correios.

Após a postagem, foi-me encaminhado aquele e-mail padrão com o código de rastreamento e o link para o site dos correios. Normal. Comecei a acompanhar meu pedido.

Os correios fizeram os primeiros procedimentos extremamente rápido, tanto que no dia 26/06/2014, no primeiro dia útil depois da postagem, o produto já estava em transição para a regional do meu estado, que é em Vitória-ES. Porém, os correios pararam por aí. Em incríveis 05 dias corridos, não houveram atualizações no site a respeito do meu pedido. O que me levou a entrar em contato com o Serjão para saber o que estava havendo e um possível caso de extravio.

Foi aí que tive minha pior impressão sobre o Serjão: o atendimento pós-venda é horrível. Apesar de não demorarem muito para responder os e-mails, o fazem de forma extremamente fria e como se tivessem pouco se lascando para o cliente. Segue o print do meu e-mail e a resposta deles.


Cara, boa educação cabe em qualquer lugar! Eles simplesmente COPIARAM E COLARAM a status da mercadoria no site dos correios. Não deram um bom dia/tarde nem nada. Aliás, eles não falaram NADA. Não sei para você que está lendo, mas isso pra mim é uma grande falta de respeito.

Sobre os correios, basta ver na resposta do Serjão que eles não informaram quando a mercadoria chegou em Vitória tampouco quando saiu. Claro que a culpa não é da loja, mas um e-mail bem educado é o mínimo que se pode a um cliente.

Por fim, o produto chegou exatamente no prazo de 05 dias úteis após a compra, o que mostra que o Serjão busca manter seus compromissos. Logo mais posto fotos do unboxing da manopla.

Análise final: vale(ou não) a pena comprar

Vale a pena comprar no Serjão Moto Peças. Os prazos são cumpridos, o que é ótimo para nós compradores. O site é bem intuitivo, apesar de não ter o layout mais bonito que já vi. Os preços lá são relativamente bons e tem muita variedade.

Se você está procurando peças para sua motoca, o Serjão Moto Peças é uma boa opção!

Abraços e até mais!
Postado por Cássio Fabre quarta-feira, 18 de junho de 2014 às 11:10
Boa tarde pessoal. Como dito na postagem anterior, vamos começar um série com o MS Access. Para quem não o conhece, clique aqui para saber quem é nosso camarada.

Só para ressaltar, este primeiro artigo é destinado a usuários que já tenham um mínimo conhecimento de VBA (Visual Basic for Application) e também da interface do Access. Mas isso não impede que você, caro colega iniciante como eu, leia o post e já vá se acostumando com algumas ferramentas e características do Access.

Sem mais delongas, vamos ao que interessa! Antes de mais nada, eu sempre gosto de mostrar o resultado final do trabalho antes de começar a ensiná-lo. Obviamente não tem como mostrar o funcionamento do formulário através de imagem. Mas, pelo menos o layout ficará assim:


Primeira coisa que devemos fazer é criar o nosso banco de dados (bd). Uma coisa muito importante a respeito disso e que muitas das vezes não nos atentamos é criar o bd no formato correto.

Conforme este artigo do site da Microsoft, até a versão 2003, o Access tinha por padrão a extensão *.mdb e a partir da versão 2007 até a atual, que é a 2013, utiliza por padrão a extensão *.accdb. Sendo assim, você deve criar o seu bd de acordo com os usuários que o utilizarão, isto é, se haverá algum usuário de Access 2003 ou, quiçá, 98, crie seu bd com o formato mdb. Caso não, mande bala no accdb. Supondo que você mesmo não seja usuário de 2003 (hehe).

Não vou estipular um nome padrão para o seu bd pois não fará diferença algum no fim das contas.

Após criá-lo, a primeira coisa a ser feita é criar a tabela que comportará o cadastro dos seus produtos. Agora sim, faremos um padrão de nomes a ser seguido. Abaixo vou listar os padrões de nome que uso para os principais controles que insiro em meus programas.

Tabelas: tbl*                         Ex.: tblCadastroProdutos
Consultas: cst*                     Ex.: cstCadastroProdutos
Relatórios: rel*                     Ex.: relCadastroProdutos
Formulários: form*               Ex.: formCadastroProdutos
Botões: btn*                         Ex.: btnCadastroProdutos
Caixa de Texto: txt*             Ex.: txtCadastroProdutos
Caixa de Listagem: cbx*       Ex.: cbxCadastroProdutos

Nomear os controle de forma padrão vai fazer seu programa ficar pior ou melhor para o usuário? NÃO. Porém vai te dar uma facilidade extrema na horá de escrever seus códigos VBA. Por que? Um exemplo fácil é a inserção de uma Caixa de Texto: por padrão, o nome que o Access dá a esses controle é TextoXX, onde XX é um número qualquer. Agora imagine em um formulário de cadastro com vários campos texto, você identificar que a Caixa de Texto Texto23 refere-se ao campo nome e não descrição. Impossível, né?! Fora que você tem que prezar pela boa aparência e identação do seu código, assim como em um código para Web.

Prosseguindo... Crie a tabela de produtos. Eu darei o nome de tblProdutos. Nossa tabela será muito pequena, apenas para método de estudos. Se quiser, é só adaptar à sua necessidade. Os campos e características estão descritos abaixo.

codigo: Numeração Automática - Chave Primária
produto: Texto - 255 caractéres
obs: Memorando

Os nomes dos campos serão escritos do jeito que estão acima, tudo em minúsculo e sem acentuação.

Salve a tabela. No próximo artigo, começaremos a configurar nosso formulário.
Postado por Cássio Fabre sexta-feira, 9 de agosto de 2013 às 09:46
Bom pessoal, nessa volta não vamos ter um tutorial. Teremos uma questão que é muito pertinente, se você gosta de jogar (grande maioria das pessoas) jogos de PC: Realmente vale a pena comprar jogos na Steam?

Antes de mais nada, precisamos saber o que é a Steam e qual a sua finalidade. Faça uma visita à loja da Steam para entender um pouco melhor o que está adiante.

Steam é a maior loja virtual de venda de jogos para computador do mundo e, há pouco tempo, passou a vender softwares também. Mas apesar de ser uma loja internacional, há não muito tempo a Steam só vendia seus produtos em Dólar (US$) ou Euro (£), o que era um grande empecilho para compradores do Brasil, por exemplo.

Para comprar um game na Steam, era necessário ou ter uma conta no PayPal, ter cartão de crédito internacional ou se arriscar comprando dinheiro virtuais em sites que os prometiam a um custo não tão alto, o que na maioria das vezes era calote. Mas isso mudou em 2013, quando a empresa resolveu expandir seus domínios a outros lugares, como nosso querido país (para nossa alegria). A Steam fechou parceria com o BoaCompra para vender seus produtos em Real (R$) e aceitar meios de pagamento nacionais como boleto bancário, pagamento via plataforma online dos bancos, cartões de crédito nacionais, entre outros.

A Steam promove anualmente duas grandes feiras de liquidação: nas férias do verão americano, em junho e julho, e no natal. Jogos ganham descontos absurdos em seus preços normais, tendo de 50% a até 85% de desconto. Para você que não entende muito de porcentagem, um jogo que custa normalmente R$ 10,00 nessas promoções poderiam custar de R$ 5,00 até R$ 1,50. Sim, é isso mesmo, um real e cinquenta centavos. Claro que descontos abaixo de 50% também aparecem e normalmente nas franquias mais badalas, como Call of Duty, Far Cry, BattleField, etc. Hoje o GTA IV está custando R$ 29,99 e eu o comprei nessa última liquidação por R$ 7,50, em um total de 75% de desconto.

E se mesmo assim o seu problema é não ter como comprar, mesmo nessas grandes promoções, existem alternativas na própria Steam para você: os jogos Free To Play ou Gratuitos Para Jogar. Esses jogos são disponibilizados pelos desenvolvedores absolutamente "de graça". E eu coloquei entre aspas porque para progredir dentro do jogo,em algum momento você precisará comprar itens para seu personagem com dinheiro de verdade, o famoso cash. Na Steam, os mais jogados sem dúvidas são Team Fortress 2, Warframe, BlackLight: Retribution e a pouco tempo Dota 2 também se tornou FTP.

Agora que conhecemos a Steam, vale realmente a pena investir nosso rico dinheirinho nos games que ela disponibiliza?

Antes de chegarmos à conclusão final, vamos fazer um pequeno PRÓS x CONTRAS.


Agora, para analisar se vale a pena ou não comprar jogos na Steam, precisamos saber que existem dois tipos de pessoas: as que querem jogar, mas não querem gastar e as que não ligam de gastar um pouco para ter original.

Eu sou meio termo... Eu não compro um jogo sem antes te-lo jogado, afinal não vale a pena dar X reais em algo que você não vai usar. Então primeiro eu baixo os jogos piratas mesmo e depois eu vejo se vale a pena compra-los ou não. E normalmente eu só compro jogos multiplayer, mas isso é algo pessoal. Eu vi já perfis na Steam de caras com mais de 1.000 jogos na conta. Eu não compro jogos sigleplayer porque depois de zerar o game, ele vai ficar la largado para a posteridade até você querer ressuscitá-lo ou então deixar alguém jogar na sua conta.

Mas o fato é que de longe vale muito a pena comprar jogos na Steam, isso se você não for o primeiro tipo de pessoa.

E você, o que acha? Vale a pena, compensa? Comente falando o seu pensamento a respeito desse assunto. E se você já tem um perfil na Steam, visite o meu perfil e me adicione lá como amigo, que sabe agente joga um pouco juntos.
Postado por Cássio Fabre terça-feira, 2 de julho de 2013 às 11:36

E aí pessoal, tudo certo? Voltando com mais um tutorial para vocês. Hoje aprenderemos a criar botões apenas com HTML e CSS. Se não me engano, já até comentei isso em outro post, mas não dei muita atenção pois não era o foco naquele momento.

A logística da aula de hoje será: aprenderemos a criar o botão e depois faremos um menu horizontal com o que aprendermos neste momento. Simples! Por falta de opção no momento, estarei usando o Bloco de Notas do Windows (sim, eu sou ninja). Então abra seu editor de código favorito e mãos à obra.

O modelo que seguiremos é este abaixo
botão

Mas a pergunta: Por que usar este procedimento e não simplesmente criar um botão no Fireworks, por exemplo, e colocar a imagem? Não seria muito mais prático? 

Em parte isso é verdade, mas como diz minha mãe: O barato pode acabar saindo caro. O que quero dizer com isso é que se você infestar seu site de imagens, além de ficar algo não muito natural, o site ficará extremamente pesado. Ou seja, quanto menos imagens você utilizar, melhor. Isso sem contar o conhecimento adquirido quando se utilizar essa técnica.

Abaixo o código do botão acima. Não há nada já que não tenhamos visto. Primeiro o HTML:
<a href="#" class="bottom">Botão</a>
Agora o CSS:
a.bottom{
margin: 10px auto;
text-decoration: none;
color: #000;
padding: 5px 10px;
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
background: #ddd;
color: #111;
font-family: calibri;
text-transform: uppercase;
font-weight: bold;
}

a.bottom:hover{
background: #f90;
color: #fff;
}

O que gostaria de falar desse código é a pseudo-class :hover. Este é o evento no CSS que indica "ao passar o mouse", ou seja, quando posicionarmos o cursor em cima do elemento (no caso) a.bottom ele terá um background laranja e o texto terá a cor branca. As configurações que não forem citadas no :hover não terão alteração em relação ao elemento no estado comum que no caso são as configurações feitas no a.bottom. Isso significa que a fonte continuará sendo a Calibri, sendo escrita em uppercase (caixa alta ou "Caps Lock") e negrito. As outras tags CSS são muito intuitivas e não necessitam de muita explicação a respeito.

Agora vamos ao nosso menu horizontal criado com botões. Só para constar, este não é o meu estilo de menu favorito, mas nunca se sabe quando será necessário utilizar-se deste tipo de layout.
Abaixo o código que utilizei. Primeiro o HTML:
<div class="post-menu">
    <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">Link 1</a></li>
        <li><a href="#">Link 2</a></li>
        <li><a href="#">Link 3</a></li>
        <li><a href="#">Link 4</a></li>
    </ul>
</div><!-- .post-menu -->
Agora, abaixo o CSS.
.post-menu{
width: 98%;
height: 45px;
border-radius: 10px;
-webkit-border-radius: 10px;
moz-border-radius: 10px;
margin: 0 auto;
}

.post-menu ul li{
display: inline;
}

.post-menu ul li a{
text-decoration: none;
color: #111;
font-family: calibri;
text-transform: uppercase;
float: left;
padding: 5px 10px;
background: #dfdfdf;
margin-top: 7.5px;
margin-right: 5px;
border-radius: 5px;
-webkit-border-radius: 15px;
moz-border-radius: 5px;
font-weight: bold;
}

.post-menu ul li a:hover{
background: #abcdef;
color: #fff;
}
Bom, pessoal... É isso. Agora, deleite-se, mexa nas configurações para saber onde cada tag CSS está mexendo e, acima de tudo, DIVIRTA-SE!
Postado por Cássio Fabre terça-feira, 25 de junho de 2013 às 11:04


E ai pessoal, tudo certo? Semana passada não houveram posts, se não estou enganado. Mas não foi porque não quis postar, mas tive um problema na hora de upar o vídeo da Parte 4 da série Aprenda HTML e CSS na Prática. Mas se tudo der certo, hoje ainda conseguirei colocar o vídeo aqui pra vocês. Mas por agora nosso assunto é apenas o CSS. Hoje aprenderemos a trabalhar com as pseudo-classes first-child, last-child e as intermediárias ("second-child", "third-child", ...), que fogem a este padrão. Bom, abra seu editor de código predileto e mãos à obra.

Quando falamos em first-child no CSS, estamos nos referindo exatamente ao que o termo sugere: o primeiro filho ou, no caso, a tag filha.

Bom, a primeira coisa que temos que ter em mente é que essas pseudo-classes se aplicam a qualquer coisa dentro do código HTML. Elas vão formatar a tag que você configurar e não aleatoriamente. O que isso significa? Que você terá que dizer ao CSS qual tag ele vai formatar. Vamos a um exemplo para melhor entendimento. Suponhamos o seguinte código, dentro da tag body:
<div id="teste">
    <p>TESTE 1</p>
    <p>TESTE 2</p>
    <p>TESTE 3</p>
</div>
Agora vamos colocar o seguinte CSS:
#teste p:first-child{
background: #159357;
}
Muito fácil de entender: temos um HTML simples e no CSS estamos dizendo para o navegador o seguinte:
Olha cara, você vai pegar a primeira tag <p> que estiver dentro da <div id="teste"> e vai colocar um plano de fundo verde.
No caso, a primeira tag <p> é a que tem escrito TESTE 1 dentro. E assim funciona também com a last-child. A única coisa que vamos mudar é no CSS de first-chil para last-child. Faça isso e veja a diferença. Legal, né?!

Uma coisa muito importante a se observar é em qual tag você vai colocar a pseudo-class. No exemplo acima, estamos tratando a tag <p> que é a tag de Parágrafo. Mas se por acaso você tivesse colocado a pseudo-class na #teste o efeito seria diferente, compreendendo toda a extensão do container. Vamos a um exemplo deste tipo, escreva o seguinte HTML dentro do body.
<div class="teste">
    <p>Teste 1</p>
    <p>Teste 2</p>
    <p>Teste 3</p>
</div>


<div class="teste">
    <p>Teste 4</p>
    <p>Teste 5</p>
    <p>Teste 6</p>
</div>
Agora vamos colocar o seguinte CSS:
.teste:first-child{
background: #159354;
}
Dessa vez dizemos ao nosso navegador:
Agora, meu camarada, você vai pegar a primeira <div class="teste"> que tiver dentro do HTML pintar toda ela de verde.
Faça o teste!

Isso funciona para qualquer coisa. Mais um exemplo para você entender melhor: suponhamos que queiramos pintar a primeira div que estiver no corpo do nosso código, independendo da id ou class dela, como vamos fazer? Vamos continuar com o mesmo HTML do exemplo acima, e apenas modificar o CSS para este:

body div:first-child{
background: #159354;
}

Troque novamente o first pelo last-child para ver a diferença. Se quiser que esta formatação se encaixe em outra tag como ul, li, p, tr, td ou qualquer outra basta substituir o div pela tag de sua preferência.

Ok, sabemos configurar a primeira tag filha e também a última, mas e as intermediárias? A segunda, terceira e outras que eventualmente possam ter? Bom, não existe uma pseudo-class second-child ou third-child. Então, como faz? Para esses casos existe duas formas que podemos utilizar para que funcione corretamente. Vamos pegar o HTML abaixo como exemplo:
<div class="teste">
    <p>Teste 1</p>
    <p>Teste 2</p>
    <p>Teste 3</p>
    <p>Teste 4</p>
</div>
Agora vamos ao CSS:
.teste p:nth-child(2){
background: #111;
color: #fff;
}
A pseudo-class nth-child trata de todas os "filhos", intermediários ou não, que no caso é o segundo identificado por (2). Basta você substituir o número pelo número de ordem do elemento que você quer formatar. Por exemplo, se quisermos trocar a cor do texto do <p>TESTE 3</p> basta fazermos isso:
.teste p:nth-child(3){
color: #888;
}

Como dissemos "intermediários ou não", isso significa que você pode utilizar esta forma para tratar da first-child também, substituindo o número entre parênteses por (1).

Em relação ao last-child, apesar de funcionar, não é aconselhável utilizar esta forma pois você teria que trocar o número manualmente no caso de colocar mais um elemento. Por exemplo, se você colocasse mais um <p>TESTE 5</p> dentro da <div class="teste">, e já tivesse uma formatação para o last-child que, no caso, é o  "TESTE 4" e passou a ser o TESTE 5, utilizando a pseudo-class nth-child(4), teria que substituir o (4) por (5), o que não é muito interessante, não é mesmo?

A outra forma de fazer isso, é "somando" as tags da seguinte forma:
.teste p:first-child + p + p{
background: #111;
color: #fff;
}
Neste caso, o navegador vai aplicar as configurações à tag <p> de número 3. Mas como assim? O navegador vai começar a somar a partir da pseudo-class que estiver antes do primeiro mais (+). No caso, a pseudo-class é a de número 1 (first-child) e são somados mais dois p, dando um total de "3p", ou seja, a "third-child". Isso é matemática básica. Claro que você pode somar a partir de outros números, como a partir da segunda tag, por exemplo:
.teste p:nth-child(2) + p + p{
background: #111;
color: #fff;
}

E por fim, a questão: Por que utilizar esse monte de configuração, e não apenas colocar class ou id direto nas tags para fazer os efeitos?
Além de deixar seu código mais limpo e profissional, essas configurações fazem com que fique tudo automático, ou seja, no caso de você precisar adicionar mais tags, não precisará ficar se preocupando em criar mais código CSS e nem reconfigurar o que já foi feito. De longe, vale muito a pena.

Mas e quanto à aplicação, posso usar em qualquer lugar e com qualquer tag? Como disse no começo do post: SIM! Particularmente eu uso muito quando vou criar menus. Vamos pensar em um menu simples, como o abaixo:
Eu usei os atributos first-child e last-child para trocar o background do primeiro e ultimo link do menu de para cores diferentes. Muito interessante isso. Abaixo o código que usei para fazer este menu. Primeiro o HTML:
<div class="menu-post">
  <ul>
   <li><a href="#">Home</a></li>
   <li><a href="#">Sobre</a></li>
   <li><a href="#">Contato</a></li>
  </ul>
 </div>
Agora o CSS:
.menu-post{
width: 95%;
height: 40px;
background: #ddd;
margin: 10px auto;
border-radius: 10px;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
padding-left: none;
font-family: calibri;
text-transform: uppercase;
}

.menu-post ul li{
display: inline;
}

.menu-post ul li a{
float: left;
padding: 10.5px;
border-right: 2px groove #fff;
text-decoration: none;
color: #444;
margin-left: -1px;
}

.menu-post ul li a:hover{
background: #efefef;
}

.menu-post ul li:first-child a{
border-radius: 10px 0 0 10px;
-webkit-border-radius: 10px 0 0 10px;
-moz-border-radius: 10px 0 0 10px;
}

.menu-post ul li:first-child a:hover{
background: #F90;
}

.menu-post ul li:last-child a{
border: none;
}

.menu-post ul li:last-child a:hover{
background: #f0331c;
color: #fff;
}

Mas se você pensa que é só isso, você está infinitamente enganado. Existem muito mais configurações, algumas até mesmo que os navegadores atuais nem suportam ainda. Então, espero que tenham gostado e espero voltar em breve com o vídeo. Até mais.
Postado por Cássio Fabre segunda-feira, 17 de junho de 2013 às 12:29

Beleza, pessoal? Hoje aprenderemos a limitar o tamanho de imagens dentro do nosso site, utilizando apenas CSS. Poderemos, inclusive, aplicar outros efeitos, tais como sombras, bordas arredondadas, etc., sem precisar editar a imagem num programa com o Photoshop, por exemplo. Então, mãos à obra.

O processo é algo muito fácil, e tendo uma noção simples de CSS já dá pra pegar o jeito. O que faremos é configurar a width (largura) e height (altura) da tag <img />, que é a responsável por fazer o navegador entender que ali temos uma imagem. Isso fará com que a imagem se redimensione automaticamente para as proporções configuradas.

Mas só isso? Sim! Mas então pra que um tutorial pra fazer isso? Há um tempo eu estava escrevendo um código e me veio essa dúvida na cabeça, procurei muito mas nenhuma proposta que eu encontrei solucionou meu problema, e resolvi testar isso, com a certeza de que a imagem seria cortada e eu teria que procurar mais. E, para minha surpresa e alegria, aconteceu justamente o que eu estava precisando.

Sem mais delongas, vamos ao código. Abra seu editor preferido, insira as tags do HTML, se você não sabe quais são, leia a Parte 1 da série Aprenda HTML e CSS na Prática. E, dentro de <body></body> vamos colocar uma imagem, com o código abaixo.
<div class="img-teste">
    <img src="images/1.jpg" border="0" />
</div>
Agora, dentro da tag <head></head> coloque o CSS para configurar o tamanho da imagem, como abaixo.
<style type="text/css">
*{
margin: 0;
padding: 0;  /* CSS Reset */
}

body{
text-align: center;  /* Centraliza todo o conteudo */
}

.img-teste img{
width: 500px;    /* largura da imagem */
height: 350px;   /*  altura da imagem  */
margin-top: 10px; /* margem do topo */
}
</style>
Todas as imagens que estejam dentro de uma <div class="img-teste"> terão as configurações acima. Caso você queria que todas as imagens do seu site tenham essa configuração, basta fazê-la diretamente na tag img, no CSS, como abaixo:
img{
width: 500px;
height: 350px;
}
Quando configuramos uma tag de forma geral, como fizemos acima, todas as tags do site, por padrão terão essas configurações, a menos que você faça diferente em alguma tag específica. Por exemplo, se juntássemos o primeiro CSS mostrado com esse segundo, todas as imagens do site teriam a configuração do segundo código, exceto as que estivessem dentro da tag <div class="img-teste"></div>. Ficou dificil entender? Então copie ou escreva o código abaixo no seu arquivo .html, faça as devidas alterações e veja a diferença.
<html>
<head>
<title>TESTE DE IMAGEM</title>

<style type="text/css">
*{
margin:0;
padding:0;
}

body{
text-align:center;
}

img{
width: 200px;
height: 200px;
margin-top: 10px;
}

.img-teste img{
width: 500px;
height: 350px;
margin-top: 10px;
}

</style>
</head>

<body>
<div class="img-teste">
    <img src="LINK-DA-SUA-IMAGEM-1" border="0" />
</div><!-- .img-teste -->

<img src="LINK-DA-SUA-IMAGEM-2" border="0" />
</body>
</html>

Troque as imagens de lugar para visualizar melhor.

Legal né? Quando utilizamos essa customização diretamente na tag img, nós não "cortamos" a imagem, e sim a ajustamos de acordo com nossa necessidade. Isso nos tira o trabalho de ter que redimensionar as imagens do site manualmente em um programa como o Photoshop, por exemplo.

Espero que tenham gostado, até a próxima.
Postado por Cássio Fabre às 10:12

Ter um rodapé no site é algo que não conseguimos nos imaginar sem. Porém, este pode se tornar dor de cabeça, quando não feito de forma correta. Quando falando de sites, veja bem, site e não blog, muitas das vezes nos deparamos com situações em que não temos conteúdo suficiente para preencher toda extensão vertical do navegador e, nestes casos, o nosso footer sobe para o meio da tela, deixando o site complemente descaracterizado. Hoje aprenderemos a sanar essa dor de cabeça! Abra seu escritor de código preferido e mãos à obra.

Suponhamos o seguinte HTML de um site qualquer:
<html>
<head>
</head>

<body>
    <div class="wrap">
        <div class="header-container">

        </div><!-- .header-container -->

        <div class="footer-container">

        </div><!-- .footer-container -->
    </div><!-- .wrap -->
</body>
</html>
Algo simples, mas tudo que nós precisamos. Agora, vamos colocar o CSS que fará com que o rodapé fique sempre ao fundo do navegador. Em arquivo separado, ou dentro da tag <style>, se você não sabe qual fazer, leia a Parte 1 da série Aprenda HTML e CSS na Prática para entender melhor.
html, body, .wrap{
overflow-x: hidden;
height: 100%;
}

body > .wrap{
height: 100%;
min-height: 100%;
}

.wrap{
position: relative;
min-height: 100%;
height: auto !important;
height: 100%;
}

.header-container{
width: 978px;
height: 200px;
background: #123456;
}

.footer-container{
width: 100%;
height: auto !important;
position: absolute;
clear: both;
bottom: 0 !important;
padding-bottom: 5px;
background: #357531;
}
O que fazemos aqui, é dizer ao navegador que o body tem 100% de altura e fazemos com que o footer fique sempre no fundo com o bottom: 0 !important;. Você pode se perguntar: mas então só fazendo essa configuração no bottom, não daria certo? Na verdade não, pois essa configuração faz com que o footer se fixe no fim do body. Daí a necessidade de definirmos o body com height: 100%. Isso faz com que o body tenha o tamanho do monitor, independente de qual seja, logo, o footer vai se fixar no fim da página.

Bom, testem o código, trocando as cores das divs para entender melhor a localização de cada uma.

Até a próxima.
Postado por Cássio Fabre segunda-feira, 10 de junho de 2013 às 06:15
Bom pessoal, já que estamos hospedados no Blogger, nada mais correto que também falemos dele aqui.

Ocultar ou mostrar elementos do seu template apenas em determinadas páginas é algo útil e eu diria que até mesmo importante para o seu blog. Mas porque isso é importante? Suponhamos que você instalou no seu template um widget qualquer e quer que ele apareça apenas em determinada página. com a Home por exemplo. Caso você não proceda como vamos ver abaixo, o seu widget vai aparecer em todas as páginas do blog, o que não é interessante, certo?
Dica boba: Antes de começar, salve uma cópia do seu template, para caso dê algo errado, você consiga restaurá-lo.
Abra o painel do seu blog e vá em Modelo > Editar HTML. Vamos partir da premissa que você um conhecimento mínimo de HTML. No nosso exemplo acima, instalamos um widget qualquer e agora vamos configurar onde ele vai aparecer. Primeiro vamos ao código do widget...
<div id="widget">
    Código do Widget
</div>
Agora, vamos adicionar a tag condicional do Blogger que definirá onde o widget aparecerá.
<b:if cond='data:blog.url == data:blog.homepageUrl'>
<div id="widget">
    Código do Widget
</div>
</b:if>
No exemplo acima o nosso widget qualquer aparecerá apenas na Home do blog. É importante frisar que você deve colocar a condicional <b:if> imediatamente antes da tag que abre o widget, que no nosso caso é <div id="widget"> e fechar a condicional imediatamente depois do elemento que quer condicionar, caso tenha mais código antes do fechamento, também será incluído na condicional.

Abaixo uma listagem de outras condicionais que você poderá utilizar.

Função OCULTAR
Ocultar elemento APENAS na página inicial
<b:if cond="data:blog.homepageUrl != data:blog.url"> </b:if>

Ocultar elemento APENAS nas páginas internas (páginas de postagens, como esta)
<b:if cond="data:blog.pageType != "item""> </b:if>

Ocultar elemento APENAS na página inicial, de marcadores e arquivo
<b:if cond="data:blog.pageType == "item""> </b:if>

Ocultar elemento APENAS nas páginas estáticas
<b:if cond="data:blog.pageType "= "static_page""> </b:if>

Função EXIBIR/MOSTRAR
Mostrar elemento APENAS na página incial
<b:if cond="data:blog.url == data:blog.homepageUrl"> </b:if>

Mostrar elemento APENAS nas páginas internas (páginas de postagens, como esta)
<b:if cond="data:blog.pageType == "item""> </b:if>

Mostrar elemento APENAS na página inicial, de marcadores e arquivo
<b:if cond="data:blog.pageType != "item""> </b:if>

Mostrar elemento APENAS em post específico
<b:if cond="data:blog.url == "URL-DO-POST""> </b:if>

Mostrar elemento APENAS em página de arquivos
<b:if cond="data:blog.pageType == "archive""> </b:if>

Essas são as condicionais aceitas pelo Blogger em seu templates. Eu aconselho a criar, caso já não tenham, um blog de testes para fazer as modificações e depois de prontas e agradáveis, passar ao template do blog principal.

Até a próxima.
Postado por Cássio Fabre sábado, 8 de junho de 2013 às 22:55

Beleza, gente? Então, hoje vamos falar de uma propriedade CSS que pode nos confundir caso não as estudemos corretamente. Configurar as direções nas classes CSS é algo que, na verdade, não precisaria nem desse post... Mas resolvi fazê-lo mesmo assim.

Toda propriedade CSS que trata de tamanho ou posição possui 4 valores que devem ser configurados. Sim, os valores do título desse post. Algumas das mais utilizadas, se é que isso pode ser dito, são margin, padding, border-radius entre muitas outras. Na verdade, não existe muito segredo para entender isso. Vamos a um exemplo. Vamos configurar um botão, assim como este abaixo:

Teste Botão

Então vamos ao código. Abra seu editor de código predileto e, dentro da tag <body> escreva o seguinte código
<a href="#" class="botao">Teste Botão</a>
Agora, ao CSS. Criar um arquivo separado apenas para fazer este procedimento é desnecessário, mas se você preferir fazê-lo, crie o link devidamente, como visto na Parte 1 da série Aprenda HTML e CSS na Prática. Escreva dentro de <head> </head> o seguinte código.

<style type="text/css">
a.botao {
background: #dfdfdf;
border-radius: 2px;
color: #444;
font-family: calibri;
margin: 0 auto;
padding: 10px;
text-transform: uppercase;
text-decoration: none;
}

a.botao:hover{
color: #FFF;
background: #f90;
}
</style>
Antes de começar a explicação deste trecho, dê uma lida na Parte 2 da série Aprenda HTML e CSS na Prática, no trecho onde é visto a diferença entre ID e CLASS.

No código CSS acima, estamos indicando ao navegador que todos os links com a class="botao", terão as configurações descritas, que não entraremos em maiores detalhes por agora. Vamos nos ater às propriedades margin e padding.

Quando escrevemos as direções no CSS ela é disposta da seguinte maneira:
seletor{
propriedade: top right bottom left;
}
Estes valores podem ser em porcentagem, pixels, centímetros, etc... Mas geralmente são utilizados os pixels.   Mas não precisamos necessariamente informar os 4 valores. Podemos informar apenas um, dois ou três se quisermos. Vamos aos casos...

Caso informemos apenas um valor, significa que aquele valor vai ser o valor das quatro direções. Ou seja, se fizermos isto:
a.botao{
padding: 10px;
}
Será a mesma coisa que escrever isso:
a.botao{
padding: 10px 10px 10px 10px;
}

Se escrevermos apenas dois valores, significa que o primeiro valor será o valor correspondente ao top e bottom e o segundo à direita e esquerda. Ou seja, se fizermos isto:
a.botao{
padding: 10px 5px;
}
Será a mesma coisa que escrever isso:
a.botao{
padding: 10px 5px 10px 5px;
}

Se escrevermos três valores, significa que o primeiro valor será o valor do top, o segundo será o direita e esquerda e o terceiro valor será referente ao bottom. Ou seja, se fizermos isto:
a.botao{
padding: 10px 5px 8px;
}
Será a mesma coisa que escrevermos isso:
a.botao{
padding: 10px 5px 8px 5px;
}

Então, como você pôde perceber, essas formas nada mais são que forma abreviadas das direções. É algo que você deve saber para poupar tempo durante a escrita do código.

Antes de terminar o post, já está muito grande, quero fazer uma ressalva a respeito das propriedades margin e padding. As duas, de certa forma, servem para a mesma coisa. Mas tem uma diferença que é crucial na hora de escolher qual das duas utilizar. Bom, a margin é um espaçamento externa, ou seja, ela faz com que o elemento formatado afaste-se de outros elementos da código tendo como eixo a largura e altura do elemento. Fazendo uma analogia, ela seria um segurança que você pagou para não deixar que as pessoas cheguem perto de você. (risos). Já o padding funciona como um espaçamento interno, ou seja, ela faz com que o elemento se afaste dos outros tendo ele mesmo como eixo. Fazendo uma analogia, novamente, ela seria como uma blusa de frio de grossa, que faz com que o seu corpo seja o eixo da proteção da blusa.

Deu pra entender? Bom galera, espero que tenham gostado... Escrevam e modifiquem o código para saber onde cada propriedade está formatando e tentando ajustar à sua necessidade ou gosto.

Até a próxima.
Postado por Cássio Fabre quarta-feira, 5 de junho de 2013 às 10:58

E ai pessoal? Tudo certo? Vamos falar hoje de algo que parece trivial, mas que pode fazer a diferença em uma situação rotineira. A indentação é a forma como o texto se comporta em ralação à sua margem, ou seja, os avanços e recuos que ele possui. Em computação voltada para programação, seja ela de qualquer tipo, a indentação é geralmente utilizada apenas para fins estéticos e organizacionais. Porém existem linguagens em que este recurso é obrigatório. O Python, o Occam e o Haskell, por exemplo, utilizam a indentação para definir a hierarquia do seu código.

Mas o que é, de fato, um texto indentado? O exemplo abaixo é de um trecho completamente indentado.
<div class="header-container">
    <div class="logo"></div><!-- .logo -->

    <div class="menu">
        <ul>
            <li><a href="#">Home</a></li>
            <li><a href="#">Sobre</a></li>
            <li><a href="#">Contato</a></li>
        </ul>
    </div><!-- .menu -->
</div><!-- .header-container -->
E abaixo temos o mesmo código mas sem indentação.
<div class="header-container">
<div class="logo"></div>

<div class="menu">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Sobre</a></li>
<li><a href="#">Contato</a></li>
</ul>
</div><!-- .menu -->
</div><!-- .header-container -->
Existe ainda os que escrevem o HTML da seguinte maneira:
<div class="header-container"><div class="logor"></div> <div class="menu"><ul><li><a href="#">Home</a></li><li><a href="#">Sobre</a></li><li><a href="#">Contato</a></li></ul></div></div>
Por mais incrível que pareça, existe.

Tendo isso em vista, nos perguntamos: mas para que realmente serve a indentação? Pensemos na seguinte situação: Você escreveu um código imenso, suponhamos que um HTML, cheio de <div> umas dentro das outras, e por fim, na hora de visualizar o seu código no navegador, algum bloco não aparece porque falta o fechamento da tag. O que fazer?

Bom, se você indentou o seu código de forma que você consiga se localizar, está tudo bem... Se não, vai ter que ralar bastante para descobrir onde está o erro.

Mas mesmo que tenha indentado de forma que você consiga se localizar, pense na possibilidade: você trabalha em uma empresa desenvolvendo códigos em grupo e, em dado momento, o seu código vai ser atualizado por um de seus colegas... Será que ele vai conseguir fazê-lo de forma tranquila?

Tudo não passa de questão de organização. Se repararem nos códigos que eu escrevo aqui no site, apesar de nem sempre conseguir indentar de forma agradável, pelo tamanho dos códigos, verão que toda vez que eu escrevo estes códigos eles estão com algum tipo de identificação nos fechamentos das tags. Assim, por exemplo:
<div class="menu">
    <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">Sobre</a></li>
        <li><a href="#">Contato</a></li>
    </ul>
</div><!-- .menu -->
No caso, a tag de comentário <!-- .menu --> indica que naquele ponto do código, a tag </div> está fechando a <div class="menu">. Essa identificação é crucial, para o segundo exemplo acima. Apesar de eu indentar o código sempre, eu coloco também a identificação. Certa vez um amigo meu me disse algo que ficou gravado em minha cabeça...
Você só será "punido" por algo que deixou de fazer... Mas nunca por algo que você a mais e que não era necessário.
Ou seja, o que você puder fazer para deixar seu código mais fácil de ser interpretado por você mesmo ou por outra pessoa, faça!

Pro CSS a regra é a mesma. Abaixo o exemplo de forma indentada, sem indentação e a forma que algumas pessoas insanas se utilizam.
*{
    margin: 0;
    padding: 0;
}

.header-container{
    width: 978px;
    height: 160px;
    background: #444;
} /* ESTA É A FORMA INDENTADA */
*{margin: 0; padding: 0;}
.header-container{width: 978px; height: 160px; background: #444;}
/* ESTA É A FORMA SEM INDENTAÇÃO */
*{margin: 0; padding: 0;}.header-container{width: 978px; height: 160px; background: #444;} /* ESTA É A FORMA INSANA */
Isso fará o seu código não funcionar? A menos que esteja programando em uma linguagem que não seja as citadas no inicio do post, não fará! Mas existem boas práticas na hora de programar, seja em qual linguagem for. Isso é apenas uma dica, embora eu considere algo de suma importância.

Espero que tenham apreciado e até a próxima.
Postado por Cássio Fabre sexta-feira, 31 de maio de 2013 às 05:57

Olá, pessoal. Tudo certo? Hoje iremos aprender um efeito que é muito, mas muito utilizado hoje em diversos sites, o Background Gradient.

Antes do CSS3, para realizarmos este efeito, precisávamos criar imagens com o gradiente que queríamos fazer e colocar essas imagens de plano de fundo do elemento onde queríamos o efeito. Era um tanto quanto trabalhoso, mas nada de outro mundo. Porém, com o CSS3 nós podemos fazer este efeito simplesmente digitando os códigos certos.

Primeiro vamos criar um link que será a nossa cobaia, por assim dizer. Abra seu editor HTML preferido, coloque as tags básicas de um template HTML (caso você não saiba quais são, leia a Parte 1 da série Aprenda HTML na Prática) e, dentro das tags <body> </body> do seus arquivo copie ou digite o seguinte código:
<a href="#">Teste de Gradiente</a>
Agora salve o arquivo como gradiente.html, em um local de sua escolha. Agora vamos ao nosso código CSS. Para este tutorial, é completamente desnecessário criarmos um arquivo *.css separado apenas para digitar algumas linhas de código. Por tanto, vamos utilizar a "segunda" forma de escrevermos arquivos CSS (leia novamente a Parte 1 da série Aprenda HTML e CSS na Prática). Portanto, dentro da tag <head> </head> do seu arquivo gradiente.html coloque o seguinte:
<style type="text/css">

</style>
Agora vamos inserir o código CSS. A primeira vista você pode se assustar, mas calma, só parece um bicho de sete cabeças, mas é muito simples.
*{
margin: 0;
padding: 0;
}

a{
text-decoration: none;
color: #111;
padding: 10px;
float: left;
margin: 30px;
font-family: "trebuchet ms";
background: rgb(167,199,220); /* Old browsers */
background: -moz-linear-gradient(top,  rgba(167,199,220,1) 0%, rgba(58,146,209,1) 50%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(167,199,220,1)), color-stop(100%,rgba(58,146,209,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top,  rgba(167,199,220,1) 0%,rgba(58,146,209,1) 2%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top,  rgba(167,199,220,1) 0%,rgba(58,146,209,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top,  rgba(167,199,220,1) 0%,rgba(58,146,209,1) 100%); /* IE10+ */
background: linear-gradient(to bottom,  rgba(167,199,220,1) 0%,rgba(58,146,209,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a7c7dc', endColorstr='#3a92d1',GradientType=0 ); /* IE6-9 */
}
Salve e veja o resultado. E então, gostou? Agora vamos a explicação do código CSS.
*{
margin:0;
padding:0;
}
Este trecho refere-se a todos os elementos da página. No caso todos os elementos terão uma margin:0 e padding:0. Isso chama-se CSS Reset e é utilizado pois alguns navegadores colocam, por si próprios, uma margem nos elementos da página, isso faz com que, por vezes, o layout fique descaracterizado ou criando barras horizontais, o que não é interessante.
a{
text-decoration: none;
color: #111;
padding: 10px;
float: left;
margin: 30px;
font-family: "trebuchet ms";
background: rgb(167,199,220); /* Old browsers */
background: -moz-linear-gradient(top,  rgba(167,199,220,1) 0%, rgba(58,146,209,1) 50%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(167,199,220,1)), color-stop(100%,rgba(58,146,209,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top,  rgba(167,199,220,1) 0%,rgba(58,146,209,1) 2%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top,  rgba(167,199,220,1) 0%,rgba(58,146,209,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top,  rgba(167,199,220,1) 0%,rgba(58,146,209,1) 100%); /* IE10+ */
background: linear-gradient(to bottom,  rgba(167,199,220,1) 0%,rgba(58,146,209,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a7c7dc', endColorstr='#3a92d1',GradientType=0 ); /* IE6-9 */
}
Neste trecho é que começamos a configurar o link. Mas como assim, o link? Lembra-se que a tag HTML para link é a <a> </a>? Pois então. Neste caso, fazemos com que o link não tenha nenhuma text-decoration, ou seja, sabe aquele underline que fica em baixo dos links? Acabamos de retirá-lo. Depois, atribuímos uma color: #111, que é quase um preto.
Definimos um padding, que é um preenchimento, de 10px para todos os lados (em outro tutorial aprenderemos a diferenciar os lados, com valores para topo, direita, base e esquerda). Fazemos o texto flutuar para esquerda. Tera uma margem de 30px para todos os lados. Muita gente confunde e não sabe exatamente a diferença entre margin e padding. Na verdade é muito simples, margin refere-se ao bloco e padding ao conteudo do bloco. No nosso caso aqui, a margin fará com que nosso link afaste-se 30px de cada lado da nossa tela, já o padding fará com que o text do nosso link (Teste de Gradiente) tenha um espaçamento de 10px para todos os lados. Backgrounds, sendo gradientes ou não, sempre vão ter o tamanho do padding de cada elemento. Como definimos, no início, que por padrão todos os elementos terão padding: 0, caso você não especifique no elemento que deseja, o background não terá o efeito desejado. Faça um teste e retire o padding do nosso link e visualize no navegador e depois recoloque e visualize novamente. Faça a mesma coisa com o margin e entenderá melhor o que digo.
A fonte do link será a Trebuchet MS. E teremos o nosso background-gradient.
Não se assuste com o tamanho do código para o gradiente. Ele está assim pois está configurado para rodar em todos os navegadores, e isso é o que queremos, certo? Ao final de cada linha, temos os comentários referentes a quais navegadores estão sendo referidos os códigos. Infelizmente não há um padrão único para o gradiente com CSS3, existem padrões para determinados navegadores e o Internet Explorer. O que quero ressaltar é o código de cores utilizado. Neste exemplo foi utilizado o padrão RGB (Red Green Blue), mas podem ser utilizados outros dois padrões como o Hexadecimal (meu preferido) e HSL. Acho o código do gradiente bastante intuitivo, por exemplo:
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(167,199,220,1)), color-stop(2%,rgba(58,146,209,1)));
Aqui temos: um gradiente linear, partindo do topo esquerdo e acabando no rodapé esquerdo, a cor do inicio (topo esquerdo) será rgba(167,199,220,1) e a cor do final (rodapé esquerdo) será rgba(58,146,209,1).

Simples, não?

Existem na internet diversas ferramentas que geram códigos de gradientes. Sinceramente, EU não gosto muito. Prefiro aprender o código, pois talvez você se encontre em uma situação que não terá como recorrer a estes recursos e então ficará em maus lençóis. Mas de qualquer maneira, uma ótima ferramenta é a do site ColorZilla, que você pode experimentar. O código deste tutorial foi gerado lá (pura preguiça de escrever, rs).

Mas atenção!! Utilize esta propriedade com sabedoria e cuidado!

Então é isso. Acho que ficou muito grande, mas acontece. Até a próximo e continuem acompanhando o site.
Postado por Cássio Fabre quinta-feira, 30 de maio de 2013 às 18:46

Seguindo com nossa série Aprendendo HTML e CSS na Prática, hoje criaremos os blocos que farão parte do nosso site: Wrap (bloco que compreenderá todo o site), Cabeçalho (header-container), Slider, Conteudo (conteudo-container) e Rodapé (footer-container).

No cabeçalho teremos uma logo e um menu horizontal, estilo este do blog, porém sem o DropDown, que aprenderemos a fazer em um tutorial específico. Teremos um Slider feito com JQuery que não fará parte de nenhum dos blocos citados. No conteudo teremos uma sidebar e posts. No rodapé colocaremos apenas o "copyright". Mas quando chegarmos neste post, você já estará apto a colocar quaisquer coisas que queira.

Antes gostaria de salientar que o objetivo deste tutorial não é criar um "blog" e sim um "site". E te dar uma base para partir para outras linguagens voltadas para web como PHP, por exemplo.Abra seu arquivo index.html, que criamos no último post desta série, com seus editor HTML preferido e mãos à obra.

Mas antes de escrevermos o código, como disse na Parte 0.1, é de suma importância que planejemos o layout antes de escrever o código, portanto eu desenhei o layout abaixo que servirá como base para escrevermos nosso código:

Não é o melhor layout do mundo, mas é o que faremos por ser muito simples de desenvolver. Obviamente se você quiser poderá desenhar o próprio layout e desenvolver o código adaptando o que fizermos aqui.

Outra coisa muito importante que foi dita na Parte 1, foi você escolher a forma como iria escrever o CSS, optando por uma das 3 maneiras de fazê-lo. Neste tutorial utilizaremos a "Primeira Maneira", que é criando um arquivo *.css separado e escrevendo todo o código CSS nele. Hoje ainda não trabalharemos com o CSS, então na próxima parte da série criaremos este arquivo.

Como disse no início do post, criaremos apenas os blocos que abrigarão todo este conteúdo. A tag HTML que utilizaremos para criar estes blocos é a <div>. Dentro das tags <body> </body> copie ou escreva o seguinte

<div class="wrap">
    <div class="header-container">

    </div><!-- .header-container -->

    <div class="slider">

    </div><!-- .slider -->

    <div class="conteudo-container">

    </div><!-- .conteudo-container -->

    <div class="footer-container">

    </div><!-- .footer-container -->
</div><!-- .wrap -->

Explicando o código:
<div> : Tag HTML que delimita um bloco;
class="wrap" : identificação, "nome" da div, que no caso é wrap;
<!-- --> : tag HTML para comentários no código, o que estiver dentro dessas tags não será interpretado.

Para terminar este tutorial, gostaria de falar sobre as "identificações" do seletores HTML. Não é nada dificil de se entender.
Para identificar cada seletor, poderemos atribui-los IDs ou CLASSes. ID e CLASS servem para a mesma coisa, o que diferencia um do outro é que IDs não pode ser repetidos enquanto CLASS pode. As <div> obrigatoriamente tem que ter um atributo ou outro, ficando a seu critério. EU, quando vou escrever códigos sempre utilizo class, mas isso é pessoal e eu nem tenho uma razão para explicar, é apenas gosto.
Quando disse que IDs não podem se repetir, quis dizer o seguinte:

<div id="exemplo"> </div>

<div id="exemplo1"> </div> <!-- esse ID é diferente do primeiro -->

No primeiro modelo, a div "chama-se" exemplo, enquanto no segundo "chama-se" exemplo1, ou seja, são IDs diferentes.

Em relação às class, todas as <div>, por exemplo, que tiverem o atributo class serão formatadas da mesma maneira com CSS. Ou seja, quando eu tiver várias <div class="exemplo">, quando eu fizer isso no CSS:
div.exemplo{
width: 100px; /* largura da div */
height: 100px; /* altura da div */
background: #f90; /* plano de fundo */
}

Todas as <div class="exemplo"> terão 100px de largura/altura e o plano de fundo #f90 (laranja).

Só para recapitular, nosso código ficou assim já com o link para o arquivo css que ainda vamos criar:
<html>
<head>
    <title>Titulo do seu site</title>
    <link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <div class="wrap">

        <div class="header-container">

        </div><!-- .header-container -->
        <div class="slider">

        </div><!-- .slider -->
        <div class="conteudo-container">

        </div><!-- .conteudo-container -->

        <div class="footer-container">

        </div><!-- .footer-container -->
    </div><!-- .wrap -->
</body>
</html>
Bom gente, por hoje é isso, espero que tenham entendido e qualquer dúvida comentem abaixo. Continuem acompanhando o prosseguimento desta série.
Postado por Cássio Fabre quarta-feira, 29 de maio de 2013 às 20:37

Seguindo com nossa série de tutoriais, hoje começaremos a codificar nossa index.html. Sem mais delongas lá...

Como dito na Parte 0.1, você deverá escolher o programa com o qual escreverá os códigos. Eu estarei utilizando o Dreamweaver CS6 ou o NotePad++, alternando entre eles.

A primeira coisa a saber é quais as tags que são utilizadas para fazer o nevegador entender que a página que estamos escrevendo tem códigos e não apenas texto. Copie ou escreva o código abaixo respeitando o fechamento das tags (como explicado na Parte 0).

<html>
<head> </head>
<body> </body>
</html>

Explicando esse pequeno código:

<html> </html>  é a tag principal do site, que compreende todo o código;
<head> </head>  tag que delimita o cabeçalho do código. O que estiver escrito aqui NÃO aparecerá para o visitante do site.
<body> </body> tag que delimita o corpo do site. Imagens, textos, blocos, tudo o que você quiser que o seu visitante veja deve estar contido aqui.

Essas são as tags que fazem o navegador entender que temos uma página em HTML e não apenas um monte de texto.

Agora incluiremos também a tag que fará o navegador pegar o titulo do seu site. Para entender o que essa tag fará, na aba do seu navegador agora está escrito: Aprenda HTML e CSS na Prática - Parte 1 ~ SobMedida Tutoriais. A tag que fará este serviço é a <title> </title>
<html>
<head>
    <title> Titulo do Seu Site </title>
</head>

<body> </body>
</html>

Substitua o código anterior por este segundo.

Lembra que falamos do CSS na primeira postagem desta série? Pois é. Vamos ver agora como faremos para utilizá-lo.

Existem três maneiras de escrever o código CSS: Escrever em um arquivo *.css separado, escrever entre a tag <head> </head> ou escrever diretamente no elemento HTML dentro de <body> </body>. Dentre essas três as mais utilizadas são as duas primeiras. Mostrarei abaixo como deve ser feito cado uma delas.
Em arquivo separado:
<html>
<head>
<title> Titulo do Seu Site </title>
<link href="link-do-arquivo-css.css" rel="stylesheet" type="text/css" />
</head>

<body> </body>
</html>
Dentro da tag <head> </head>:
<html>
<head>
<title> Titulo do Seu Site </title>
<style type="text/css">
   /* Código CSS aqui */
</style>
</head>

<body> </body>
</html>
Dentro do Elemento HTML:
<html>
<head>
<title> Titulo do Seu Site </title>
</head>

<body>
    <div style=" /* Código CSS aqui */ "> </div>
</body>
</html>

Escolham umas das duas primeiras formas para escrever o CSS, copiem/escrevam o código correspondente acima e salvem o arquivo como index.html. A extensão do arquivo é muito importante. Aconselho a criar uma pasta em Meus Documentos com o nome "Primeiro Site" e salvar o arquivo dentro desta pasta.

Bom, por hoje é isso e continuem acompanhando o blog para o prosseguimento desta série!
Postado por Cássio Fabre às 20:23

Bom gente, neste post iremos falar sobre algo que parece ser fácil mas que pode confundir muita gente na hora de fazer. Fazer essa conexão é simples e, para quem realmente tem necessidade, é altamente recomendável.

Antes de qualquer coisa, você precisará saber o modelo do modem e do roteador que você tem à disposição e tenha o manual em mãos. Neste tutorial serão utilizados os aparelhos Speed Stream 4200 e Intelbras WRN 240 N, modem e roteador wireless respectivamente. O procedimento a ser feito é o mesmo, independente do aparelho, variando apenas a forma de configurá-lo. Mãos à obra.

Recentemente quando resolvemos aqui em casa que colocaríamos o roteador sem fio, eu apanhei muito um pouco para conseguir colocar para funcionar, pois era a primeira vez que fazia este procedimento e mesmo as informações em fóruns e afins eram escassas e incompletas, por mais incrível que possa parecer. Tive que juntar informações de fóruns diferentes para conseguir minha solução que, por fim, mostro ser algo infinitamente simples.

A primeira medida a ser tomada é verificar a ligação dos cabos. Como no diagrama acima, temos que seguir corretamente para o processo funcionar. A ligação é feita da seguinte forma:

1 - Cabo que vem da operadora de internet é ligado diretamente no modem;
2 - Do modem sai um cabo da porta LAN que é ligado dirertamente na porta WAN (@) do roteador wireless;
3 - Caso vá ligar computadores através do ADSL (cabo), cada porta sobressalente do roteador poderá conectar um máquina à internet.

Depois de verificado isso, a medida a ser tomada é deixar o modem em modo Bridge, ou seja, o modo de padrão de fábrica do aparelho. Se o seu já está roteado, basta resetá-lo que estará resolvido. No caso do Speed Stream mostrarei duas formas de fazer este reset.

A primeira é através da interface web do modem. Faça o seguinte:
1 - Acesse a interface através digitando o IP do modem (gateway) no seu navegador;
1.1 - Por padrão o IP é 192.168.254.254 com usuário e senha admin.
1.1.1  - Caso não saiba o IP do modem entre no Prompt de Comando (cmd) e digite ipconfig, o valor do Gateway Padrão é o que você utilizará.

2 siga os passos das imagens abaixo.




Após acabar o tempo, basta fechar o navegador.
A outra forma de fazer este procedimento é resetar o modem diretamente no aparelho, através do botão que fica atrás do mesmo.
ATENÇÃO: se for fazer o reset manualmente, certifique-se de pressionar o botão durante exatos 8 segundos, caso contrário o modem não resetará.
O próximo passo é configurarmos o roteador, que também é um procedimento muito simples.

Entre na interface do roteador, da mesma maneira que você fez para entrar no modem, observando que o IP do roteador pode ser diferente do IP do seu modem. No caso do WRN 240 N o IP é 10.0.0.1.

Depois de fazer o login e a senha, no meu lateral vá em REDE > WAN e configure da seguinte forma

Se tudo ocorreu bem, sua conexão ADSL já estará funcionando. Agora vamos para o Wireless.

No menu lateral vá em WIRELESS e configure como nas telas abaixo.


Isso é o necessário para sua rede funcionar. Este roteador especificamente tem muitas configurações que você pode se aventurar para deixar sua rede com melhor acesso.

Continue acompanhando o blog e até mais com outros tutoriais!
Postado por Cássio Fabre terça-feira, 28 de maio de 2013 às 20:52

Seguindo com nossa série de tutoriais "Aprenda HTML e CSS na Prática", iremos falar nesse breve post sobre os softwares que podem ser utilizados para a construção de nossos layouts. Bom, antes de mais nada é imprescindível que antes de começar a desenvolver o código, você tenha em mente pelo menos um esboço do que espera do resultado final. Para tanto, é recomendado que você desenhe seu layout numa folha de papel ou parta direto para a edição com softwares próprios para o procedimento.

O software mais utilizado, sem dúvidas alguma, para este fim é o Adobe Fireworks. Este programa, que você já deve ter lido sobre, ou pelo menos ouvido falar, é amplamente divulgado graças às suas ferramentas espetaculares voltadas para edição de imagens para web.

Mas, logicamente você pode utilizar qual programa quiser e não necessariamente um só. Temos vários outros exemplos, como Adobe Photoshop, Corel Draw, Adobe Illustrator, Gimp, se você for o mestre dos magos, temos Paint do Windows e muitos outros.

Passado este passo, agora temos que escolher um software para escrevermos nossos códigos. O primeiro que nos vem à cabeça é o Adobe Dreamweaver que possui muitos atrativos como a visualização de tags em tempo real durante a escrita no modo código.

Mas também existem outros como o Notepad++, que particularmente gosto muito, o Bloco de Notas do Windows também pode ser utilizado para tal fim.

Bom, qual programa utilizar para quaisquer desses fins, é tudo questão de gosto. O que realmente é importante, no caso dos editores de códigos, é saber escreve-los em quaisquer circunstâncias, sem a ajuda de uma biblioteca extra-mente.

No próximo post, enfim, iremos começar a criação do nosso código. Até breve.
Postado por Cássio Fabre às 09:11

Bom gente, há muito tempo eu tenho em mente este projeto de ensinar HTML. Até comecei a faze-lo em outros blogs como o BrLoads, do meu amigo Bruno Medeiros.

Antes de mais anda, o que é HTML? Segundo nossa amiga estudantil Wikipédia:
HTML (abreviação para a expressão inglesa HyperText Markup Language, que significaLinguagem de Marcação de Hipertexto) é uma linguagem de marcação utilizada para produzir páginas na Web. Documentos HTML podem ser interpretados por navegadores. A tecnologia é fruto do "casamento" dos padrões HyTime e SGML.
 Apesar de não ser exatamente uma linguagem de programação, o HTML também possui tags, que são os "comandos" da "linguagem". As tags HTML são escritas dentro de parênteses angulares: <tag>. As tags é que irão dizer ao navegador como o elemento irá se comportar. Dentre as tags mais utilizadas temos:


O HTML impõe que todos as tags devem ser fechadas respeitando a hierarquia que você mesmo definiu, ou seja, lembra da famosa citação "os últimos serão os primeiros" ? Pois é, é exatamente isso. Quando você abre uma tag e dentro desta coloca uma segunda tag, esta segunda deve ser fechada antes da primeira.


O HTML é o responsável por criar os blocos físicos na página, mas não é possível, com HTML, dar estilo  a estes blocos... É aí que entra o CSS. Que, segundo a Wikipédia:
Tecnologia usada para formatar documentos HTML, XML e XHTML
É com o CSS que definimos cor, altura, largura, flutuamento, bordas, margens, e tudo o que se refere à aparência dos blocos criados com HTML. A escrita do CSS é feita da seguinte forma:

Seletor HTML{
Atributo: valor;
}

Seletor HTML é a tag criada no código HTML, Atributo é a característica que você quer dar ao seletor (altura, largura, etc) e valor é o valor da tagCSS. Aplicando ficaria assim:

div#menu{
width: 978px;
height: 40px;
background: #dfdfdf;
}
div#menu = Seletor HTML
width = largura da div#menu
height = altura da div#menu
background = cor do fundo da div#menu
Bom, para uma "parte0", nossa introdução já está muito grande. O intuito desta série é fazer com que você aprenda o HTML na prática, ou seja, a partir do próximo post começaremos a criar nossa index.html localmente e colocar as mãos na massa. Até breve e continue acompanhando o blog.
Postado por Cássio Fabre domingo, 26 de maio de 2013 às 19:24
Bom, meu nome é Cássio Fabre e hoje, 26/05/2013, começo este blog com o intuito de vários outros que já temos na internet: ensinar. Bom, mas se já há vários outros, por que criar este? Acredito que a didática é algo pessoal e intransferível, ou seja, mesmo tratando do mesmo assunto, duas pessoas podem e vão abordá-lo de forma completamente diferente. Claro que uma pessoa vai preferir um determinado tutor e outra, outro. Seguindo este parâmetro é que vamos começar a trabalhar aqui. O foco será principalmente técnicas voltadas para web. Em breve alguns tutoriais já estarão sendo postados. Fiquem no aguardo, e até mais!