CodeCast #1 – Impressões sobre Início de Carreira

CodeCast

É com grande prazer que anuncio o primeiro episódio do CodeCast, projeto meu juntamente com o Rafael Marin. Um podcast sobre desenvolvimento web e todas as suas possíveis vertentes.

Nessa primeira edição, falamos sobre Impressões sobre Início de Carreira, com relação ao que já conseguimos perceber em nossas experiências na área. Como somos novos nesse negócio de podcast, já peço desculpas por qualquer bobagem dita ou os “ahmmm”, “hummm”, que podem ter aparecido de maneira mais exagerada… Mas a gente aprende com o tempo.

E de vocês, caros leitores-ouvintes, aguardamos um feedback sobre essa nova empreitada. Qualquer sugestão, crítica, elogio, reclamação ou o que seja, sinta-se à vontade para nos dizer.

Baixe a primeira edição: Impressões sobre Início de Carreira, em qualidade alta (44MB) ou qualidade baixa (19MB). Duração: 48 minutos. E vou ficando por aqui, até mais!

17 de março, 2008

JSON no PHP

JSON com PHP

Não seria ótimo se pudéssemos importar nossos dados em JSON no PHP e tratá-los como no JavaScript? Pois é, a partir do PHP 5.2.0 já temos uma extensão para JSON incluída, e é dela que vou falar nesse post.

Com o advento do Ajax, JSON se tornou um formato para intercâmbio de dados bem mais eficiente e compacto que XML. E nada como tratá-lo como um objeto também no lado do servidor, assim como fazemos no JavaScript. As duas funções que tratam da conversão objeto-string e string-objeto no PHP são json_encode e json_decode, respectivamente.

Objeto para String

Quem já não amaldiçoou o PHP transformando manualmente um array em uma string JSON? É uma tarefa fácil, mas extremamente chata, principalmente se precisarmos usar recursão. A função json_encode faz todo o trabalho sujo pra você. Basta passar o array contendo os dados como parâmetro.

$json = array("user" => "JulioGreff", "action" => "status", "text" => "online");
echo json_encode($json);

Além de simples arrays como esse, podemos fazer algo mais complexo, com arrays dentro de arrays, em vários níveis.

$json = array("group" => "Web", "action" => "list");
$json["list"] = array("JavaScript", "Ajax", "WebStandards");
$json["users"] = array(array("name" => "JulioGreff", "status" => "online"));
echo json_encode($json);

No exemplo, além do sub-membro também coloquei um array comum, criado certinho. Adeus, foreach!

String para Objeto

Essa era uma parte complicada, transformar uma string recebida em um objeto, para podermos trabalhar. Com a função json_decode virou moleza.

$json = '{"user_id": 5, "action": "post", "text": "JSON no PHP"}';
$json = json_decode($json);
echo $json->action; // "post"
echo $json->text; // "JSON no PHP"

Veja que estamos usando um objeto, e não um array, por isso usamos o -> (equivalente ao ponto em JavaScript). Para que a função retorne um array, passamos um segundo parâmetro (booleano) indicando se o objeto deve ser transformado em um array (true) ou não.

$json = '{"user_id": 5, "action": "post", "text": "JSON no PHP"}';
$json = json_decode($json, true);
echo $json["action"]; // "post"
echo $json["text"]; // "JSON no PHP"

JSON Válido

Lembre-se sempre das aspas no JSON! Caso contrário, json_decode não irá funcionar. As aspas são necessárias em todas as strings, inclusive as chaves.

Também é necessário observar a codificação das strings para a função json_encode, pois a função só funciona com UTF-8.

Vou ficando por aqui. Até a próxima!

29 de fevereiro, 2008

Yoomp – Primeiras Impressões

Yoomp

O Yoomp é uma “rede agregadora de blogs, blogueiros e simpatizantes”, surgida há pouco tempo. Nos últimos dias estive utilizando o serviço, pra ver como era, e decidi postar aqui minhas primeiras impressões quanto à essa iniciativa.

O serviço foi criado pelo Rodrigo Fante, do Fazedor de Site, e pelo Danilo Ardenghi, do Blog Pessoal. Logo que o serviço foi lançado, o Rodrigo comentou aqui no blog pedindo uma breve avaliação. Eu o fiz, dei algumas sugestões (como as URLs amigáveis, já implantadas), mas não pude ir muito a fundo. Hoje pretendo mostrar a opinião depois de um certo tempo de uso, as partes boas e as partes nem tão boas do serviço.

Prós

O Rodrigo e o Danilo foram muito criativos na criação do Yoomp. Vi muitas funcionalidades que não havia visto em serviço algum, além de outras que foram muito bem implementadas. Então, vamos à lista.

  • Yoomp Burner: além de um simples distribuidor de feeds, o Yoomp Burner protege seus feeds contra os splogs, os plagiadores de conteúdo. Não tive a oportunidade de testar o serviço, mas parece estar funcionando bem e é uma idéia sensacional.
  • Blog Rank: provavelmente inspirado no PageRank, o BlogRank calcula a popularidade dos blogs, a partir de certos critérios, resultando em uma nota de 0 a 10. O meu já é 2! Além de saber seu BlogRank, você também pode mostrá-lo em seu blog através do widget do BlogRank, lançado dia 22.
  • Avaliação dos Blogs: essa eu achei demais. O ranking da página inicial (Destaques) é calculado de acordo com as avaliações dos usuários, nos critérios Layout, Conteúdo, Escrita, Persuasão, Confiabilidade, Publicidade, Domínio e Acessibilidade. Bola dentro, adorei o sistema. Aproveite e avalie o meu blog também!
  • Interação: essa também é genial. O serviço também integra características de rede social. Você pode, além de escolher favoritos, como em qualquer serviço, definir outros blogueiros como seus amigos, enviar recados para outros blogueiros e comentar sobre outros blogs, deixando os blogueiros mais próximos e nos torna mais humanos dentro do serviço.
  • Monetização: se você escolher por mostrar pelo menos um resumo de seus posts na página de seu blog, você pode indicar seu código do AdSense, que aparecerá junto com seus textos, ou seja, você exibe seus anúncios no Yoomp também! Eu já indiquei o meu…
  • Flickr: também achei a idéia interessante, embora não a tenha utilizado. Além de seus posts em seu blog, você também pode importar suas fotos do Flickr. Se não bastasse, você também pode escolher quem poderá ver suas fotos: qualquer um, usuários do Yoomp, seus amigos ou somente você.

Contras

Embora tenha funcionalidades geniosas e muito bem-feitas, o Yoomp tem alguns problemas também. Vou citar os que encontrei, e alguns bastante incômodos, mas não que prejudicasse a qualidade do serviço.

  • O login não é lá muito eficiente. Mesmo que eu escolha a opção para lembrar, tenho que me logar novamente toda vez que acesso o Yoomp. Não que seja um grande problema, mas é no mínimo incômodo ter que digitar nome e senha toda hora. Update: o login foi atualizado hoje, como o Rodrigo disse nos comentários. Agora sim ficou bom.
  • Os títulos das páginas não são descritivos o suficiente, já que estão com o mesmo texto das URLs. Além disso, é necessário aplicar um pouco de usabilidade neles também.
  • Falta um serviço de ping, para que os novos posts sejam vistos pelo sistema logo que postados. Tenho que esperar até o servidor resolver indexar meus posts sempre que atualizo o blog.
  • O snapshot dos blogs também tem problemas, principalmente com o Blogspot, que não é mostrado corretamente. Além disso, troquei meu layout há mais de uma semana e o snapshot ainda continua azul. Mesmo que eu clique em “Atualizar a Imagem do Site”, a situação continua a mesma.
  • A seção Últimos Artigos poderia incluir um link direto para o blog de onde veio, sem precisar abrir o perfil do mesmo.
  • Não entendi mesmo como funcionam os Yoompies. Pra que servem, tudo bem, mas de acordo com o texto explicativo, basta a participação e o número sobe. Avaliei vários blogs, incluí dois, enviei alguns recados, adicionei favoritos e amigos e continuei nos 20. Fiquei sem entender.
  • Algumas páginas, como o Sobre, estão simplesmente vazias. Outras, como a Ajuda, poderiam ser melhor exploradas. A ajuda poderia incluir tópicos como a configuração do AdSense, dos widgets, entre outras funcionalidades.

Conclusão

Como todo serviço em início de vida, o Yoomp tem seus defeitos, mas sinceramente tem um potencial enorme, pois é muito criativo e inovador. Parabenizo tanto o Rodrigo quanto o Danilo pela iniciativa e pelo bom trabalho.

25 de fevereiro, 2008

Diz que até não é … um mau blog

O Diego Carrion, do MouseOver Studio, nomeu meu blog como de referência merecida. “Diz que até não é … Um mau blog”.

Diz que até não é … Um mau blog

Agradeço muito a nomeação, Diego, e vou me esforçar para manter o blog digno de tal.

Com o poder a mim investido, também nomeio alguns blogs que considero dignos de referência:

E agora, as regras para nomeação:

  • Este prêmio deve ser atribuído aos blogs que considerem ser bons. Entende-se como bons os blogs que você costuma visitar regularmente e onde deixa comentários.
  • Só e somente se recebeu o “Diz que até não é um mau blog”, deve escrever um post, indicando a pessoa que lhe deu o prêmio com um link, a tag do prêmio, as regras e a indicação de outros 7 blogs para receberem o prêmio.
  • Deve exibir orgulhosamente a tag do premio no seu blog, de preferência com um link para o post em que fala dele.

Sei que alguns dos indicados andam ocupados, mas se não puderem postar tudo bem. E também tem alguns que não podem postar por motivos de força maior, mas logo estão de volta (né, Rafael?).

21 de fevereiro, 2008

JavaScript Orientado a Objetos – Parte 3

Volto com a terceira parte sobre JavaScript Orientado a Objetos. Então chega de papo e vamos logo ao que interessa.

Propriedades Estáticas

Propriedades e métodos estáticos são aqueles que podem ser acessados de qualquer lugar do script, sem a necessidade de instanciar a classe. Considera-se que o JavaScript não suporta esse conceito, já que não possui classes, mas pode-se também simular.

Funções não deixam de ser objetos, e objetos podem ter propriedades. Veja no exemplo:

function Person() {  }
        Person.staticMethod = function() { alert("Método Estático"); }
        Person.staticMethod(): // "Método Estático"
        var me = new Person();
        me.staticMethod(); // Retornará erro

Também muito simples, e bem útil em certas ocasiões. Podemos tomar como exemplo a Mootools, com o Class e Class.empty. Class é um construtor, e Class.empty é um método estático.

Herança

A herança é outro conceito que o JavaScript não implementa formalmente, necessitando das famosas gambiarras. Quando bem empregada, permite uma grande reutilização de código, criando classes derivadas a partir de uma superclasse (classe-mãe), herdando todas as propriedades.

Existem vários tipos específicos de pessoas, em vários sentidos. Brasileiros, portugueses, americanos, vendedores, médicos, desenvolvedores… Mesmo sendo mais específicos, todos eles têm características comuns de uma pessoa. Assim, o construtor Brazilian é derivado de Person.

Primeiro, vamos criar os construtores com suas propriedades.

function Person() {
                this.eyes = 2;
                this.speak = function(message) {
                        alert(message);
                }
        }
        function Brazilian() {
                this.birthCountry = "Brasil";
        }

Pessoas falam, e isso se aplica também aos brasileiros, mas nem todas as pessoas nasceram no Brasil. Assim, a superclasse (ou super-construtor) é Person, e somente nela definimos as propriedades comuns.

Para fazer a herança existem vários métodos, mas vou explicar agora somente o que considero o mais simples e usado. Basta criar uma instância do “super-construtor” no protótipo do construtor derivado, assim:

Brazilian.prototype = new Person;

Todo o construtor Person foi instanciado como parte de Brazilian. Agora podemos criar um objeto Brazilian e utilizar tanto as propriedades específicas (definidas no próprio construtor) quanto as do “super-construtor”.

var me = new Brazilian("Julio Greff");
        alert(me.birthCountry); // "Brasil"
        me.speak("Olá!"); // "Olá!"

Existem outros métodos para herança, mas como já disse ficarão para outra oportunidade. E a série sobre JavaScript Orientado a Objetos se encerra aqui! Qualquer correção ou sugestão será bem vinda, basta comentar! Até!

20 de fevereiro, 2008