Usando ApacheBench para testes: Apache/mod_rails e Nginx/mongrel

15 de Julho de 2008 ~ 3 comentários ~ Tags: , ,

O ApacheBench é um software do Apache usado para fazer testes de perfomance de servidores web, independente do servidor usado. Isso é muito útil para comparar o desempenho de diversas configurações, mas nem sempre pode apresentar a realidade do ambiente.

O ApacheBench é distribuído nos ambientes Linux pelo pacote apache2-utils - versões para Mac OS e Windows podem ser encontradas no site do software. Em distribuições como o Ubuntu, para instalá-lo basta um apt-get install apache2-utils (como super-usuário). A partir daí, o comando ab fica disponível em seu terminal e é só correr para o abraço!

Um teste pode ser feito com o comando:

ab -n 100 -c 5 http://www.leonardofaria.net/

O Flag '-n' indica o número de requisições, enquanto a opção '-c' indica a ocorrência de conexões simultâneas. A saída do comando acima é semelhante a:

This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.leonardofaria.net (be patient).....done

Server Software:        Apache/2.2.8
Server Hostname:        www.leonardofaria.net
Server Port:            80

Document Path:          /
Document Length:        0 bytes

Concurrency Level:      5
Time taken for tests:   16.460184 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Non-2xx responses:      100
Total transferred:      41600 bytes
HTML transferred:       0 bytes
Requests per second:    6.08 [#/sec] (mean)
Time per request:       823.009 [ms] (mean)
Time per request:       164.602 [ms] (mean, across all concurrent requests)
Transfer rate:          2.43 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      255  291  21.2    287     361
Processing:   442  506 131.1    485    1732
Waiting:      438  492  42.9    484     655
Total:        698  797 137.9    774    2040

Percentage of the requests served within a certain time (ms)
  50%    774
  66%    804
  75%    812
  80%    818
  90%    878
  95%    925
  98%    982
  99%   2040
 100%   2040 (longest request)

Dezenas de possibilidades podem ser traçadas com esses testes.
Nos meus benchmarks, realizei basicamente 2 testes: a renderização do index.html default do framework e a renderização de um Time.Now do Ruby. Em ambos os testes, o desempenho do nginx + mongrel_cluster foi superior ao Apache + mod_rails. Esse teste também foi feito por aí, e com resultados semelhantes ao meu.

Desse modo, em uma balança estão Apache/mod_rails e Nginx/mongrel_cluster. De um lado, pesam a facilidade de deployment e o crescente uso em shared hosts. De outro lado pesam a rapidez do servidor e a 'dificuldade' do deployment. E aí? De que lado você vai ficar?


Rails Screencasts

11 de Julho de 2008 ~ 2 comentários ~ Tags: ,

É incrível a qualidade de material existente sobre Rails. A comunidade está cada vez mais crescendo e para quem está vindo para o lado Rails da força, nada mau uns screencast para aprender.

  1. Learnivore é um agregador com diversos sites de screencasts, incluindo os listados a seguir.
  2. Railscasts: já são 117 episódios do mais conhecido site de vídeos.
  3. PeepCode: screencasts de ótima qualidade, entretanto, pagos (o Júlio fez um ótimo post sobre isso).
  4. Ruby Plus: outro site interessante de conteúdo.
  5. ThinkRefresh: um site com um bom número de screencasts.
  6. Learncasts: o Lucas Húngaro começou sua série de screencasts.
  7. Git: git parece ser ainda um mistério, mas não se você ver esses screencasts.
  8. TDD Screencast: não assisti ainda, mas promete ser um screencast bem bacana.
  9. [update] o Carlos Brando também tem screencasts brilhantes! (E não deixe de conferir o Rails Podcast Brasil, do qual ele também participa.)
  10. RubyPulse é um novo site de screencasts
  11. Sceencasts sobre o Textmate
  12. 17 videos cobrindo o básico sobre Ruby

Nasceu: codestacker.com

2 de Julho de 2008 ~ 4 comentários ~ Tags: ,

Nasceu meu projeto Rails de 2 fins-de-semana: codestacker (é em minúsculas, tá?) é um site para compartilhamento de código, anônimo ou não, público ou privado. Existem vários sites semelhantes ao codestacker, entretanto, quis fazer minha solução cobrindo minha abordagem para o problema e como posso solucioná-lo.

Tenho vários features que ainda não implementei, caí na real e lancei o básico do serviço. Existirão outros fins-de-semana para atualizações.

Então é isso, vejo todo mundo .


annotate_model, gem útil da semana

30 de Junho de 2008 ~ 5 comentários ~ Tags:

Trabalhar com Rails é certeza de encontrar ótimo material para trabalhar/documentar sua aplicação. Tenho uma lista de plugins/gems úteis para o desenvolvimento, o que daria um enorme post. Seguindo os conceitos do Getting Real, rapidinho vou postando (é muito material).

O primeiro da lista é o annotate_model, um gem que gera para cada model as informações da estrutura da tabela daquela entidade. Por exemplo:

# == Schema Information
# Schema version: 20080628203259
#
# Table name: comments
#
#  id         :integer(11)     not null, primary key
#  name       :string(255)
#  email      :string(255)
#  body       :text
#  code_id    :integer(11)
#  created_at :datetime
#  updated_at :datetime
#

class Comment <ActiveRecord::Base

Uma forma de se conhecer os atributos de uma entidade é, a partir do script/console, digitar: Model.new.attributes, entretanto com o gem, o conhecimento dessas informações fica bem mais fácil.

Após instalada (sudo gem install annotate-models), bastar executar o comando annotate na pasta do seu aplicativo. Simples, rápido e quebra um galhão.


Passenger no painel de preferências do Leopard

28 de Junho de 2008 ~ 2 comentários ~ Tags: ,

Que o mod_rails veio para revolucionar o deployment de Rails, todo mundo já sabe. Agora, me deparei com isso:

Como no Locomotive, criaram, com RubyCocoa, um painel para gerenciar suas aplicações. Agora, nem é mais preciso declarar cada aplicação no httpd.conf. Virou brincadeira, né?

Para funcionar, bastar ter Mac OS 10.5.2 e Pessenger 2.0.1 instalados.


Extendendo a classe Tween do Flash

10 de Junho de 2008 ~ 1 comentário ~ Tags: , ,

A cada trabalho que volto ao Actionscript, me deparo com soluções interessantíssimas para problemas comuns. Esse post falar sobre classes de transição

Color Tween

A classe Tween é responsável por fazer transições de objetos do Flash. Entre essas transições estão mudanças nos eixos, na largura, na altura e na opacidade de objetos, não existindo transições entre cores. Existem alguns protótipos para isso, mas a melhor solução que encontrei foi usar a classe TweenColor, que extende a classe padrão encontrada no Flash.

Para usá-la, basta copiar o pacote, instalar (via Extension Manager) e começar a usar. Um rápido exemplo funcional:

import mx.transitions.TweenRGB;

var container:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
var label:TextField = container.createTextField("label", 1, 0, 0, 150, 20);
label.text = "Hello World";

container.onRollOver = function():Void {
    var mytween = new TweenRGB(this, "", Regular.easeInOut, 0x000000, 0xff0000, 3, true);
}

Tween Extended

A classe Tween Extended multiplica as possibilidades de se usar a classe Tween padrão. Como a Color Tween, ela também permite a transição entre cores e além disso, possibilita passar de uma só vez, múltiplos parâmetros (_x, _y, _alpha, _width, _height, _xscale, _yscale e _rotation) para um Tween de um objeto.

O Leonardo França e o Erick Sousa já explicaram o funcionamento dessa classe.

Outras classes de transição

Antes de surgir a classe Tween (Flash 2004 - Actionscript 2), surgiram outras classes interessantes para transição. Uma é a MC Tween 2, do brasileiro Zeh Fernando e a outra é lazo. Para ambas, basta copiar e instalar a extensão e começar a usar.


Extreme Programming para todos

7 de Junho de 2008 ~ Comente! ~ Tags: ,

Esse é outro post acadêmico e novamente um artigo para a disciplina de Engenharia de Software. O artigo está abaixo e dessa vez há também slides (PDF, 2 MB) da apresentação feita na Faculdade Pitágoras.

Naturalmente, essa não é a maior referência sobre XP, apenas uma boa introdução sobre o tema. Especialistas mesmo são o Vinícius Teles e o time da Improve It, que possuem um ótimo conteúdo sobre o assunto. Vamos lá:

Introdução

Extreme Programming é uma metodologia de desenvolvimento de software que visa a criação de sistemas de melhor qualidade, produzidos em menos tempo e com menores custos. Criada por Kent Beck no fim da década de 90, o desenvolvimento ágil é atingido através de alguns valores e práticas que muito divergem dos conceitos tradicionais.

Continue lendo →


Live stream

7 de Junho de 2008 ~ Comente! ~ Tags: , , , ,

Dias atrás, vi o Planet Caffo e achei a idéia bem interessante. Basicamente, um mega-agregador 2.0. O Caffo me indicou o Venus, aplicação em Python que gerar esse rio de conteúdo. Me deparei então com o RSS Stream, um plugin do Wordpress que faz a mesma coisa. Assim, criei meu próprio mega-agregador :)


Gmail + WordPress = post por email

4 de Junho de 2008 ~ 8 comentários ~ Tags: ,

Eu já tinha visto o recurso de post por email mas nunca havia testado. É muito simples. Vamos lá:

  1. No adminstrador do Wordpress, escolha Options -> Writing.
  2. Em 'Posts por e-mail', defina:
    • Mail Server: ssl://pop.gmail.com - Port: 995
    • Login Name: usuario@gmail.com
    • Password: : suasenha, naturalmente ;)
  3. Agora, basta enviar o post para o destinatário definido no adminstrador.

Dica extra

É possível passar a categoria do post no assunto da mensagem. Basta colocar o seu respectivo id entre colchetes. Exemplo: supondo que a categoria wordpress tenha ID = 5, o assunto da sua mensagem seria: [5] título do meu post exemplo.


6 screensavers para seu Mac

1 de Junho de 2008 ~ Comente! ~ Tags: , , ,

Particularmente, acho os screensavers do Mac OS mais bonitos do que os do Windows e Linux. Nesse post linko alguns screensavers bem interessantes:

O Polar Clock é escrito com ActionScript 3, e tem versões para Windows e Mac.

Continue lendo →


Página 8 de 29
Primeira678910Última

Últimos textos do blog

Tagcloud



Veja todos os textos →