Arquivo

Arquivo da Categoria ‘Arquitetura’

.NET Architects Day 2011

26 de maio de 2011

Nos dias 3 e 4 de junho vai o rolar o .NET Architects Day 2011, uma conferência nacional sem fins lucrativos focada em arquitetura de software na plataforma .NET.

O evento é organizado pelo grupo de discussão sobre arquitetura de software .NET Architects e contará com a presença de palestrantes como Alexandre Porcelli, Fabio Akita, Giovanni Bassi, Gleicon Moraes, Otavio Pecego, Waldemir Cambiucci, entre outros.

Mas o que um desenvolvedor que trabalha o dia inteiro com Ruby on Rails irá fazer em um evento de .NET?

Antes de mais nada, “abra sua mente”. Não seja radical em suas opiniões, por mais que você não goste da Microsoft, do Windows ou do Internet Explorer.

O foco do evento é sobre arquitetura de software e não exclusivamente .NET. Tenho certeza que nenhum palestrante irá mostrar como usar o Visual Studio para “arrastar e soltar”.

Por exemplo, a palestra de Alexandre Porcelli e Gleicon Moraes, “A importância dos dados em sua arquitetura… uma visão muito além do SQL Server”, discutirá sobre noSQL e opções ao modelo da dados relacional. Já o Fabio Akita estará palestrando sobre o uso de Ruby além do Rails e traçando um paralelo com a plataforma .NET.

Para ver a programação completa do evento, use o link abaixo:
http://dnad.dotnetarchitects.net/dnad/2011/programacao/

.NET, Arquitetura, Eventos , , ,

2010 em livros

5 de janeiro de 2011

Estou a “plagiando” uma idéia de Phillip Calçado que fez um post em seu blog mostrando os livros lidos no ano de 2010, com um pequeno comentário sobre cada um.

Com certeza minha lista é muito mais modesta e curta, mas a idéia de compartilhar conhecimento é a mesma.

Esse post também serve para me alertar a ler mais, mesmo com toda a correria de trabalho, família, estudo e prática de esportes, gostaria de ter lido mais que 7 livros durante 2010.

Os livros são apresentados na ordem que foram lidos:

Clean Code: A Handbook of Agile Software Craftsmanship

Clean Code: A Handbook of Agile Software Craftsmanship

Robert C. Martin
Prentice Hall
August 2008

Muito bom

Todo programador deveria ler. Uncle Bob nos concede um pouco de sua vasta experiência em desenvolvimento de software, mostrando como deixar seu código mais enxuto, legível e simples. Esse livro serviu de inspiração para várias palestras e apresentações por aí sobre como escrever código de melhor qualidade.

The RSpec Book: Behaviour-Driven Development with RSpec, Cucumber, and Friends

The RSpec Book: Behaviour-Driven Development with RSpec, Cucumber, and Friends

David Chelimsky, Dave Astels, Zach Dennis, Aslak Hellesøy, Bryan Helmkamp, Dan North
The Pragmatic Programmers
December 2010

Ótimo

Essencial para quem quer aprender RSpec. Explica como seria o ciclo ideal de BDD. Também traz exemplos práticos de utilização de RSpec e Cucumber com Ruby e Ruby on Rails.

JavaScript: The Good Parts

JavaScript: The Good Parts

Douglas Crockford
O’Reilly
May 2008

Muito bom

Quem curte JavaScript irá gostar bastante. Fiz anotações sobre esse livro nesse post.

Design Patterns in Ruby

Design Patterns in Ruby

Russ Olsen
Addison-Wesley Professional
December 2007

Bom

Traz uma boa parte dos design patterns apresentados pela GoF utilizando Ruby. O que eu achei mais interessante foi a abordagem utilizada pelo autor: dado um design pattern, o mesmo é implementado de uma maneira clássica e depois reimplementado usando os recursos que o Ruby oferece, como por exemplo, metaprogramação, tornando alguns patterns totalmente diferentes de sua implementação original.

Professional ASP.NET MVC 2

Professional ASP.NET MVC 2

Jon Galloway, Scott Hanselman, Phil Haack, Scott Guthrie, Rob Conery
Wrox
June 2010

Muito bom

Sempre gostei da séria Professional da Wrox e esse livro mantém a linha de qualidade. Logo no primeiro capítulo tem um passo a passo da construção de uma pequena, mas completa, aplicação ASP.NET MVC 2. Os demais capítulos cobrem os demais recursos do framework. Só pelos autores já vale a leitura.

ASP.NET MVC 2 in Action

ASP.NET MVC 2 in Action

Jeffrey Palermo, Ben Scheirman, Jimmy Bogard, Eric Hexter, Matthew Hinze
Manning
June 2010

Regular

Talvez se eu não tivesse lido o livro da Wrox antes teria classificado melhor este. Em algumas vezes os autores focam demais no uso de ferramentas extras, auxiliares ao desenvolvimento de aplicações ASP.NET MVC 2. Isso é bom para quando você já tem conhecimento e/ou vivência do framework.

Test-Drive ASP.NET MVC

Test-Drive ASP.NET MVC

Jonathan McCracken
The Pragmatic Programmers
June 2010

Regular

Eu esperava bem mais desse livro por se tratar de TDD. Havia imaginado vários passos práticos de desenvolvimento orientado a testes no melhor estilo Kent Beck ou Uncle Bob. Para quem já conhece TDD, não irá ver grandes novidades.

Eu uso o Shelfari como prateleira virtual para organizar os livros que li, estou lendo e pretendo ler.
É bem legal e tem vários recursos. Por exemplo, esse endereço lista os livros que li no ano de 2010.

.NET, Arquitetura, JavaScript, Livros, Ruby, TDD , , , , , , , , , , , ,

Jim Webber faz consultoria na Locaweb

5 de maio de 2010

Jim Webber possui uma vasta experiência em arquitetura e desenvolvimento de Web Services. Atualmente está trabalhando na ThoughtWorks de Londres e finalizando seu novo livro REST in Practice: Hypermedia and Systems Architecture, que tem previsão de publicação para setembro desse ano.

Durante toda essa semana, ele está na Locaweb prestando consultoria para as equipes de tecnologia da empresa.

Eu e Jim Webber na Locaweb

Ontem foi a vez da equipe de SaaS, a qual eu faço parte. Mostramos a ele nossos sistemas, arquiteturas, tecnologias, formas de trabalho, desafios, etc. Também falamos dos nossos problemas atuais e, é claro, fizemos um monte de perguntas.

O Jim nos ajudou com algumas dúvidas e nos propos vários soluções e caminhos que podem ser tomados. Ele é um cara bastante extrovertido e simpático. Passamos o dia todo conversando e foi uma experiência muito boa para toda a equipe.

Eu particularmente tive um desafio pessoal, pois apresentei ao Jim o atual projeto de Comércio Eletrônico que estamos desenvolvendo. Foi minha primeira apresentação em inglês e logo para um renomado expectador. Bom, pelo feedback dos meus companheiros de equipe, e do próprio Jim, tudo ocorreu bem.

Arquitetura, Ruby, TDD , , , , , , , , ,

Enterprise Library 5.0 release final liberada para download

26 de abril de 2010

Microsoft Enterprise Library é uma coleção de blocos de código desenhados para auxiliar desenvolvedores .NET com tarefas comuns de desenvolvimento.

Esta versão inclui:

  • Caching Block
  • Cryptography Block
  • Data Access Block
  • Exception Handling Block
  • Logging Block
  • Policy Injection Block
  • Security Block
  • Validation Block
  • Unity

A melhor versão da Enterprise Library contém novas características e atualizações que irão deixar os desenvolvedores .NET mais produtivos. Entre elas estão:

  • Refatoração da arquitetura que provê testabilidade e manutenabilidade através de um completo suporte à injeção de dependência
  • Contêiner de injeção de dependência independente (Unity é entregue com Enterprise Library, mas você pode substituí-lo por um outro contêiner de sua preferência)
  • Suporte à configuração programática, incluindo uma interface de configuração fluente e um esquema XSD para permitir IntelliSense
  • Reformulação da ferramenta de configuração
  • Processamento de resultados de consultas de dados mais intuitivo
  • Suporte a acesso de dados assíncrono
  • Atributos de validação entre Validation Application Block e DataAnnotations
  • Integração com mecanismos de validação do Windows Presentation Foundation (WPF)
  • Suporte a cenários de configuração complexos, o que inclui mesclagem de múltiplos arquivos de configuração
  • Liberação de cachê otimizada
  • Melhor performance para operações de log
  • Redução do número de assemblies
  • Suporte ao .NET Framework 4.0 e integração com Visual Studio 2010
  • Melhorias no Unity

Para fazer o download da Enterprise Library 5.0, bem como documentação, detalhes da versão, extensões e vídeos, acesse o link abaixo:
http://msdn.microsoft.com/en-us/library/ff632023.aspx

.NET, Arquitetura , , , , , , ,

Melhores posts do ano de 2009

8 de janeiro de 2010

Serialização de objetos em JSON com Ruby on Rails

13 de dezembro de 2009

Em um post anterior mostrei como serializar objetos em JSON utilizando .NET. Agora vamos fazer a mesma coisa com Ruby on Rails.

Esse é o Jason, não JSON.

Vamos utilizar como exemplo uma classe de modelo chamada SomeFake:

class SomeFake < ActiveRecord::Base

end

Utilizando essa migration:

class CreateSomeFakes < ActiveRecord::Migration
  def self.up
    create_table :some_fakes do |t|
      t.string :text
      t.float :value
      t.timestamps
    end
  end

  def self.down
    drop_table :some_fakes
  end
end

No script/console vamos criar uma instância do modelo SomeFake com os seguintes dados:
>> fake = SomeFake.create :text => "I am a sample text.", :value => 150.85
=> #<SomeFake id: 1, text: "I am a sample text.", value: #<BigDecimal:18ac9f0,'0.15085E3',8(12)>, created_at: "2009-12-13 19:43:28", updated_at: "2009-12-13 19:43:28">

Então queremos serializar a variável fake em JSON para obter o seguinte resultado:
{"id":1,"text":"I am a sample text.","value":150.85}

Para fazer isso, vamos chamar o método to_json na variável fake (estou usando o comando print para uma exibição melhor no console do JSON gerado):
>> print fake_json = fake.to_json
"{"some_fake": {"updated_at": "2009-12-13T19:43:28Z", "text": "I am a sample text.", "id": 1, "value": 150.85, "created_at": "2009-12-13T19:43:28Z"}}"

O resultado que obtemos não é exatamente igual ao que estávamos querendo.

Primeiro, o nome do nosso modelo foi serializado como raiz do objeto em JSON. Isso aconteceu porque por padrão em uma aplicação Rails, a opção ActiveRecord::Base.include_root_in_json é configurada para true no arquivo config/initializers/new_rails_defaults.rb. Nós podemos alterar essa opção para false nesse arquivo, o que afeta a serialização em JSON de toda a aplicação, ou podemos alterá-lo no próprio script/console para nossos testes:
>> ActiveRecord::Base.include_root_in_json = false
=> false

Agora nosso objeto serializado fica assim:
>> print fake_json = fake.to_json
"{"updated_at": "2009-12-13T19:43:28Z", "text": "I am a sample text.", "id": 1, "value": 150.85, "created_at": "2009-12-13T19:43:28Z"}"

A segunda diferença é que não queremos que os atributos de timestamps (created_at, updated_at) sejam serializados. Então vamos dizer para o método to_json não serializar esses atributos, utilizando a opção except:
>> print fake_json = fake.to_json(:except => [:created_at, :updated_at])
“{”text”: “I am a sample text.”, “id”: 1, “value”: 150.85}”

Para fazer o inverso, transformar dados em JSON para um objeto, criamos uma nova instância da classe SomeFake e chamamos o método from_json passando a variável fake_json como parâmetro:
>> other_fake = SomeFake.new
=> #<SomeFake id: nil, text: nil, value: nil, created_at: nil, updated_at: nil>

>> other_fake.from_json fake_json
=> #<SomeFake id: nil, text: "I am a sample text.", value: #<BigDecimal:1708a04,'0.15085E3',8(12)>, created_at: nil, updated_at: nil>

Caso você precise serializar objetos em JSON sem os atributos timestamps com frequência, ao invés de sempre passar a opção except para o método to_json, podemos incluir um novo método na classe ActiveRecord::Base que faça a serialização sem esses atributos. Dessa forma, todos os nossos modelos terão essa funcionalidade.

Vamos chamar esse método de to_json_no_timestamps, o qual sua implementação é mostrada abaixo:

class ActiveRecord::Base
  def to_json_no_timestamps(options = {})
    timestamps_options = [:created_at, :updated_at]

    if (options.has_key? :except)
      if (options[:except].class == Array)
        timestamps_options = options[:except] | timestamps_options
      else
        timestamps_options &amp;lt;&amp;lt; options[:except].to_sym unless options[:except].nil?
      end
    end

    options[:except] = timestamps_options

    to_json options
  end
end

E então basta chamar nosso novo método em uma instância de qualquer modelo:
>> fake = SomeFake.first
=> #<SomeFake id: 1, text: "I am a sample text.", value: #<BigDecimal:1712798,'0.15085E3',8(12)>, created_at: "2009-12-13 19:43:28", updated_at: "2009-12-13 19:43:28">

>> print fake_json = fake.to_json_no_timestamps
"{"text": "I am a sample text.", "id": 1, "value": 150.85}"

Arquitetura, Ruby , , , ,

Cheeseburgers, Ruby e magia negra

19 de setembro de 2009

Vamos usar um pouco de magia negra do Ruby para encontrar uma alternativa à implementação clássica do Design Pattern Decorator apresentado pela GoF.

Imagem original de MarketFare Foods, Inc.

Imagem original de MarketFare Foods, Inc.

.
Este post é a continuação de dois anteriores:

Se você ainda não os leu, recomendo que o faça para entender o contexto do exemplo onde estamos aplicando o Design Pattern Decorator. O ponto onde paramos no último post foi o meu descontentamento em decorar um objeto Cheeseburger de uma forma não muito intuitiva.

Leia mais…

Arquitetura, Ruby , , , , , ,

Cheeseburgers, Decorators e Ruby

13 de setembro de 2009

No post Cheeseburgers, Decorators e Mocks eu mostrei um exemplo prático de utilização do Design Pattern Decorator, que começa com um design usando herança, desaclopa usando composição e finalmente aplica Decorator. Tudo isso foi feito em .NET com C#. Agora vamos fazer o mesmo exemplo de Decorator Pattern utilizando Ruby. Para entender melhor o contexto do exemplo utilizado, sugiro que você leia antes o post anterior.

Imagem original de MarketFare Foods, Inc.

Imagem original de MarketFare Foods, Inc.

Além de Ruby, utilizarei o RSpec como ferramenta de testes unitários. No final do post há os links para baixar o código completo.

Leia mais…

Arquitetura, Ruby , , , , , , , ,

Cheeseburgers, Decorators e Mocks

29 de julho de 2009

Em São Paulo, eu sempre comi cheeseburgers feitos com pão, hamburguer e queijo. Mas quando eu fui para Itararé, cidade do interior do estado de São Paulo, descobri que eles também colocavam milho no sanduíche.

Para exemplificar, vamos imaginar que o cheeseburger de Ilhéus-BA, venha com molho de pimenta. Só para constar, eu nunca fui para Ilhéus, apesar de ser a cidade natal de meu pai. Então na verdade não tenho a mínima idéia de como seja o cheeseburger de lá.

Imagem original de MarketFare Foods, Inc.

Imagem original de MarketFare Foods, Inc.

Vamos transportar esses três tipos de cheeseburgers para objetos e fazer alguns testes com eles. Usarei como plataforma .NET, linguagem C#, a ferramenta de testes unitários que vem com o Visual Studio 2008 e o Rhino Mocks como framework de criação de mocks.

Leia mais…

.NET, Arquitetura , , , , , , , , , , , , ,

Livro sobre Domain-Driven Design de Eric Evans em português

15 de julho de 2009

Em agosto será lançada a tradução do livro Domain-Driven Design: Tackling Complexity in the Heart of Software de Eric Evans, publicado pela Addison-Wesley. Este é o principal livro, e de leitura obrigatória, para quem quer conhecer e aplicar Domain-Driven Design (DDD).

A versão em português, Domain-Driven Design: Atacando as Complexidades no Coração do Software, será lançado pela editora Alta Books com o preço inicial de R$ 85,41.

No site da editora aparece que o livro estará disponível a partir de 31/07/2009, mas de acordo com Anderson Camara da Alta Books, a previsão de lançamento é para 10/08/2009.

No Submarino o livro já aparece no catálogo como indisponível. Você pode cadastrar seu e-mail nesse endereço para ser avisado quando o livro estiver disponível para venda.

Uma coisa ruim é que o livro não terá o mesmo formato de capa dura do livro original. De qualquer forma, é uma ótima aquisição para quem trabalha com arquitetura de software e às vezes prefere ter um material de estudo em português.

Arquitetura, Livros , , ,