Seu browser é também a sua IDE

Vou listar algumas das melhores IDEs para desenvolvimento em evidência no mercado. Não apenas para montar HTML 5 e CSS 3, mas também para códigos e algorítmos em diversas tecnologias, como Javascript, jQuery e até podemos arriscar algumas linguagens “server side”.

JSBin

JSBin é uma ferramenta excelente para teste colaborativo de html e javascript. Facilitando a integração algumas das mais populares bibliotecas e frameworks JS, ele permite que o usuário insira rapidamente o seu código e grave com um controle de versão muito simples. JSBin definitivamente não é apenas um marcador de código.

Característica que vale ressaltar: JSBin é open source, 100% free.

JSBin

Kodingen

PHP, Ruby on Rails, Django, Perl, SVN, Git, etc? Você ainda achava que era impossível ter uma IDE pra tudo isso que fosse também browser based? Kodingen é o nome dessa poderosa ferramenta que oferece uma boa parte de seu sistema de forma gratuita e está conquistando muitos fãs pela web.

Kodingen

Ler mais »

Como testar se o browser suporta elementos html 5 com Javascript

O teste é simples, vamos em quase todos os testes utilizar o método document.createElement() do javascript para elementos do HTML 5. Logo em seguida vamos testar atributos e/ou propriedades dos mesmos elementos. Assim vamos verificar se o elemento é ou não suportado em determinado browser.

Com a chegada – bem devagar – do HTML 5 e a exigência cada vez maior para criação de interfaces crossbrowsers, precisamos adequar e adaptar nossos projetos a situações diversas.

Não podemos, por outro lado, deixar de inovar. É interessante podermos utilizar uma tag <video>, por exemplo. Canvas é também muito interessante, mas o suporte ainda não é tão amplo.

Vamos aos testes:

Canvas

var teste = document.createElement("canvas");
var checar = ( teste.getContext ) ? true : false;
alert(checar);

O teste foi simples: criamos um elemento canvas, já deixamos ele apontado em uma variável que indica o teste, logo em seguida vemos se ele da suporte ao método getContext, suportado pelo elemento Canvas do HTML5. Você pode ver um resultado no link: http://jsbin.com/ogizo3/2/edit

Audio e Vídeo

var testeAudio = document.createElement("audio");
var testeVideo = document.createElement("video");
alert( testeAudio.play );
alert( testeVideo.play );

Agora fizemos o mesmo tipo de teste, porém testamos com um método que há nos 2 elementos – audio e video – em html 5: play(). Pra ver como está ficando nossa página de testes: http://jsbin.com/ogizo3/3/edit

Novos inputs do HTML 5

O html 5 tem vários novos inputs bem interessantes. Temos uma lista de vários novos tipos como date, datetime, range e number, por exemplo.

Independente do tipo de input o teste é simples:

var testeInputDate = document.createElement("input");
testeInputDate.setAttribute("type", "date");
alert( testeInputDate.type == "date" );
var testeInputDatetime = document.createElement("input");
testeInputDatetime.setAttribute("type", "datetime");
alert( testeInputDatetime.type == "datetime" );
var testeInputRange = document.createElement("input");
testeInputRange.setAttribute("type", "range");
alert( testeInputRange.type == "range" );
var testeInputNumber = document.createElement("input");
testeInputNumber.setAttribute("type", "number");
alert( testeInputNumber.type == "number" );

Se o navegador não aceitar o tipo apontado no método setAttribute, o retorno de seu tipo será normalmente text.

Enquanto isso temos mais informações na nossa página de testes: http://jsbin.com/ogizo3/4/edit

Adicionando suporte a outros elementos HTML 5 até com IE6

Agora um pequeno truque já bastante utilizado na web (inclusive nesse site).

Podemos utilizar o .createElement() para criar elementos com várias tags diferentes em nossas páginas, entre elas, elementos de bloco como nav, header, footer, section, article, aside etc.

Pra isso vamos fazer uma pequena chamada no Javascript e no CSS, considerando cada tag que vamos criar:

document.createElement('nav');

E no CSS uma pequena declaração:

nav { display: block; }

Pronto. Com esse hack super simples temos um elemento nav funcionando inclusive em Internet Explorer 6!

Claro que já existem códigos robustamente preparados, então indico usar, por exemplo, o que o próprio JSBin.com indica:

<!--[if IE]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

e no início de nosso css:

article, aside, figure, footer, header, hgroup,  menu, nav, section { display: block; }

Não vamos ter nenhum recurso expecial, mas já vamos poder usar essas novas tags do HTML 5 em nossos documentos bem menos preocupados – nem frustrados – com o suporte crossbrowser.

O seletor jquery não funciona depois do ajax com o click() e outros eventos – use o live()!

O assunto é extremamente simples, mesmo assim é um dos mais procurados e não há muita facilidade de se encontrar no google com palavras chave comuns às perguntas que são feitas.

Sempre aparecem perguntas na lista do Google Groups “jQuery Brasil” sobre exatamente a mesma resposta:

  • “O evento click() para de funcionar depois de criar elementos com ajax”
  • “Seletor do jQuery para elementos criados com ajax”
  • Meu site para depois da resposta ajax
  • O jQuery não funciona direito com o ajax, só funciona antes de usa-lo

A resposta e a solução são simples:

Usem o maldito live!

Ler mais »

Flash, os tempos mudaram.

Muitos anos se passaram desde que você era a mais quente e preferido de todos entre os mais populares. Vamos esclarecer uma coisa, você nunca foi meu, você tem proprietário. Nunca haverá o controle de suas ações, a lealdade, a compreensão e o esforço que você colocar para essa relação. Por favor, não me julgue, não é fácil… você tem sido importante na minha vida, no entanto, é hora de seguir em frente. Eu não vejo mais você como eu via antes, eu vejo futuro ao longo de HTML e CSS. Eu sei que está curioso sobre eu e JS. Bem, JavaScript me mostrou a luz… há uma vida depois de você.

Gosto de sair com sua turma, espero que o nosso término não estrague minha amizade com seu grupo e sua família, eles me ajudam a ser melhor no que faço. Mas, com você, eu estou sempre incerto do futuro. Sempre esperando por você, eu estou cansado de te esperar carregar por irritantes vezes, eu acho que não tenho paciência.

Infância com o Flash

Não me incomoda ver outros artigos divulgarem e promoverem você. Mas você deve saber que suas ações são mais como alguém que atravessa uma crise de meia-idade, dirigindo um veículo brilhante e, mesmo assim, não esconde o que Jobs salientou sobre você. É hora de seguir em frente, eu preciso melhorar minha vida, eu preciso de melhores experiências. Eu não sou o único que se sente assim, meus amigos, família, público, especialmente você sabe o que estou passando.

Muitos colegas se mudaram, os caras bacanas viraram as costas para você. Cameron, Lucas, Spielberg e Anderson ainda consideram você um tesouro, mas o tempo virá quando eles também vão deixar você e dar uma chance para o HTML, CSS e JS. Isso certamente será um precedente para que o mundo comece a conhecê-lo melhor. Espero que ainda ouça todos os sinais de aviso de que você precisa mudar, se você fizer… quem sabe, podemos ter outra chance.

Eu prometo a você, ninguém vai substituir o seu retrato na parede, eu lhe dou a minha palavra. Eu vou lembrar de você como o alegre e entusiasta que já foi uma vez. Por favor, não arruine a imagem que tenho de você, não faça uma cena dessa.

Desejo-lhe felicidades. Vejo você por aí.

Thoughts on Flash – A carta de Steve Jobs sobre o Flash

Há cerca de 2 semanas, Steve Jobs, um dos CEO de maior evidência da década, resolveu publicar na capa do site oficial da Apple (http://www.apple.com) uma carta muito polêmica.

Trata-se da Thoughts on Flash, onde ele massacra o Flash em defesa de uma internet que adote padrões web visando as tendências atuais de sua utilização.

A discussão até havia começado de forma razoável quando Jobs anunciou o iPad declarando que não daria suporte ao Flash pela falta de qualidade de tal tecnologia. A mídia deu atenção a seus comentários que resultou nessa carta. A mesma carta gerou um mundo de notícias e respostas, inclusive do próprio CEO da Adobe, que respondeu da mesma forma, utilizando uma carta pública no site de sua empresa.

Pra quem ainda não leu o artigo, preparei o mesmo em uma versão em português para a galera do Brasil também poder debater bem sobre o assunto.

Pensamentos sobre o Flash

Ler mais »

jQuery é bom, mas não é pra bitolar!

Passou pelo meu twitter esse exemplo de como o jQuery é bom, mas não devemos nos bitolar com isso.

Piada ou não, mostra uma pessoa bem perdida com o JavaScript que tinha uma variável que continha um valor do tipo número e queria saber como incrementar esse número em uma unidade do mesmo tipo.

Alguém respondeu a forma mais simples e nativa do JavaScript para solucionar isso, outros 2 responderam que o jeito seria procurar um plugin de jQuery para resolver o problema.
StackOverflow - jQuery vs JavaScript

O resultado foi a aprovação em massa das respostas ruins e em contrapartida a reprovação da resposta simples e correta.

jQuery é para facilitar e complementar a programação em JavaScript, não é para complicar nem substituir.

Fiquem atentos!

Compilar código em Javascript – Google Closure Compiler

Javascript não é um código que tradicionalmente compilamos.

Mesmo assim, usamos o termo para substituir nosso código por algo menor, comprimido. Ou seja, pegamos nosso código e deixamos ele de forma que ocupe menos bytes a serem carregados no browser do usuário, porém bem difícil de ser humanamente legível, salvo os uber-nerds de plantão.

Assim, eis que apresento uma poderosa ferramenta open-source de ponta, o Google Closure Compiler, mais um produto 100% free da Google Labs.

Trata-se de um aplicativo que pode ser utilizado via linha de código via programa desenvolvido em Java.

Ele vai além: pode ser utilizado através da web, indo a um simples endereço assim como pode ser executado via API RESTful.

resultadoCompiler
Ler mais »

Uma IDE pronta para HTML 5 e CSS 3, de graça!

Aptana Studio 3 Preview

Aptana Studio 3 Preview


O título já resume bastante, certo?

O grupo do Aptana acabou de lançar o preview do que deverá ser o Aptana Studio 3, com muitas novidades interessantes, entre elas:

  • Integração com o Git. Poderoso sistema de controle de versão que está em grande ascensão.
  • Suporte para HTML 5 e CSS 3
  • Suporte para Ruby 1.9 e Rails 3
  • Depurador de Ruby
  • Uma janela de comando prompt que funciona com o sistema operacionado utilizado

Uma outra das melhores partes que foram anunciadas é que o sistema será mantido como gratuito, com seu código aberto, totalmente open source.

Pra quem ainda não conhece o Aptana, trata-se de um projeto que pode ser utilizado como plugin do Eclipse, famosa IDE open source avalizada pela IBM. O Aptana também pode ser utilizado através de uma instalação stand-alone, não perdendo suas capacidades de utilizar outros plugins do Eclipse.

Ler mais »

Por um .hover() melhor

Me deparei com um exemplo sobre a questão do método .hover() do jQuery.

É realmente interessante como cada vez podemos melhorar nossos códigos, assim como códigos menores podem normalmente facilitar inclusive a compreensão humana dos mesmos.

// OMFG NO
$('.unit').hover(function () {
        $(this).addClass('unit-hover');
        $(this).children('.thumb').children('a').children('.thumb_BW').addClass('hidden');
        $(this).children('.thumb').children('a').children('.thumb_C').removeClass('hidden');
        $(this).children('.arrow-details').removeClass('hidden');
}, function () {
        $(this).removeClass('unit-hover');
        $(this).children('.thumb').children('a').children('.thumb_C').addClass('hidden');
        $(this).children('.thumb').children('a').children('.thumb_BW').removeClass('hidden');
        $(this).children('.arrow-details').addClass('hidden');
});
 
// HELL YA
$('.unit').hover(function (e) {
    var isIn = e.type === 'mouseenter',
          $this = $(this);
 
        $this.toggleClass('unit-hover',isIn);
        $this.find('.thumb a')
                .children('.thumb_BW').toggleClass('hidden',isIn)
            .end()
                . children('.thumb_C').toggleClass('hidden',!isIn);
 
        $this.children('.arrow-details').toggleClass('hidden',!isIn);
}

Vamos desconstruir e pegar um passo a passo do que está sendo modificado por ali. Ler mais »

Página 1 de 3123

Performance Optimization WordPress Plugins by W3 EDGE