quinta-feira, 17 de maio de 2012

Rails, Postgres, Aptana no Windows

Como muitas pessoas me pediram, duas no total, segue abaixo um tutorial de como fazer o framework Ruby on Rails funcionar no sistema operacional da Microsoft.

Motivação




Para algumas pessoas "ter que instalar o Linux" é um empecilho para aprender uma nova linguagem de programação, sendo que muitos adotam o Java, ASP ou PHP com WAMP em função desta restrição.
Alguns desenvolvedores que usam Linux tem a necessidade de testar suas aplicações no Windows ou IE, sendo que a utilização de máquinas virtuais é inviável mediante algumas configurações de hardware.
Antes dos passos subsequentes é importante entender que o Rails foi desenvolvido nativamente para o Linux, por isso algumas gemas podem não funcionar corretamente.

Instalação do Postgre no Windows

Baixe o Postgre no endereço http://www.postgresql.org/download/windows/, para este tutorial estou utilizando a versão postgresql-8.4.11-2-windows.

1) Durante o Wizard, mantenha o diretório padrão de instalação C:\Program Files\PostgreSQL\8.4
2) Mantenha também o diretório padrão para dados C:\Program Files\PostgreSQL\8.4\data
3) Na tela de password, defina o password como "senha@123"
4) Mantenha a porta padrão (5432) do postgre
5) Em locale manteremos como "Default locale" e deixe marcada a opção "Install pl/pgsql in template1 database?"
6) Após a instalação desmaque a opção para utilização do Stack Builder

Baixe também o PGAdmin para facilitar a manutenção do banco, disponível em http://www.pgadmin.org/download/.

Instalação do ambiente

Para instalar os demais componentes baixe o ruby instaler em http://railsinstaller.org/, este aplicativo irá instalar automaticamente:

Ruby: a linguagem de programação
Rails: o framework de desenvolvimento web
Bundler: o instalador das gemas
Git: software para controle de versão
Sqlite: banco de dados base
TinyTDS: ferramenta para suporte de conexão a base de dados
SQL Server suport: suporte para banco de dados da microsoft
DevKit: suporte windows para instalações nativas de c/c++ em Ruby

Durante a instalação, mantenha o diretório padrão "C:\RailsInstaller" e deixe marcada a opção "Add executables for Ruby, Git and DevKit to PATH".
Deixe marcada a opção "Configure git and ssh when the instalation was completed".

Instalação do Aptana

Baixe o Aptana no endereço http://www.aptana.com/.
Durante a instalação selecione o caminho de instalação para "C:\Program Files\Aptana Studio 3\AptanaStudio3.exe".

Criando uma aplicação de teste com base SQLite

1) Inicie o Aptana mantendo o workspace padrão.
2) Selecione  a opção File>New>Rails Project
3) No nome do projeto informe "projeto_teste"
4) Clique em Finish
5) Após criado o projeto, abra o arquivo "Gemfile" e comente as seguintes linhas que correspondem as gemas dos assets e do jquery (no momento não vamos nos ater a estes componentes)
  
  # group :assets do
  #  gem 'sass-rails',   '~> 3.2.3'
  #  gem 'coffee-rails', '~> 3.2.1'
    # See https://github.com/sstephenson/execjs#readme for more supported runtimes
    # gem 'therubyracer'
  #  gem 'uglifier', '>= 1.0.3'
  #end
  #gem 'jquery-rails'


6) No App Explorer, clique em Commands > Run Server



7) Abra o endereço http://localhost:3000/ no seu browser, você deverá ver a mensagem "Welcome aboard"


Criando uma aplicação de teste com a base Postgres


Criando o projeto
1) No Aptana clique em Windows > Show View > Terminal Editor
2) Estando no terminal entre na pasta do seu workspace através do comando "cd <caminho para workspace>"
3) Execute o comando "rails new teste_postgres -d=postgresql"
4) No Aptana clique em File > Import > Existing Folder as New Project
5) Na próxima tela marque as opções Rails e Ruby, selecione a pasta do projeto criada
6) Repita a operação 5 do projeto anterior (...abra o arquivo "Gemfile" e comente...)

Configurando e criando a base de dados
1) Abra o arquivo config/database.yml
2) Altere as configurações dos ambientes development e test para

  username: postgres
  password: senha@123
  host: localhost

3) Clique com o botão direito no App Explorer e selecione Rake > db > create



4) Após o comando, sua base de dados foi criada e deve estar disponível no PGAdmin

Criando a primeira aplicação
1) Estando no App Explorer, vá no menu superior em Commands > Rails > Call Generate Script
2) Selecione a opção Sccafold
3) Insira "Post" no campo "Name of the model for sccafold"
4) No próximo campo informe o par de atributos para a entidade "titulo:string texto:text"
5) Uma mensagem confirmando a operação deverá aparecer.
6) Em seguida os arquivos gerados devem aparecer na IDE do Aptana.
7) Clique com o botão direito no App Explorer e selecione Rake > db > migrate
8) No console deverá aparecer a seguinte mensagem

-- create_table(:posts)
NOTA:  CREATE TABLE criará sequência implícita "posts_id_seq" para coluna serial "posts.id"
NOTA:  CREATE TABLE / PRIMARY KEY criará índice implícito "posts_pkey" na tabela "posts"
   -> 0.2240s
==  CreatePosts: migrated (0.2240s) ===========================================

9) Em app/assets/javascripts remova as linhas abaixo que correspondem as bibliotecas do jquery (no momento não utilizaremos):

//= require jquery
//= require jquery_ujs
//= require_tree .

10) No App Explorer, clique em Commands > Run Server
11) Abra o endereço http://localhost:3000/posts no seu browser, você deverá ver uma página com "Listing posts"


Importando um projeto de um repositório do GIT

Para importação de um repositório do Git, inicialmente você precisa gerar um par de chaves RSA, caso você não saiba do que se trata ou como funciona, sugiro procurar um curso superior mais próximo.

1) Copie duas chaves RSA (id_rsa) para o repositório <diretório do usuário>\.ssh
2) Clique em File > Import e selecione a opção Git repository as New Project
3) Na próxima tela informe o endereço do repositório git
4) Ao clicar em finish surgirá uma janela solicitando a sua senha da chave RSA
5) Após o processo de download o projeto ficará disponível em Project Explorer

quinta-feira, 10 de maio de 2012

Seminários de programação para web


Questões gerais

O que é?
Qual o objetivo do componente?
Como ele funciona?

HAML e Cofeescript


Crie uma aplicação utilizando HAML e Coffeescript, informe qual o objetivo da aplicação e quais passos utilizados para sua criação.
Estas tecnologias facilitam o desenvolvimento da aplicação?
Alguma funcionalidade nova é acrescentada ao HTML ou Javascript?
Você aconselha a adoção desta tecnologia para empresas que possuam um sistema legado em HTML/Javascript?

http://haml-lang.com/
http://coffeescript.org/


Alunos: Guilherme Henrique, Djone France, Hans Cristian e Diogo Gasperi

MongoDB


Crie uma aplicação utilizando MongoDB e mostre as principais diferenças na criação de uma aplicação com Postgres e com MongoDB.
O MongoDB é aconselhado para aplicações que possuam grande volume de dados relacionais?
O MongoDB possui alguma limitação de ambiente?
O MongoDB é aconselhado para aplicações que utilizem muitas inserções (log de dados)?
No momento que o mongo informa que uma operação foi executada com sucesso, ela é realmente executada?
Você aconselha a adoção do MongoDB?

http://www.mongodb.org/


Alunos: Andressa Souza, Elaine G. Rosa, Juliana Cainelli, Rodrigo Luan Backes, Juliana B.

Kaminari x Will_Paginate


Crie uma aplicação que possua um número considerável de registros e em seguida mostre-os na tela inicial.
Crie páginas utilizando os paginadores kaminari e will_paginate e em seguida mostre os dados paginados.
Os componentes acima são compatíveis com MongoDB?
Os componentes acima são compatíveis com HAML?
É possível acessar as paginações através de post? Isso é aconselhável?
Qual dos componentes acima apresenta mais recursos?

https://github.com/amatsuda/kaminari
https://github.com/mislav/will_paginate

CanCan


Implemente o controle de login com o devise conforme tutorial em http://blogf13.blogspot.com.br/2012/03/login-com-devise-no-rails.html.
Instale o CanCan conforme tutorial em https://github.com/ryanb/cancan
Crie três as roles "admin", "moderador" e "usuario", sendo que o cancan deve suportar várias roles por usuário.
Crie uma tela para edição dos dados de todos os usuários, esta tela deve ser acessada somente pelo admin.
Crie uma tela para cadastro de postagens, o "moderador" pode eventualmente excluir as mensagens, o "usuario" pode apenas cadastrar mensagens.
Como o cancan armazena a role do usuário no caso de "várias roles por usuário"?
Como o cancan armazena a role do usuário no caso de "uma role por usuário"?
Como é feito o tratamento de exceção pelo cancan?
Como ocorre a sobreposição ou herança de regras nas abilitys? Exemplifique.

https://github.com/ryanb/cancan
https://github.com/ryanb/cancan/wiki

Alunos: Rodrigo Machado, Juliano Campos Perez, Nilson Vieira, Diogo Hardt e Carlos Eduardo P. Brandão. e Paulo Reinert.

Paperclip


Crie uma aplicação que permita fazer o upload de arquivos a partir do site da web utilizando o paperclip.
Crie uma restrição para permitir apenas upload de arquivos .jpg ou png.
Crie uma página com thumb das imagens.
Restrinja o upload de uma imagem caso a mesma já tenha sido enviada.
Restrinja o tamanho do arquivo para até 10 Mb.
É possível gerar thumb de pdf?
Para que serve o recurso URI obfuscation?
Faça um pequeno comparativo da gema quando ao CarrierWave

https://github.com/thoughtbot/paperclip
https://github.com/jnicklas/carrierwave

segunda-feira, 23 de abril de 2012

quinta-feira, 29 de março de 2012

Login com Devise no Rails

Uma das facilidades da utilização do framework rails é a quantidade de componentes disponíveis no github, assim tarefas como extração de PDF's ou mesmo o controle de usuários, podem ser automatizados através destas gemas.
Uma das gemas mais conhecidas é o Devise, esta gema foi desenvolvida como o intuito de prover um mecanismo básico para a construção de telas de cadastro de usuários, login entre outras.

Para instalar o Devise, basta adicionar ao Gemfile da sua aplicação, a instrução:

gem 'devise'

Após isso deve ser executado o comando

"sudo bundle install"

Após instalada a gem, deve ser executado o comando para gerar os arquivos auxiliares.

rails generate devise:install

Feito isso podemos então gerar o model e as migrations para o cadastro de usuários

rails generate devise User

Vá até o arquivo da migration e descomente as linhas comentadas, conforme sua necessidade:

  • Database Authenticatable: armazena a senha criptografada do usuários na base de dados
  • Token Authenticatable: permite a um usuário se logar na aplicação com base do token, também conhecido como single access token
  • Omniauthable: adiciona suporte a gema omniauth para login através de facebook, gmail, openid, etc...
  • Confirmable: envia e-mail de confirmação da conta, o usuário precisa confirmar a conta para se logar
  • Recoverable: permite ao usuário 'resetar' a senha
  • Registerable: permite ao usuário registrar, editar e deletar sua conta.
  • Rememberable: permite ao usuário lembrar seu login através de um cookie
  • Trackable: registra informações de login como timestamp e endereço IP
  • Timeoutable: faz com que a seção expire num determinado período de tempo de inatividade
  • Validatable: permite criar uma validação customizada de e-mail e password
  • Lockable: faz com que uma conta seja bloqueada mediante um número de tentativas mal sucedidas de login, uma conta pode ser desbloqueada via e-mail ou após um determinado período de tempo
  • Encryptable: adiciona suporte a outros mecanismos de autenticação, utiliza bcrypt por padrão
Estes mesmos comandos devem ser descomentados no model.
Execute a migration para criar a tabela de usuários

rake db:migrate

A partir deste momento o Devise já está acessível através do browser, para isso basta reiniciar o servidor e digitar o seguinte endereço:

http://localhost:3000/users/sign_in

Para fazer a tradução das views para pt-Br, basta fazer o download do arquivo disponível em https://gist.github.com/924555 e baixar em config/locales

Este arquivo irá alterar as mensagens de erro e alerta, porém os links não ficarão traduzidos, para isso você deve gerar as views no devise a partir do comando:

rails g devise:views

Abra o arquivo app/views/devise/ e edite os arquivos das views conforme sua necessidade. Outro passo importante é incluir nas views/layouts/application.rb as flash messages flash[:notice] e flash[:alert].

Após fazer o primeiro cadastro e tentar enviar informações para desbloqueio, a seguinte mensagem irá aparecer:

Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true

Para evitar este problema você deve abrir o arquivo development.rb e adicionar a linha:

config.action_mailer.default_url_options = { :host => 'localhost:3000' }










quinta-feira, 9 de fevereiro de 2012

10 coisas que um professor não deve fazer na sala de aula

Enfim começam as aulas, e este vídeo me lembra alguma das coisas que um professor não deve fazer na sala de aula...


terça-feira, 17 de janeiro de 2012

Película da 3M arruína vida dos xeretas de plantão

Quem usa computador, em casa ou no trabalho, sabe como é chato ter um segundo par de olhos (exceto se o xereta for caolho) para o seu monitor, seja este quem for, o amigo xereta, o chefe ou até mesmo aquela pessoa que não tem mais o que fazer.
O grau de irritação pode se elevar exponencialmente se tratar-se de um orelha seca amigo que, insatisfeito em apenas xeretar, ainda fala para todos o que você está fazendo (por exemplo, "Você está no blogger").
Acima da quebra privacidade, a curiosidade sobre a vida alheia é falta de educação e na minha opinião deveria ser reportada até em algum meio específico como a netiqueta.
Acredito que este tipo de problema deve ser recorrente na 3M, afinal a mesma lançou na CES, uma película que torna o monitor espelhado a pessoas que tentam ver o monitor de lado.


O preço sugerido para a película é de 30 dólares ( U$$ 10 de fabricação + U$$ 5 de lucro  + U$$ 15 pela marca 3M) e estão disponíveis as cores preta e dourada.
Outro benefício da película, é que em caso de remoção, a mesma não deixa aquela meleca por causa da cola, sendo assim facilmente colocada ou removida.

UPDATE: Sim, também funciona no linux