Tô aqui de bobeira, sem sono, vi um post meu antigo "Meu ambiente de trabalho em 7 itens", resolvi então dizer como esse ambiente está hoje em dia.
1 - Ubuntu
Sempre utilizando a versão atual do sistema, hoje fiz o upgrade para Ubuntu 12.04 LTS, estou na época em que alguns usuários reclamaram muito do Unity, só que eu acho muito boa, como tento usar pouco o mouse, ele está me servindo muito bem. Estou querendo fazer uns testes com Arch Linux, mas isso só em casa.
2 - VIM
Aposentei o uso do GEdit à alguns mêses, estou pegando pesado no aprendizado do VIM, utilizo a receita do Akita, muito boa, atende o que eu preciso ... por enquanto. Estou pensando em dar uma olhada no Emacs.
3 - Chrome
Chrome é foda, não consigo usar muito outros navegadores depois dele.
4 - Consulta
Como trabalho com Ruby, utilizo http://edgeapi.rubyonrails.org/ e http://www.ruby-doc.org/core-1.9.2/index.html, fora a quantidade absurda de livros que tenho para consultar, Stack Overflow sempre ajuda. Não posso esquecer dos senhores Github e o Google, sempre quebrando galhos.
5 - Papel e caneta
Parece antigo, mas funciona muito bem para mim, colocar a ideia no papel me ajuda na conclusão da tarefa melhor e mais rapidamente.
6 - Pomodoro
Sempre que posso utilizo Pomodoro, muito bom para focar e dividir a tarefas, saber quando parar e dar uma relaxada.
7 - Música
Meu Last.fm diz melhor o que gosto de ouvir, para ocorrer a famosa concentração.
Acho que é só, até o próximo post.
quinta-feira, 26 de abril de 2012
sexta-feira, 20 de abril de 2012
Criando uma simples RESTful API usando Rails 3 e JSON
O exemplo de API utilizando JSON que vou fazer aqui é bem simples. Alguns podem se perguntar "Por que ele não faz com XML?", e eu respondo, você está no post errado, a busca certa no Sr. Google é "API XML Rails", ou algo parecido com isso. Criei esse post por que precisei fazer uns testes de criação de API, tanto para o meu trabalho, quanto para a faculdade, então compartilho minha experiência com vocês. As referências que utilizei para fazer o meu exemplo estão abaixo.
Utilizei JRuby e PostgreSQL para essa aplicação, coloque o banco e ruby que quiser, se não estiver usando JRuby não copie "jruby -S". Crie uma aplicação rails
jruby -S rails new zapi_blog -d postgresql
Verifique se o seu Gemfile está parecido com esse aqui:
source 'http://rubygems.org'
gem 'rails', '3.1.3'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'activerecord-jdbcpostgresql-adapter'
gem 'jruby-openssl'
gem 'json'
gem 'pg'
gem 'execjs'
gem 'therubyrhino'
gem 'rack-cache', :require => 'rack/cache'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
Crie um scaffold Post
jruby -s rails g scaffold Post title:string body:text
Crie e rode as migrações criadas no banco. Vamos ao controller para modificar algumas coisas, prefiro ele bem simplificado, mudo de lugar o "respond_to" que o rails gera e coloco de uma forma mais elegante utilizando "respond_with".
respond_to :html, :json
# GET /posts
# GET /posts.json
def index
@posts = Post.all
respond_with @posts
end
Inicie sua app e entre em "/posts.json" e abra uma outra aba com "/posts", elas contém o mesmo resultado, só que mostram de formas diferentes. O Rails facilita muito a vida de quem quer criar uma app, de uma forma bem simples é possível injetar os posts de fora da aplicação. Utilizando o "curl", pode ser feito um teste bem simples.
curl -d 'post[title]=Post1&post[body]=Post1' http://localhost:3000/posts.json
Nesse teste consigo injetar um post utilizando a URL do "/posts.json". Vou criar um script com ruby para criar os posts, o script irá pegar os dados de um banco de dados já criado e populado, através de JSON irá enviar os posts para a aplicação que está rodando no servidor local.
Criei os diretórios "rest_api/lib", coloquei dois aquivoes "api.rb" e "post.rb".
rest_api/lib/post.rb
class Post < ActiveRecord::Base
end
rest_api/lib/api.rb
require 'rubygems'
require 'active_record'
require 'json'
require 'net/http'
require 'uri'
ActiveRecord::Base.establish_connection(
:adapter => "postgresql",
:host => "localhost",
:username => "oquevoceusar",
:password => "suasenhaaquiounao",
:database => "umbancodedadosqualquer"
)
require 'post'
class Api
host = 'localhost:3000'
url = 'http://localhost:3000/posts.json'
uri = URI.parse(url)
post_ws = '/posts.json'
posts = Post.all
posts.each do |p|
post = {'title' => p.title, 'body' => p.body}.to_json
req = Net::HTTP::Post.new(post_ws, initheader = {'Content-Type' => 'application/json'})
req.body = post
response = Net::HTTP.new(uri.host, uri.port).start {|http| http.request(req)}
puts "Response #{response.code} #{response.message}: #{response.body}"
end
end
É possível também passar parametros de usuário e senha, entre outras coisas de segurança por esse script e fazer a verificação na app, mas isso é um outro post. Não vou explicar em detalhes o que esse script faz, se você está olhando esse post é por que já tem uma noção boa de ruby on rails, então vá tirar suas dúvidas na API do Ruby ou do Rails, o Sr. Google também ajuda.
Referências:
https://www.socialtext.net/open/very_simple_rest_in_ruby_part_3_post_to_create_a_new_workspace
http://gavinmorrice.com/blog/posts/21-building-a-rest-api-in-rails-3
http://squarism.com/2011/04/01/how-to-write-a-ruby-rails-3-rest-api/
http://blog.project-sierra.de/archives/1788
Você faz informática?
Quando fui deitar, sempre acabo pensando em algo para escrever, então pensei em umas conversas que ando tendo com amigos e colegas de área, decidi escrever algumas perguntas para reflexão própria e de quem quiser refletir junto. Quem tiver mais algumas mande que coloco no post. Estas perguntas não estão em ordem de importância.
Responda as seguintes perguntas:
Estuda frequentemente fora da faculdade, ou curso?
Participa de listas, fóruns, ou chats de assuntos relacionados a sua área?
Segue pessoas importantes da área no twitter?
Lê artigos, livros, ou posts especializados de pessoas relevantes?
Vai a eventos?
Procura atualizar-se com as novidades constantes que pipocam a todo momento?
Conhece o passado, presente e o possível futuro da informática?
Já está inserido no mercado de trabalho? só vale empregos da sua linha de estudos.
Se a maioria dessas perguntas são respondidas com um "NÃO", você está fazendo isso muito certo ... "só que não". Quando falo isso tenho a certeza ao afirmar que você faz informática por modinha e não por que realmente gosta do assunto, não importa agora a sua área de atuação, se não tem dedicação, você realmente não gosta do assunto. E depois não venha dizer que conhece a área, por que não tem embasamento nenhum para falar de informática.
Responda as seguintes perguntas:
Estuda frequentemente fora da faculdade, ou curso?
Participa de listas, fóruns, ou chats de assuntos relacionados a sua área?
Segue pessoas importantes da área no twitter?
Lê artigos, livros, ou posts especializados de pessoas relevantes?
Vai a eventos?
Procura atualizar-se com as novidades constantes que pipocam a todo momento?
Conhece o passado, presente e o possível futuro da informática?
Já está inserido no mercado de trabalho? só vale empregos da sua linha de estudos.
Se a maioria dessas perguntas são respondidas com um "NÃO", você está fazendo isso muito certo ... "só que não". Quando falo isso tenho a certeza ao afirmar que você faz informática por modinha e não por que realmente gosta do assunto, não importa agora a sua área de atuação, se não tem dedicação, você realmente não gosta do assunto. E depois não venha dizer que conhece a área, por que não tem embasamento nenhum para falar de informática.
Assinar:
Postagens (Atom)