sexta-feira, 12 de fevereiro de 2010

JS: Prototype and Sort Table

tablekit

quinta-feira, 4 de fevereiro de 2010

PDF::Writer + Google Charts



PDF with ruby - PDF::Writer (tutorial)



  1. report = GoogleChart.new


  2. report.type = :bar_vertical_grouped


  3. report.height = 350


  4. report.width = 600


  5. report.colors = '346090'


  6. report.title = 'Pay+Back'


  7. report.data = total_dist_mensal


  8. report.data = [459,458,458,453,453,442,442,442,442,442,442,1641]


  9. report.data = [10,20,40,30,10,30,10,10,10,10,10,10]


  10. report.labels = (1..12).to_a


  11. report.eixos = 'x,y'


  12. report = URI.escape(a.to_url)


  13. @pdf.add_image_from_file( a , 60, 10)

quarta-feira, 3 de fevereiro de 2010

Push Server and Juggernaut

 

Server push consiste em um servidor poder se comunicar com o cliente em tempo real sem que o navegador tenha que ficar pedindo atualizações. Uma combinação de técnicas cliente/servidor da Web, onde o servidor transfere os dados para o cliente, mas a conexão de dados permanece aberta.

Juggernaut

O Juggernaut é um plugin para Ruby on Rails que implementa o conceito de server push.
Atenção: O Juggernaut usa conexão socket para trasmitir a mensagem, e para isso funcionar, ele usa um arquivo .swf (flash na versão 8) nos navegadores dos clientes que fica ouvindo determinada porta, esperando por mensagens. Ou seja o usuário deverá ter o plugin flash instalado em seu navegador.

Como acontece

  1. Cliente A abre uma conexão socket com o servidor socket
  2. Cliente B faz uma chamada Ajax para o Rails
  3. Rails envia a mensagem para o servidor socket
  4. O servidor socket retorna a mensagem para os clientes.

Implantando o processo

1 - Após a  instalação é necessário criar o arquivo juggernaut_hosts.yml em config no projeto indicando a configuração do servidor de aplicativo do juggernaut:

  1. :hosts:
  2.   - :port: 5001
  3.     :host: #ip
  4.     :environment: :development


  5.   - :port: 5001
  6.     :host: #ip
  7.     :environment: :production


2 - Acrescentar os arquivos javascript do Juggernaut (em layout/padrao.rhtml):


  1. <%= javascript_include_tag :juggernaut %>

3 - Após, é instânciado com o código do usuário:

  1. <%= juggernaut( :client_id => session[:UsrConectado].cdg_usuario ) %>

4 - Criando o arquivo para o servidor juggernaut
  1. juggernaut -g juggernaut.yml

5 - Subindo o serviço:
  1. juggernaut -c juggernaut.yml

6 - Enviando comando javascript:
  1. #Broadcast:
  2. Juggernaut.send_to_all("alert('hi from juggernaut')")
  3. #Usuario especifico:
  4. Juggernaut.send_to_client( "alert('hi from juggernaut')", 29 )