[quote=daniellibanori]Estou contente com a performance do meu desenvolvimento e não preciso convencer ninguém de que minhas ferramentas e metodologias são boas.
[/quote]
Acho que ninguém é doido de deixar de usar algo que seja melhor, foi assim que Java conquistou se espaço, ele oferecia coisas que outras linguagens e plataformas não ofereciam. O fato é que Ruby não é melhor que Java, não a ponto de substituí-lo, por mais que os fanáticos repitam o contrário.
Outra coisa é “virar o mundo de cabeça para baixo” para que “as vantagens” do Ruby sejam vantagens, isto é, sobrecarga de operadores, classes abertas, tipagem dinâmica mais trabalhar no notepad e com a linha de comando usando uma documentação escrota. Qualquer ser humano normal simplesmente repudiaria tal regressão, mas fazendo a inversão de conceitos, o que é ruim fica bom e o que é bom fica ruim, aí sim Ruby sai “vitorioso”. Não sei como retórica sozinha pode ser boa para essa área de TI, o que precisamos são de ferramentas sempre melhores não a retórica “voltemos para a linha de comando”.
[quote=Thiagosc]Outra coisa é “virar o mundo de cabeça para baixo” para que “as vantagens” do Ruby sejam vantagens, isto é, sobrecarga de operadores, classes abertas, tipagem dinâmica mais trabalhar no notepad e com a linha de comando usando uma documentação escrota. Qualquer ser humano normal simplesmente repudiaria tal regressão, mas fazendo a inversão de conceitos, o que é ruim fica bom e o que é bom fica ruim, aí sim Ruby sai “vitorioso”. Não sei como retórica sozinha pode ser boa para essa área de TI, o que precisamos são de ferramentas sempre melhores não a retórica “voltemos para a linha de comando”.
[/quote]
Documentacao escrota ??? acho que voce precisa ler um pouco … a documentacao para ruby tem mais exemplos do que o javadoc q é apenas uma assinatura da funcao. http://www.ruby-doc.org/
Quanto a ide … voce mesmo sabe que existe o radrails e textmate … entao nao fala besteira.
Outra coisa, eu sugiro as pessoas aqui apenas responderem o tiago quando ele resolver mostrar a cara e o background dele aqui no guj.
ele fala tanta merda e tanta baboseira que nem mostrar a cara ele tem coragem …
x, y = 0, 1
10.times do
puts y
x, y = y, x + y
end
Java
class Fib {
public static void main (String args[]) {
int x = 0;
int y = 1;
int total = 1;
for (int i=0; i < 10; i++) {
System.out.println(total);
total = x+y;
x = y;
y = total;
}
}
}
Detalhe, Java dá pau depois de um certo número de iteraçòes quando precisaria passar a usar números grandes. Ruby passa automaticamente para Bignum.
Certo, falando sério agora. Atualizei o rails, fiz e refiz alguns testes. O resultado:
<% for copia in @copias %>
<tr>
<td><%= copia.id %></td>
<td><%= copia.midia.upc %></td>
<td><%= copia.midia.type %></td>
<td><%= copia.midia.filme.titulo %></td>
<% copia.midia.filme.titulo = 'teste' %>
</tr>
<% end %>
Se ocorrer duas cópias na lista apontando pro mesmo filme, deveria mostrar o titulo do filme como ‘teste’, na segunda? Ele não muda, porque o valor é lido novamente do banco de dados.
Processing CopiasController#index (for 127.0.0.1 at 2006-10-27 21:43:34) [GET]
Session ID: b0f8879f356885b92699a439cc29c231
Parameters: {"action"=>"index", "controller"=>"admin/copias"}
e[4;36;1mCopia Columns (0.016000)e[0m e[0;1mSHOW FIELDS FROM copiase[0m
e[4;35;1mSQL (0.016000)e[0m e[0mSELECT count(*) AS count_all FROM copias e[0m
e[4;36;1mCopia Load (0.000000)e[0m e[0;1mSELECT * FROM copias LIMIT 0, 10e[0m
Rendering admin/copias/list within layouts/standard-layout
Rendering admin/copias/list
e[4;35;1mMidia Load (0.016000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0m
e[4;36;1mFita Columns (0.000000)e[0m e[0;1mSHOW FIELDS FROM midiase[0m
e[4;35;1mFilme Load (0.000000)e[0m e[0mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0m
e[4;36;1mFilme Columns (0.015000)e[0m e[0;1mSHOW FIELDS FROM filmese[0m
e[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0m
e[4;36;1mFilme Load (0.000000)e[0m e[0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0m
e[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0m
e[4;36;1mFilme Load (0.000000)e[0m e[0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0m
e[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0m
e[4;36;1mFilme Load (0.000000)e[0m e[0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0m
e[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0m
e[4;36;1mFilme Load (0.000000)e[0m e[0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0m
e[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0m
e[4;36;1mFilme Load (0.000000)e[0m e[0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0m
e[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0m
e[4;36;1mFilme Load (0.000000)e[0m e[0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0m
e[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 3) LIMIT 1e[0m
e[4;36;1mDvd Columns (0.015000)e[0m e[0;1mSHOW FIELDS FROM midiase[0m
e[4;35;1mFilme Load (0.000000)e[0m e[0mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0m
e[4;36;1mMidia Load (0.016000)e[0m e[0;1mSELECT * FROM midias WHERE (midias.id = 3) LIMIT 1e[0m
e[4;35;1mFilme Load (0.000000)e[0m e[0mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0m
e[4;36;1mMidia Load (0.000000)e[0m e[0;1mSELECT * FROM midias WHERE (midias.id = 3) LIMIT 1e[0m
e[4;35;1mFilme Load (0.000000)e[0m e[0mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0m
e[4;36;1mSQL (0.000000)e[0m e[0;1mSELECT count(*) AS count_all FROM copias e[0m
Completed in 0.20400 (4 reqs/sec) | DB: 0.10900 (53%) | 200 OK [http://localhost/admin/copias]
Esse comportamento é normal? É o correto, esperado?
Reconheço o poder do Ruby e estou no momento aprendendo, até para ter uma visão de um mundo diferente e mudar alguns conceitos - paradigmas.
Contudo, ainda não consigo entender qual a real vantagem de classes abertas. Para um sistema Enterprise, onde muitas vezes eu quero fazer uma caixa preta e expor somente parte do meu serviço fica bastante complicado - segurança da informação.
Eu nem vou entrar no detalhe sobre performance, pois não é o foco.
Outra coisa, tem como vc criar um arquivo de deploy em Ruby ou Rails, como no java - jar, war, ear ? Pq ficar rodando rake (ant) o tempo todo e milhares de scripts, não parece uma solução ideal de deployment, ao menos não para enterprise, onde normalmente quem faz o deployment é a equipe de infra-estrutura, que muitas vezes possui conhecimento limitado.
Não tenho nada a ver com a discussão de vocês, mas… você acha que não?[/quote]
Sim, as características de uma linguagem influenciam na sua manutenção, entretanto as características de quem irá implementa-la influencia mais. O contexto que eu tentei usar a pergunta é que uma linguagem não dificulta as coisas por si só, sempre tem um “artista” no meio.
Se eu fosse eleger uma linguagem de dificil manutenção pelas caracteristicas eu citaria C. Entretanto o Kernel do Linux, por exemplo, não parece ter tantos problemas assim. O numero de erros por linha de código é extremamente baixo e ninguem nunca disse ‘meu deus o codigo do kernel linux é hediondo, quando descobrirem um bug vai ser um inferno de resolver’.
Devemos isto graças ao sr. Linus Torvalds e uma grande trupe de pessoas habeis em C que não abusam (muito) do C.
Alguem aqui conhece uma ‘lenda’ chamada Lisp on Lines ? Parece ser uma versão lisp do rails. (deve (ser (muito 'legal))(!))
Não tenho nada a ver com a discussão de vocês, mas… você acha que não?[/quote]
Sim, as características de uma linguagem influenciam na sua manutenção, entretanto as características de quem irá implementa-la influencia mais. O contexto que eu tentei usar a pergunta é que uma linguagem não dificulta as coisas por si só, sempre tem um “artista” no meio.
Se eu fosse eleger uma linguagem de dificil manutenção pelas caracteristicas eu citaria C. Entretanto o Kernel do Linux, por exemplo, não parece ter tantos problemas assim. O numero de erros por linha de código é extremamente baixo e ninguem nunca disse ‘meu deus o codigo do kernel linux é hediondo, quando descobrirem um bug vai ser um inferno de resolver’.
Devemos isto graças ao sr. Linus Torvalds e uma grande trupe de pessoas habeis em C que não abusam (muito) do C.
Alguem aqui conhece uma ‘lenda’ chamada Lisp on Lines ? Parece ser uma versão lisp do rails. (deve (ser (muito 'legal))(!))[/quote]
Acho (opinião pessoal) um código Java bem mais legível, portanto mais fácil de dar manutenção (ao menos aos simples mortais) do que C…
Existe uma gem muito interessante no Ruby chamada Capistrano. Basta:
$rake deploy
E temos o codigo submetido ao SVN sendo instalado no servidor e reiniciada os processos fastcgi entre requisições.
Muito interessante o Capistrano, pois você pode definir uma série de tarefas dentro de um deploy, como atualização do cluster de banco de dados, back-ups, execução de scripts, etc.
[quote=macfly2500]Uma pergunta:
O código é interpretado por um CGI?
Ele abre um processo no servidor a cada requisição do usuário, assim como o PHP quando não instalado como sapi?
Confere esta informação?
Obrigado[/quote]
Se tu estiver usando como cgi… sim, se tu estiver usando fastcgi não, apesar de ser possível rodar rails como cgi, não é aconselhado.
[quote]Que estranho, normalmente aqui no brasil a situação é adversa:
os desenvolvedores sofrendo pra convencer os chefes de que
RoR é promissor e vale a pena investir.
Espero que o comportamento "chefe-sugestionando-rails"
prolifere =)[/quote]
Se viu que coisa linda
Pois é, se for assim é um chute no s***
Imagine 50-60 usuários conectados, cada um com um processo no servidor.[/quote]
Rapaz, não é obrigado a usar CGI, você pode usar fastcgi + apache, Mongrel ou ainda Lighttpd com fastcgi normalmente, ai não tem essa de 50 ou 60 usuários tomando conta do teu servidor, veja a http://www.37signals.com veja 500.000 Usuários depois que page views são BEM MAIS…