Arquivo

Arquivo de junho, 2009

fisl10 - TDD e Rails: Mais rápido, mais forte e melhor

30 de junho de 2009

A primeira apresentação que assisti no fisl10 foi muito boa. Lucas Húngaro mostrou formas de criar aplicações Ruby on Rails com testes, passando um pouco da sua experiência em desenvolvimento Web.

Lucas Húngaro

A palestra foi dividida em quatro partes: Fundamentos, Abordagens, Como eu desenvolvo com testes no Rails e Dicas. Mas separei aqui em mais duas: Boas Práticas e Maus Sinais.

Leia mais…

Eventos, Ruby, TDD , , , , , , , , , , , , ,

3ª Corrida Hebraica Macabi - 6 Km

24 de junho de 2009

No domingo de 21 de junho de 2009 corri os 6 km da 3ª Corrida Hebraica Macabi.

A corrida foi disputada no interior da Cidade Universitária (USP) e foi organizada pela Corpore.

Tempo total: 00:27:05

Tempo médio por km: 04:30

Tempo em cada km:

  1. 04:05
  2. 04:36
  3. 04:53
  4. 04:26
  5. 04:32
  6. 04:29

Foto de Runner SP

Foto de Webrun

Foto de SportClick

Foto de Webrun

Foto de Webrun

Esportes , , , , , , ,

Programação serena

20 de junho de 2009

Meu pai, que considero um exemplo de pessoa honesta, humilde e de bom caráter, me ensinou que na vida precisamos agir com serenidade. Ele me apresentou a oração da serenidade:

Concedei-me, Senhor, a serenidade necessária para aceitar as coisas que não posso modificar, coragem para modificar aquelas que posso e sabedoria para distinguir umas das outras.

Agora, o que isso tem a ver com desenvolvimento de software?

Imagine um cenário que você precise incluir uma nova funcionalidade em uma aplicação existente. Suponha que o código dessa aplicação não está muito bom, há acoplamentos entre os objetos, pouca cobertura de testes e a arquitetura deixa a desejar. Você precisa incluir a nova funcionalidade, mas não pode aumentar o débito técnico.

Por outro lado, você não irá refazer toda a aplicação de uma forma melhor, pois além de você não ter tempo (e dinheiro) disponível para isso, o sistema hoje atende os requisitos atuais e executa sem problemas.

Nessa situação, você precisa de sabedoria para distinguir o que pode ser modificado neste momento no código existente para melhorá-lo e o que você não irá modificar agora, já que não afeta diretamente a nova funcionalidade.

Você necessita de coragem para modificar o código legado, pagar o débito técnico, criar testes automatizados, refatorar, tornar o código mais claro, reformular o design, diminuir acoplamentos.

Você terá serenidade para aceitar que nem tudo pode ser melhorado agora, pois você tem prazo e orçamento a serem cumpridos. O objetivo neste momento é implementar a nova funcionalidade.

Com serenidade você pode alcançar uma melhoria contínua no seu software.
.
Obs.: Após rascunhar o conteúdo deste post dei uma olhada no meu leitor de feeds e me deparei com o post Parar e Refatorar? da InfoQ Brasil. A discussão sobre o tema é longa, mas a serenidade também se aplica.

Arquitetura , , , ,

SEO PARK, novo blog sobre SEO

16 de junho de 2009

Glaucio Cancion lançou o SEO PARK, um blog para falar sobre SEO, com a finalidade de trocar informações com diversos profissionais que estão envolvidos com o assunto.

Search Engine Optimization (SEO) é o conjunto de estratégias com o objetivo de potencializar e melhorar o
posicionamento de um site nas páginas de resultados de pesquisa nos mecanismos de busca.

Acompanhe o blog pelo endereço http://blogseopark.blogspot.com ou assine o feed.

Geral , , , , , ,

Los Angeles Lakers é Campeão da NBA!

14 de junho de 2009

Los Angeles Lakers se consagrou Campeão da Temporada 2008-2009 da NBA ao vencer o quinto jogo do playoff final, contra o Orlando Magic, por 99 a 86, fechando a série em 4 a 1.

Este é o 15º título dos Lakers.

Foto de Jesse D. Garrabrant - www.nba.com

Foto de Elsa - www.nba.com

Leia mais…

Esportes , , ,

Garotos propaganda da QCon

14 de junho de 2009

O site da QCon San Francisco 2009 traz algumas fotos do evento do ano passado.

E para surpresa minha, e do pessoal da Locaweb que esteve lá comigo, as fotos da página de tutoriais são quase que exclusivamente da gente:

Foto retirada do site da QCon

Foto retirada do site da QCon

Na página inicial também aparecemos na foto, mas não dá para notar muito.

O Herbert Fisher que encontrou as fotos no site da QCon e nos avisou.

Eventos ,

10º Fórum Internacional de Software Livre - fisl10

14 de junho de 2009

No final desse mês estarei no fisl10, o 10º Fórum Internacional de Software Livre. O evento será realizado entre os dias 24 a 27 de junho, em Porto Alegre.

O fisl é o maior evento de software livre da América Latina e até a publicação desse post já possui mais de 5.500 inscrições. A Associação SoftwareLivre.org (ASL), que organiza o evento, espera atingir a marca de 8 mil participantes.

Entre os assuntos que serão abordados, estão:

  • Linux, Ubuntu, KDE, BSD
  • Desenvolvimento em Ruby, Java, PHP, Python, Perl e Smalltalk
  • Desenvolvimento de jogos
  • MySQL, PostgreSQL
  • Robótica
  • Segurança
  • Software livre e negócios

Palestrantes como Richard Matthew Stallma, fundador do Movimento Software Livre, do Projeto GNU e da Free Software Fundation (FSF); Peter Sunde, um dos fundadores do site The Pirate Bay; e John “Maddog” Hall, fundador da Linux Internacional são destaques do evento.

A lista completa dos palestrantes, a programação completa, inscrições e outras informações, você encontra no site do fisl10.

Eventos , , , , , , , , , , , , ,

.NET Architects Day 2009

13 de junho de 2009

No próximo dia 27 de junho vai rolar o primeiro evento do grupo de discussão sobre arquitetura de software .NET Architects.

Eu infelizmente não vou, pois estarei em outro evento. Mas Luciano Coelho e Rodrigo Ortiz, que trabalham comigo, irão e poderão nos contar tudo que aconteceu.

Algo interessante é que exatamente todos os assuntos que serão abordados, estaremos utilizando em um novo projeto que irá iniciar no segundo semestre.

Veja o conteúdo das palestras:

Programando com prazer com Domain Driven Design (DDD)
Giovanni Bassi
O Domain Driven Design é uma nova abordagem para desenvolvimento de software. Mas não é tão nova assim. Ela reune melhores práticas de OO e traz uma nova visão a velhos conceitos. Entenda nesta palestra a proposta do DDD, e porque ele pode mudar sua maneira de programar.

Utilizando Injeção de Dependência com Unity (Enterprise Library)
Leandro Daniel
Nessa palestra veremos o padrão de Injeção de Dependência como uma alternativa técnica na construção de aplicações plugáveis, onde se deseja manter a flexibilidade para troca de componentes com menor impacto de manutenção, maior reusabilidade e facilidade na aplicação de testes.

ASP.NET MVC: tome seu HTML de volta
Victor Cavalcante
Nessa palestra veremos o que é o ASP.NET MVC e o que ele não é, como ele funciona, diferenças entre ASP.NET MVC e Web Forms, extensibilidade, testabilidade, criação de templates com T4 e jQuery. A intenção desta palestra é dar informações suficientes para que o arquiteto decida utilizar ou não ASP.NET MVC.

ORM - Sendo preguiçoso com NHibernate
Juliano Oliveira
Nessa palestra você verá os principais pontos que fazem dos frameworks de ORM e do NHibernate ferramentas tão importantes nos projetos, desmistificar seus maiores mitos, os principais recursos, ferramentas de análise (NHProof) e verá também como ser produtivo com o NHibernate.

Testes: garantindo que seu código faz o que você quer
Mauricio Aniche
Entenda porque testes automatizados de software são importantes e quais as vantagens que ele traz para a equipe de desenvolvimento. Veja também na prática que criar testes automatizados é simples, rápido e realmente útil.

O valor da inscrição é de R$ 50,00 e o evento terá aproximadamente 9 horas de duração.
Mais informações você pode ter diretamente na página do evento.

.NET, Arquitetura, Eventos, TDD , , , , , , , , , , , ,

WTF: Flores para Martin Fowler

10 de junho de 2009

WTF é conhecido no mundo da tecnologia como “Worse Than Failure” (Pior do que falhar) ou simplesmente “What The Fuck”. São situações onde coisas estranhas e inexplicáveis acontecem na execução de softwares, que causam aquele tipo de reação aos usuários:

Existe até um blog, The Daily WTF, que trata sobre esse tipo de assunto de forma extrovertida. Mas vamos ao WTF em questão.

Quando estive na QCon San Francisco 2008, fiquei hospedado no mesmo hotel onde aconteceu o evento, The Westin San Francisco Market Street.

Na TV do quarto era exibida a programação dos eventos que aconteciam durante todo o dia no hotel.
No segundo dia da QCon, veja só quem eram os palestrantes do Tutorial sobre Domain Specific Languages, segundo o canal da programação diária de eventos:

O que será que o Martin Fowler diria (ou disse) para o pessoal do hotel sobre isso?
Algo do tipo “Test all the fucking time” ou “Send me your apologies with my flowers”?

Obs.: No saguão do hotel havia um totem exibindo a programação dos eventos, mas não continha esse erro.

Geral ,

Não use nulo no retorno de coleções

9 de junho de 2009

Quando você tiver um método em que o retorno é algum tipo de coleção, ou seja, qualquer classe que implemente IEnumerable ou uma de suas interfaces filhas, nunca retorne null.

Quando a lógica do seu método não tiver elementos para serem colocados na coleção de retorno, você deve retornar uma lista vazia, com zero elementos. Essa boa prática vai facilitar a vida do código que irá consumir seu método.

Vamos ver um exemplo de um método que retorne uma coleção:

public class BookService
{
    public IList<Book> FindBooksByTitle(string startsWith)
    {
        //Alguma lógica que não encontra nenhum livro.
        return null;

        //Código restante.
    }
}

E o código que consome o método FindBooksByTitle:

BookService bs = new BookService();

foreach (var book in bs.FindBooksByTitle(&amp;amp;quot;The history&amp;amp;quot;))
{
    //Faz alguma coisa com a variável book.
}

Do jeito que está, se nenhum livro for encontrado de acordo com o critério passado, o valor retornado será null. Consequentemente, na linha 3 do código consumidor será gerada uma exceção do tipo NullReferenceException, pois tentará iterar através do foreach em uma variável nula.

Como resolvemos isso? Ah, basta colocar uma verificação se o retorno do método é nulo:

BookService bs = new BookService();
IList<Book> books = bs.FindBooksByTitle("The history");

if (books != null)
{
    foreach (var book in books)
    {
        //Faz alguma coisa com a variável book.
    }
}

Errado! O código que consome o método não pode ficar responsável por fazer esse tratamento. Senão, todo código que consumir o método FindBooksByTitle precisará fazer essa verificação de retorno nulo antes de iterar na coleção. Essa responsabilidade tem de ficar dentro da classe BookService e não fora dela.

Consertando o exemplo para retornar uma lista vazia:

public class BookService
{
    public IList<Book> FindBooksByTitle(string startsWith)
    {
        //Alguma lógica que não encontra nenhum livro.
        return new List<Book>();

        //Código restante.
    }
}

Agora o código consumidor pode iterar sem erros, mesmo que não seja encontrado nenhum livro:

BookService bs = new BookService();

foreach (var book in bs.FindBooksByTitle("The history"))
{
    //Faz alguma coisa com a variável book.
}

.NET , , ,