Fork me on GitHub

Viagens, opiniões e afins

by Andre Fonseca


Bilbiotecas, frameworks, etc para MVC no Javascript

Escrevi um tempo atrás um artigo onde falava sobre MVC no javascript. Só para recapitular, MVC é um pattern que visa a separação da lógica de apresentação, controle e modelo de um sistema. Como uso cada vez maior de javascript em nossas páginas (front ends) fica evidente que precisamos buscar melhorar a estrutura de nossos códigos para que fica fácil evoluir, entender e manutenciar.

No artigo passado apresentei o conceito e mostrei, bem superficialmente, o que é e como fazer isso. A idéia é aprofundar mais no assunto e mostrar bibliotecas que vão facilitar nossa missão.

Primeira coisa que gostaria de abordar é Orientação a Objeto. A maioria dos desenvolvedores que conheço – de javascript (alguns só de jquery) – parecem desconhecer que a linguagem tem esse recurso e quão ele é poderoso. Tudo bem que o mecanismo não é dos mais simples de entender e implementar (prototype) mas existe e funciona.

Eu, pessoalmente, gosto muito de colocar a minhas lógicas em classes. Isso me ajuda muito a definir as relações e as interações entre as camadas, atores, modelos, etc.

A primeira dica que fica, para a questão de classes em Javascript, e que existem algumas bibliotecas que facilitam (bastante) a tarefa de criar classes e definir seus métodos. Um catálogo delas é o MicroJS.

Existem outras opções mais extensas ( Prototype, Mootools, etc) mas acredito que elas tenham mais do que precisa.

Um pequena brecha para falar uma coisa: hoje penso que tem gente baixando um monte de JS e só usando 10% que é a parte que realmente precisa. Isso vou deixar para falar em outro post.

Agora imagina que você irá implementar uma interface toda estática, cuja o conteúdo será populado e gerenciado através do Javascript. Se acha que isso é só um exemplo, veja o tempo Real de futebol ou cobertura do Rock in Rio (cobertura de eventos da globo.com). Imagina como seria a complexidade do código para implementar tal cenário.

Você tem diversos elementos e interações na página, ciclos de vida, paginações, animações, requisições, eventos, etc. Se você fizer isso, só com funções, sem separar nada, o código se tornará um inferno – mal escrito, e impossível de dar manutenção.

Se resolver isso com classes, mesmo assim terá um monte de código que com o tempo se tornará inviável. Embora seja um caminho.

Por fim, você pode optar por algum framework que permita separar tudo e promova suas interações de forma simples. Um bom exemplo disso é a BackBone.js . Ele permite que você separe, já disse isso, muito bem as responsabilidades e torna fácil as interações.

Num próximo artigo vamos entrar em mais detalhe sobre o backbone.

Referências:

[1] http://pt.wikipedia.org/wiki/MVC – Model-view-controller (MVC)
[2] http://microjs.com/ – Catálogo de MicroJS.
[3] http://mootools.net/ – Página do Mootools
[4] http://www.prototypejs.org/ – Biblioteca Prototype
[5] http://www.slideshare.net/leobalter/javascript-sexy-com-jquery-underscore-e-backbone – Apresentação do BackBone.js
[6] http://documentcloud.github.com/backbone/ – Pagina do BackBone.js

Published by Andre, on outubro 27th, 2011 at 9:10 am. Filled under: tutoriais Tags: , , , No Comments

Introdução a Linguagem Scala – Parte 1

e acordo com o livro Programming in Scala, escrito pelos criadores da linguagem – , o nome Scala vem da combinação das palavras em inglês Scalable Lang (Linguagem escalável), e foi chamada assim pois foi desenhada para crescer com a demanda de seus usuários (nós programadores). É possível usá-la em um grande espectro de atividades: desde de pequenos scripts a aplicações web ou GUI com alto tráfico e acesso (ou carga de processamento). Ela é simples para começar, principalmente para o pessoal que já usa o Java pois roda dentro da JVM e tem integração bem próxima das APis e bibliotecas Java.
Uma primeira coisa que podemos dizer que a linguagem é uma mistura com sabor funcional e orientado a objeto e isso será notado a medida que for avançando em seu aprendizado. O interessante é que ao fundir essas duas característica, tendo como objetivo pegar o melhor de cada, Scala acabou se tornando uma boa escolha frente as todas as da moda hoje e atingindo a meta geral de ser altamente capaz de escalar: a parte funcional torna fácil a missão de construir coisas rapidamente com código de alta legibilidade; a parte OO permite a manipulação fácil de dados e sua adaptabilidade.
A Catedral e a Bazar
Eric Raymond fez a metáfora da Catedral e Bazar para construção de sistemas. A catedral, segundo ele, é um tipo de construção próxima “a perfeição” que leva muito tempo para ser construída. Uma vez que tenha sido construída, pouco coisa resta para fazer ou modificar (pelo menos eu não vejo grandes obras, além das de restauro, dentro de igrejas antigas e catedrais). Já os bazares, pelo contrário, são feitos muito rápido, simples e adaptáveis mudando todos os dias para atender e superar as expectativas dos clientes. Scala é algo mais próximo do Bazar.
Primeiro programa
object HelloWorld{
def main (args : Array[String]) : Unit ={
println (“Hello World, ou em português, Olá Mundo”)
}
}
Nesse programa já podemos ver algumas das características interessantes da linguagem. Embora ela se proponha ser da família das dinâmicas, ela é estaticamente tipada: os tipos das variáveis devem ser definidos em tempo de compilação (não existe o famoso duck type como o Python). Com isso mesmo que não defina o tipo, o compilador vai definir um por inferência.  Outra característica interessante é forma que declaramos a classe e seus métodos.
Em Scala, tudo é dado, inclusive as funções ( para quem já trabalhou com Haskell ou Lisp isso é mais simples de entender). Assim as funções tem os seus “valores” (o código) passado como numa variável : algo = valor . Isso é algo que o pessoal está muito acostumado com nossas linguagens imperativas vai demorar um pouco para se convencer disso.
Outra coisa é que o tipo é definido depois e não antes como fazíamos. Confesso que é algo que a gente se acostuma com o tempo para ler um código e entendê-lo logo de cara.
No exemplo acima não deu para ver mais uma característica interessante que é a questão de tornar concisa a escrita de sistemas. Veja os dois trechos de código abaixo
Classe em Java
class Pessoa {
private String nome;
private String sobrenome;
public Pessoa (String nome,String sobrenome){
this.nome = nome;
this.sobrenome = sobrenome;
}
}
Mesma classe escrita em Scala
class Pessoa (nome : String, sobrenome: String)
Bem por hoje paramos por aqui, no próximo artigo da séria continuamos daqui  para falarmos mais
De acordo com o livro Programming in Scala, escrito pelos criadores da linguagem – , o nome Scala vem da combinação das palavras em inglês Scalable Lang (Linguagem escalável), e foi chamada assim pois foi desenhada para crescer com a demanda de seus usuários (nós programadores). É possível usá-la em um grande espectro de atividades: desde de pequenos scripts a aplicações web ou GUI com alto tráfico e acesso (ou carga de processamento). Ela é simples para começar, principalmente para o pessoal que já usa o Java pois roda dentro da JVM e tem integração bem próxima das APis e bibliotecas Java.
Uma primeira coisa que podemos dizer que a linguagem é uma mistura com sabor funcional e orientado a objeto e isso será notado a medida que for avançando em seu aprendizado. O interessante é que ao fundir essas duas característica, tendo como objetivo pegar o melhor de cada, Scala acabou se tornando uma boa escolha frente as todas as da moda hoje e atingindo a meta geral de ser altamente capaz de escalar: a parte funcional torna fácil a missão de construir coisas rapidamente com código de alta legibilidade; a parte OO permite a manipulação fácil de dados e sua adaptabilidade.
A Catedral e a Bazar
Eric Raymond fez a metáfora da Catedral e Bazar para construção de sistemas. A catedral, segundo ele, é um tipo de construção próxima “a perfeição” que leva muito tempo para ser construída. Uma vez que tenha sido construída, pouco coisa resta para fazer ou modificar (pelo menos eu não vejo grandes obras, além das de restauro, dentro de igrejas antigas e catedrais). Já os bazares, pelo contrário, são feitos muito rápido, simples e adaptáveis mudando todos os dias para atender e superar as expectativas dos clientes. Scala é algo mais próximo do Bazar.
Primeiro programa
object HelloWorld{
def main (args : Array[String]) : Unit ={
println (“Hello World, ou em português, Olá Mundo”)
}
}
Nesse programa já podemos ver algumas das características interessantes da linguagem. Embora ela se proponha ser da família das dinâmicas, ela é estaticamente tipada: os tipos das variáveis devem ser definidos em tempo de compilação (não existe o famoso duck type como o Python). Com isso mesmo que não defina o tipo, o compilador vai definir um por inferência.  Outra característica interessante é forma que declaramos a classe e seus métodos.
Em Scala, tudo é dado, inclusive as funções ( para quem já trabalhou com Haskell ou Lisp isso é mais simples de entender). Assim as funções tem os seus “valores” (o código) passado como numa variável : algo = valor . Isso é algo que o pessoal está muito acostumado com nossas linguagens imperativas vai demorar um pouco para se convencer disso.
Outra coisa é que o tipo é definido depois e não antes como fazíamos. Confesso que é algo que a gente se acostuma com o tempo para ler um código e entendê-lo logo de cara.
No exemplo acima não deu para ver mais uma característica interessante que é a questão de tornar concisa a escrita de sistemas. Veja os dois trechos de código abaixo
class Pessoa {
  private String nome;
  private String sobrenome;
 
  public Pessoa (String nome,String sobrenome){
    this.nome = nome;
    this.sobrenome = sobrenome;
  }
}
Mesma classe escrita em Scala
 class Pessoa (nome : String, sobrenome: String)
Bem por hoje paramos por aqui, no próximo artigo da séria continuamos daqui  para falarmos mais
Published by Andre, on novembro 7th, 2009 at 8:33 pm. Filled under: atualidades,Scala,tutoriais2 Comments

Palestra de padrões de projeto no Riojug

Pessoal, a palestra foi sensacional… não pela conteúdo ou pelo autor (eu) mas pela pessoal que foi lá assistir. Em plena quinta-feira, meio de semana, o pessoal adiou a volta para casa, outros trocaram a saída, para irem assistir minha palestra no encontro mensal do riojug. O quorum foi de aproximadamente 40 pessoas (valor bastante expressivo).

Foi uma excelente conversa, com bastante interessante, discussões , etc.  Obrigado a todos que foram. Aproveito faço um pedido : Comentem com sugestões de melhorias e assim me ajudem na próxima vez ser melhor.

Published by Andre, on outubro 22nd, 2009 at 10:48 pm. Filled under: Informática,tutoriais Tags: , , 3 Comments

Instalando e Configurando o MAC PORTS

Bom, para o pessoal que tem  Mac e já trabalhou com uma distribuição linux, principalmente com o Ubuntu, deve estar acostumado com a forma simples que é instalar coisas nesses sistemas. Praticamente é abrir um terminal e digitar o comando :

 sudo apt-get install nome_do_pacote_a_instalar_aqui

Embora considere o Mac OS um sistema operacional excelente, acredito que o fato de não existe algo nativo como o apt-get é uma das fraquezas dele. Mas, não é por isso que vamos desanimar. Existe um produto similar chamado MAC PORTs, que faz exatamente igual ao apt-get e sua instalação é simples.
Vamos ao passo a passo:

  1. Acesse o site do mac ports (www.macports.org) e baixe o pacote de instalação (.dmg)
  2. Ao fazer isso o sistema irá começar a instalar. Vá lendo as instruções e fazendo Next, Next até terminar
  3. Pronto ele está instalado
  4. Para testar abra um terminal e digite o comando : sudo port -d selfupdate

Possivelmente não irá funcionar, pois, você precisa tornar o caminho onde está a instalação visível para o terminal que você usa. Para fazer isso é bem simples:

  1. Acesse o terminal
  2. Edite os arquivos .bashrc e .bash_profile e acrescente a linha :source ~/.profile
  3. Edite o arquivo .profile e coloque as seguintes linhas nele : export PATH=/opt/local/bin:/opt/local/sbin:$PATH

Como os passos acima repita o teste e provavelmente irá funcionar.

Agradecimentos ao Henrique Bastos que ajudou muito com a configuração

    Published by Andre, on setembro 4th, 2009 at 12:18 am. Filled under: Informática,tutoriais Tags: , , , , 5 Comments