terça-feira, 11 de dezembro de 2012

Módulos e Mixins com Ruby

No post sobre blocos em Ruby, rasguei elogios para a linguagem quanto à versatilidade e simplicidade. Neste post vou pular essa parte (que acredito estar implícita) e falar sobre módulos e mixins em Ruby.

Assim como os blocos, os módulos também estão presentes em toda parte no código de uma aplicação desenvolvida com Ruby on Rails. O framework Rails faz amplo uso dessa facilidade da linguagem Ruby para disponibilizar funcionalidades por todas as camadas da aplicação, o que também pode ser explorado pelo desenvolvedor em funcionalidades próprias.

Para quem vem da linguagem Java, módulos podem se parecer com as interfaces, no entanto, diferem em aspectos fundamentais.

terça-feira, 4 de dezembro de 2012

Objetos em JavaScript

Me lembro que fiquei muito intrigado quando ouvi de um colega da área que sua linguagem de programação preferida atualmente era JavaScript. Esse camarada foi instrutor em uma conceituadíssima escola de desenvolvimento e, na ocasião em que nos falamos, era consultor sênior em uma grande empresa igualmente muito bem conceituada, logo, sabia do que estava falando, por isso fiquei mais intrigado ainda.

Na sequência dos acontecimentos, o destino me levou a parar em um projeto onde fiz uso intensivo de JavaScript. Bela coincidência!

Simplificando TDD com FactoryGirl

Com o conceito de Extreme Programming (XP), publicado em 1999 por Kent Beck, surgiu também o conceito de Test Driven Development (TDD), que propôs a elaboração de códigos de testes antes da implementação efetiva da aplicação.
Os testes sendo implementados primeiro são então seguidos pela implementação da funcionalidade que os faça passar. Com isso, desde seu início até a implementação de suas últimas funcionalidades, o software estará o máximo possível coberto por testes que garantam sua estabilidade e confiabilidade. Uma grande vantagem é a possibilidade de sempre poder realizar refatorações no código, bastando garantir que os testes continuem passando, mantendo assim um código limpo e de alta qualidade e manutenibilidade.

Mas o objetivo aqui é falar da FactoryGirl, uma RubyGem criada pela thoughtbot que simplifica o desenvolvimento de TDD em Rails, sendo uma alternativa ao uso de fixtures.

terça-feira, 13 de novembro de 2012

Adicionando e removendo ações de um roteamento REST em Rails

Dando continuidade ao estudo de roteamento com Rails introduzido no post anterior, vou mostrar como é possível adicionar ações a um roteamento REST, indo além das sete definidas por padrão, e também como fazer para remover alguma das operações padrão quando esta realmente não for necessária em sua aplicação.

segunda-feira, 12 de novembro de 2012

Roteamento de Resources em Rails

Rails Routing, traduzindo e explicando, é a forma como o framework Rails infere a rota até a ação de um controlador através da URL no browser e do método HTTP (GET, POST, PUT ou DELETE).
Conforme já mencionei no post sobre múltiplos bancos de dados, o Rails segue o padrão de convention over configuration. As convenções assumidas para o roteamento vão servir para a grande maioria dos casos, mas customizar o roteamento em sua aplicação é fácil e extremamente flexível.

sexta-feira, 9 de novembro de 2012

Filtrando associações em Rails

Alguns posts aqui no blog já exemplificaram como funcionam as associações na camada de modelo do Rails com ActiveRecord e como efetuar alguma pesquisa (query) a partir de algum modelo. Neste post vou demonstrar como combinar as duas coisas, efetuando filtros a partir de uma associação, usando tanto recurso de blocos quanto de mixins com módulos, também já abordados em posts anteriores.



Rails scope e default_scope (EDITADO)

Neste post pretendo demonstrar como é possível fazer uso de scope e default_scope na camada de modelo de aplicações em Rails de forma a centralizar regras de pesquisa sem violar outras camadas da aplicação e mantendo a simplicidade do código.

quinta-feira, 8 de novembro de 2012

Múltiplos Bancos de Dados com Rails

O Rails segue o conceito de convention over configuration que assume diversos padrões em vários aspectos das aplicações até que se defina o contrário. Por exemplo, o Rails assume que a aplicação será RESTful, ou seja, utilizará os métodos do protocolo HTTP para identificar os tipos de ações a serem executadas para cada requisição do cliente. Também assume que a aplicação será dividida em camadas seguindo o padrão MVC. E uma das convenções assume que você terá um banco de dados, com três ambientes: desenvolvimento, testes e produção.

quarta-feira, 7 de novembro de 2012

Auto-relacionamento Many-to-Many com Rails

Nas aplicações que a maioria de nós desenvolve, é relativamente comum ter auto-relacionamentos, em que uma entidade referencia ela mesma através de um ou mais atributos. Também é comum ter relacionamentos muitos-para-muitos (many-to-many), em que duas entidades podem ser referenciadas por um ou mais registros da outra. Porém, há uma terceira possibilidade, que são os auto-relacionamentos many-to-many, cujo primeiro exemplo que vem à mente é o das redes sociais, tão comuns hoje em dia, onde o perfil de uma pessoa pode possuir vários amigos, que na verdade são outros perfis também de pessoas que também possuem vários amigos e assim por diante, tudo em uma única entidade Pessoa. Na continuidade vou ilustrar as duas primeiras situações, mais comuns, e em seguida mostrar como a terceira situação pode ser implementada com o framework ActiveRecord, incluído por padrão no Rails.

quarta-feira, 31 de outubro de 2012

Carreira no Serviço Público

 Pouca gente sabe a história por trás da urna eletrônica, do novo passaporte, do certificado digital, do sistema dos consulados brasileiros, dentre outras inovações do Governo Brasileiro nas últimas décadas. Como um dos principais coadjuvantes por trás deste avanço tecnológico está o Serviço Federal de Processamento de dados (SERPRO), umas das maiores empresas públicas de TI do mundo.


sexta-feira, 26 de outubro de 2012

Blocos em Ruby

Neste primeiro post sobre a linguagem Ruby, acho que um dos tópicos mais interessantes de abordar é a forma como Ruby lida com blocos.

O que são blocos, como criar, como passar por parâmetro, como reaproveitar, enfim, como eles se fazem constantemente presentes no dia-a-dia de um desenvolvedor Ruby e quais possibilidades oferecem. Sobre tudo isso pretendo dar uma visão geral aqui.



terça-feira, 23 de outubro de 2012

Desmistificando o jQuery (Parte 2)


Quem leu a primeira parte com certeza não pensa mais que jQuery é um bicho de sete cabeças, mas talvez pense que ainda tem umas três.  :o)


E é isso que espero resolver neste segundo post sobre jQuery, atacando agora as funções que estão disponíveis a partir da obtenção de elementos.

Conforme foi apresentado no primeiro post, há diversas formas de se obter os elementos de uma página HTML. Após esta primeira etapa, o jQuery oferece uma vasta diversidade de funções para praticamente qualquer necessidade, por isso vou focar mais nas que para mim foram mais úteis.

sexta-feira, 19 de outubro de 2012

Desmistificando o jQuery (Parte 1)

Em um post anterior, falei sobre o poder e versatilidade do jQuery, sem todavia apresentá-lo na prática, o que ficou prometido e desejo cumprir neste post.

Por muito tempo, há não muito tempo, ouvi falar sobre jQuery e pensei tratar-se de um "bicho de sete cabeças".

Conforme mencionei nesse post anterior, minha habilidade com front-end era bem rasa, fluindo mais com frameworks component-based (como Primefaces) que já me traziam tudo praticamente pronto (e bonito!).

Inconformado com essa lacuna, busquei algumas boas literaturas e acabei sendo alocado em um projeto PHP. Nas boas-vindas já indicaram a toda a equipe que o conhecimento de jQuery seria muito mais importante que o de PHP. Então, não perdi tempo, mergulhei na literatura e, para minha surpresa, descobri que jQuery é muito simples. Tem uma imensidão de recursos, talvez essa seja a parte mais difícil (menos fácil) de aprender, mas a forma de empregá-los em sua aplicação é simples demais! Descobri que o bicho das sete cabeças não existia (ou pelo menos não era o jQuery!).


Minha expectativa é que você descubra a mesma coisa ao concluir a leitura deste post!


quarta-feira, 17 de outubro de 2012

Component-based ou Action-based


Quero relatar algumas experiências que tive com desenvolvimento de front-end (camada de apresentação de sistemas) que acredito que poderão agregar conhecimento para alguns, e para alguns outros darão a oportunidade de complementar o conhecimento coletivo com comentários aqui no blog.

Vou explicar um pouco do contexto geral das aplicações, mas dar ênfase (não exclusividade) para o front-end.

Por muitos anos, minhas atividades envolveram predominantemente desenvolvimento de back-end, ou seja, camada de persistência, negócio, etc, e meu ponto fraco era o front-end. Não tinha habilidade (nem paciência) para fazer uma camada de visualização bem elaborada e agradável para o usuário.

quinta-feira, 11 de outubro de 2012

Ruby on Rails e JRuby



Parece que o desenvolvimento com Ruby on Rails ainda está em passos lentos no Brasil (e em passos largos lá fora), se comparado com Java e outras linguagens, se concentrando especialmente em algumas regiões como São Paulo. Julguei tal proporção pelo site http://ondetrabalhar.com/ e conversas com colegas da área.

Desde que comecei a investigar o assunto, fui cativado pela maturidade, organização e versatilidade tanto da linguagem Ruby quanto do framework Rails, especialmente a partir do Rails 3. Como sou um grande defensor da inovação tecnológica, quero ajudar essa tecnologia a se difundir mais por essas terras, ainda que seja uma pequena fagulha em uma grande floresta. E sei que já há muitas outras fagulhas e até fogueiras por aí, inclusive excelentes literaturas em português sobre o assunto.


quarta-feira, 10 de outubro de 2012

Primeira postagem



Por muito tempo a ideia de criar um blog me veio à mente, porém acredito que não era uma ideia muito amadurecida ainda. Googleando por aí, buscando a resolução para algum undefined, NullPointerException ou nil, encontrava muitos blogs excelentes, super explicativos, no entanto, em sua maioria, em inglês.

Minha ideia inicial também foi criar um blog em inglês e aproveitar para praticar o idioma, afinal, aprendi que a escrita é uma das melhores formas de desenvolver rapidamente e manter a fluência.

Como falei no início, acredito que a ideia amadureceu, e justamente neste ponto.

Com certeza, não sou o único brasileiro que brilha os olhos ao pensar na possibilidade de um dia morar e trabalhar no exterior, em uma grande empresa ou em uma startup própria despontando no Vale do Silício! O leitor deve estar brilhando os olhos nesse exato momento também. :o)

O fato é que sou brasileiro! Moro no Brasil! Não só isso, mas também trabalho para o governo brasileiro no Serviço Federal de Processamento de Dados (SERPRO), uma das maiores empresas públicas de TI do mundo! Portanto, é bastante adequado tirar a cabeça de girafa lá do outro lado do mundo e trazê-la para cá! Focar aqui, pois o momento é este!

Nosso país tem se destacado no cenário mundial como nunca antes, com uma economia em acelerada ascensão, excelentes perspectivas com pré-sal, sustentabilidade, dentre outras áreas como a na nossa querida área de TI. Há quem diga que num futuro próximo os países do BRIC possam superar economicamente os países desenvolvidos. Vamos esperar para ver, mas o fato é que, a cada ano que passa, tal perspectiva parece menos absurda.

Apesar de ter uma carência ainda muito grande, nossa área de TI está crescendo rapidamente, tanto no governo quanto na iniciativa privada. As novas tecnologias demoram muito menos tempo para chegar aqui do que demoravam há uma década atrás. Já temos até fabricação de iPad! :o)

Porém, ainda que muitos, inclusive eu, defendam que o inglês é um idioma obrigatório para esta área, o fato é que temos muitos brasileiros querendo fazer parte deste desenvolvimento, que ficam googleando em busca de uma postagem na sua língua materna, mas encontram a maioria dos resultados em inglês.

Concluindo :o)  , o objetivo deste blog é compartilhar minhas experiências com desenvolvimento de software, metodologias ágeis, modelos de excelência, empresas bacanas, concursos públicos, bibliografias e tudo mais que estiver ao meu limitado alcance.

Bem-vindos, amigos compatriotas!!

E aos gringos, nada impede de aparecer por aqui alguma postagem em inglês de vez em quando. Para estes:

To those who don't speak Portuguese, but also want to share experiences, my greetings and hope that you can enjoy this blog with us! Always welcome!!