Novo endereço de FEED

28 novembro, 2007

Caros,

mudamos nosso blog de servidor, e apesar do endereço ser o mesmo (http://log4dev.com), o endereço do feed mudou:

http://log4dev.com/feed/atom

Atualize seu leitor de feeds e continue recebendo nossos artigos e notícias.

[]s

Anúncios

Regexp nossa de cada dia!

19 novembro, 2007

Um professor da Unicamp com quem fiz 3 cursos sempre dizia que cada desenvolvedor deve possuir a sua caixinha de maldades. E por maldades, entenda ferramentas aplicáveis no dia a dia. Eu tenho algumas que considero indispensáveis para qualquer desenvolvedor. Expressão regular é uma delas. Aprender a sintaxe e usar corretamente regexp podeser complicado no início, mas o esforço vale a pena.

Descobri um site bem legal para testar suas habilidades nesta área, o RegexPal. A interface é das mais simples possíveis: escreva a sua expressão regular na caixa de texto superior, e o texto na caixa inferior. O site usa a mágica do Javascript para analisar e exibir em tempo real quais pedaços do texto são capturados pela expressão.

E ainda a este respeito…

Via XKCD

Suponha a seguinte definição de função em Javascript:

function foo(p1, p2,){
...
}

As seguinte chamadas são válidas: foo(), foo(1), foo(1, 2) e foo(1, 2, 3). No primeiro caso, a função foo será chamada e as variáveis terão todas valor null. No segundo caso, p1 terá valor 1 e p2, null. No segundo caso, p1 e p2 terão valor 1 e 2 respectivamente. No terceiro também, e o valor 3 poderá ser acessado pela variável local arguments (leia o meu post sobre argumentos variáveis em Javascript para entender esta funcionalidade).

Ou seja: uma declaração de função em javascript é extremamente flexível. Uma função sempre pode receber um número variável de parâmetros. A definição de parâmetros formais da função apenas define um nome a priori para estes valores.

Este flexibilidade toda seria ótima se Javascript, assim como Python, permitisse a identificação dos parâmetros na chamada da função. Por exemplo, se eu quisesse chamar foo apenas com o valor da variável p2, eu poderia chamar foo(p2=2). Infelizmente isto não funciona: Javascript vai preenchendo as variáveis na ordem em que elas aparecem na definição . Portanto se eu quisesse apenas atribuir um valor a p2, teria que chamar foo(null, 2). Além disso, a linguagem não permite definir valores defaut para os parâmetros.

Uma forma elegante de contornar esta limitação da linguagem, utilizando um recurso extremamente útil implementado nativamente, e de quebra permitir que as variáveis sejam identificadas na chamada ( o que facilita muito a leitura e manutenção do código, quando chamamos funções que aceitam muitos parâmetros) é criar funções que recebam sempre apenas um argumento: um dicionário.

Eis uma nova implementação de foo que recebe os mesmo 3 parâmetros, utilizando um dicionário, e que de quebra define valores default para cada um deles caso o usuário não defina:


function foo(params){
var p1 = params.p1 || 1;
var p2 = params.p2 || 2;
var p3 = params.p3 || "string"
}

Neste caso, caso eu queira chamar foo apenas com os valores de p2 e p3, eu executo foo({p2:2, p3: 3}). Simples assim.

A construção var p1 = params.p1 || 1 utiliza propriedades das expressões booleana para determinar o valor. Em javascript, uma função OR retorna o valor do primeiro elemento que for avaliado como verdadeiro, ou o valor do último elemento avaliado caso todos sejam falsos. Os valores null, 0, false, undefined e “” (string vazia) retornam falso. Caso o parâmetro não seja definido pelo usuário na chamada da função, params.<nome do atributo> retorna null, e portanto o segundo valor da expressão booleana é atribuido à variável.

Quer aprender mais dicas avançadas de Javascript? Funções com argumentos variáveis em Javascript, Captura de teclas em Javascript – Parte 1, Captura de teclas em Javascript – Parte 2 e Concatenação eficiente de Strings em Javascript e AJAX em 20 minutos.

Android Developer Challenge

12 novembro, 2007

Se uma empresa produz sistemas operacionais e deseja que a sua plataforma domine o mercado, ela tem duas opções:

  1. Colocar o seu CEO num palco de uma conferência, e pedir que ele fique gritando “developers, developers, developers” até perder a voz.
  2. Prover um ambiente de incentivo econômico para que desenvolvedores utilizem a sua plataforma, no lugar de outras alternativas.

Imagino que o pessoal da Google tenha respeito por suas cordas vocais, pois eles optaram pela segunda opção. Foi anunciado o Android Developer Challenge. A “competição” prevê prêmios para pessoas que desenvolvam novos aplicativos para a plataforma Android, totalizando até US$10 milhões.

Enquanto não há nenhum handset fabricado e pronto para o mercado, os prêmios serão pagos para as melhores propostas e idéias mais promissoras que possam fazer uso da tecnologia oferecida pelo Android. Até o começo de março de 2008, serão aceitas propostas de aplicativos. As 50 melhores propostas receberão um prêmio de US$ 25 mil. Depois disso, quando os celulares começarem a entrar no mercado e os aplicativos já puderem ser testados em campo, serão premiados os 20 melhores (entre os 50 qualificados), com prêmios de US$ 100 mil e US$ 275 mil.

A iniciativa é um reflexo dos tempos. Numa época em que aparelhos celulares são oferecidos de graça por operadoras de telefonia e que esses aparelhos são capazes de rodar sistemas operacionais livres, gratuitos e de qualidade, é difícil conseguir penetração em um mercado maduro. A alternativa, então, passa a ser fomentar desenvolvedores e criar um ecossistema de inovação na sua plataforma.

Alguém aí quer participar? Entre em contato.

Cursos Livres no MIT

12 novembro, 2007

Em 2001 o MIT anunciou a criação do OCW (MIT OpenCourseWAre). Esta é uma iniciativa que procura utilizar a internet para avançar o conhecimento e educar estudantes das mais diferentes áreas em todo o mundo – seguindo a missão da instituição. Através de seu site, o OCW publica gratuitamente materiais dos cursos utilizados no MIT, incluindo notas de aulas, conjuntos de problemas, vídeos e demonstrações.

O primeiro piloto, com 50 cursos surgiu em 2002. Em 2003 o projeto foi oficialmente lançado, contando com cerca de 500 cursos. De acordo com as informações do site, em 2007 praticamente todos os cursos do MIT foram publicados. É uma excelente fonte para aqueles que têm interesse de aprender algo novo, aprofundar seus conhecimentos e manter-se atualizado. Vale lembrar que de acordo com o ranking de universidades citado pelo Raphael, a instituição é considerada como sendo a décima melhor universidade do mundo.

Esta iniciativa inspirou diversas outras universidades do mundo, que então criaram o OpenCourseWare Consortium, que agrega desde renomadas instituições dos Estados Unidos, Europa e Japão, até instituições de países como Vietnã e Colômbia (não há nenhuma universidade brasileira no consórcio).

Cabe notar que a disponibilização do material não garante certificação de nenhuma espécie,  e tampouco corresponde fielmente a todo o material dos cursos. De qualquer forma, é uma excelente fonte por aqueles ávidos por conhecimento. Eu mesmo já comecei a consultar o material de três cursos bastante interessantes: Introdução à probabilidade e estatística, Algoritmos para Biologia Computacional e Análise Econômica para Decisões de Negócios. Mas se você preferir, pode fazer um curso sobre Imperialismo Europeu nos séculos XIX e XX, Alemão (língua) ou Biomedicina Aeroespacial e Engenharia de Suporte à Vida. São várias as possibilidades.

Nóis é pobre, mais nóis é bom de pesquisa, mané!

Um relatório publicado pelo The Times Higher Education Supplement mostra o resultado de uma pesquisa feita entre os acadêmicos, empregadores e estudantes para avaliar a qualidade das universidades. Esse ano, percebe-se o notável crescimento das universidades da Inglaterra e uma agradável surpresa para os nativos da Banânia: a USP e a Unicamp aparecem listadas.

Reportagem sobre o assunto, e a lista de todas as 200 melhores universidades que eu puxei do site do THES.

Um pouco em cima da hora, o Log4Dev anuncia que amanhã, dia 10 de novembro de 2008, ocorrerá em São Paulo o primeiro 1o StartupCamp Brazil Web. O objetivo do evento é fomentar o empreendorismo brasileiro, promovendo o encontro de VCs, angels, empreendedores, donos de startups, blogueiros e pessoas ligadas à web brasileira. De manhã, haverão palestras e a tarde, um encontro aberto para discutir o empreendedorismo no Brasil. Mais informações sobre o projeto StartupCamp Brazil podem ser encontradas no site deles.