Recent News

NetBeans 6.5 Beta

Postado por elomarns em 13/08/08 às 23:02

netbeans_65_beta_loading.PNG

Hoje foi lançada a primeira versão beta do NetBeans 6.5, que até então estava no Milestone 1.

É claro que esta versão não está finalizada, até porque é uma versão beta, que, por definição, é uma versão que ainda sofrerá ajustes. Ainda assim dá pra usá-la para fazer alguns testes, que é o que eu estou fazendo.

Eu baixei a versão Ruby do NetBeans, e confesso que não senti nenhuma grande mudança. Ele parece estar um pouco mais rápido, mas nada que faça muito diferença. Acho que a única coisa realmente digna de nota é o novo Unit Test Runner, sobre o qual eu já havia lido no blog do Tor orbye, mas que não funcionou aqui.

De qualquer forma, eu estou satisfeito em ver a evolução constante do NetBeans, ou, mais precisamente, a evolução do seu suporte ao Ruby/Rails. Para maiores novidades sobre esta versão, basta ler a página da versão Beta do NetBeans, 6.5 que contém també as novidades da IDE para outras linguagens.

Breve Relatório da Palestra de JRuby on Rails no SENAC do Rio de Janeiro

Postado por elomarns em 3/06/08 às 1:19

Há algumas horas atrás foi realizada uma palestra sobre JRuby on Rails no SENAC do Rio de Janeiro, tendo sido apresentada pelo Fabio Kung, da Caelum. Conforme o planejado, eu assisti à palestra, o que foi bastante recompensador.

A apresentação foi excelente, tendo o Fabio apresentado o tema de forma extremamente competente, dando detalhes bem interessantes sobre a migração da front page do GUJ para o Rails, através do JRuby.

Sendo um pouco mais específico, ele mencionou, por exemplo, as gems e bibliotecas Java utilizadas no projeto, a intenção de manter o JForum (engine de fórum desenvolvida em Java), o que eliminou o MRI como opção de deploy, já que havia a necessidade de integrar o GUJ com o fórum, e a surpreendente diferença entre a performance do GUJ antes e depois da migração, sendo a versão JRuby on Rails 7 vezes mais rápida que a versão puramente Java.

Também foi mencionada a intenção de transformar o GUJ em uma espécie de agregador de blogs de TI, permitindo inclusive que os usuários votem nos posts que gostarem mais. Esse novo direcionamento trouxe um problema interessante: como impedir que um usuário crie um bot para votar nos seus próprios posts? A solução encontrada foi usar um captcha, sendo que não foi exatamente fácil achar um plugin puramente Ruby para tal tarefa, tanto que no fim das contas foi utilizado o JCaptcha, que conforme o nome indica foi feito em Java.

Outro assunto interessante abordado na palestra foi o jetty-rails, que é um projeto do próprio Fabio, e que permite que o desenvolvimento JRuby on Rails transcorra de forma bem mais rápida, já que ele evita que o container de servlets seja “levantado” toda vez que o desenvolvedor quiser visualizar uma mudança no código. Aliás, essa é uma alternativa interessante pra quem quer não somente fazer o deploy através do JRuby, mas também usá-lo durante o desenvolvimento e acompanhar o progresso da aplicação instantaneamente.

Ele também mostrou um enorme conhecimento de causa ao discorrer com bastante propriedade sobre os problemas do Ruby e do Rails, em particular o fraco gerenciamente de memória do Ruby, e as complicações advindas do fato do Rails não ser thread-safe.

Um último detalhe digno de nota é que o Fabio deixou uma mensagem bem clara durante toda a palestra: qualquer tecnologia escala, desde que você realmenta a conheça.

Enfim, foi uma palestra excelente. Parabéns pro Fábio e pro Rio JUG pela bela iniciativa.

Palestra sobre JRuby on Rails no Rio de Janeiro

Postado por elomarns em 30/05/08 às 1:27

Na próxima segunda-feira, dia 2 de junho, será realizada no SENAC, durante a reunião mensal do RioJUG, uma palestra sobre JRuby on Rails . A palestra será apresentada pelo Fabio Kung, da Caelum, e será focada na migração do front page do GUJ para o Rails, através do JRuby, abordando inclusive o compartilhamento e acesso dos recursos Java pelo JRuby on Rails.

Essa é uma ótima chance para quem tem interesse no assunto em questão, até porque em geral não temos muitos eventos dignos de nota sobre desenvolvimento no Rio, o que torna essa palestra ainda mais imperdível. Além disso, trata-se de um caso real de uso de uma tecnologia bastante promissora, apresentado por um palestrante altamente qualificado.

Eu muito provavelmente irei, mesmo tendo que matar a aula na faculdade para isso. Para quem pretende fazer o mesmo e não sabe onde exatamente fica o SENAC, ou que horas começa e termina a palestra, abaixo estão os detalhes:

Dia: 2/6/08 (segunda-feira).
Horário: 19:00.
Duração: 2 horas.
Local: Auditório do SENAC CIT - Rua Santa Luzia, 735 - 7o. andar, Centro.
Dica de Acesso: Estação Cinelândia do Metrô pela saída Santa Luzia, atrás do Consulado Americano.

Nada Como a Disciplina Oriental

Postado por elomarns em 5/03/08 às 8:05

Conforme mencionei alguns dias atrás, recentemente eu comprei o Repensando a web com Rails, do Fabio Akita, e ontem, ao ler a entrevista com o Yukihiro “Matz” Matsumoto no apêndice 2 do livro, reparei em um detalhe sem muito importância, mas ainda assim interessante.

Em um certo momento, o Akita pergunta sobre o lançamento do Ruby 2.0, e o Matz responde que o próximo grande lançamento do Ruby (1.9 ou talvez até 2.0, segundo ele) sairia mais ou menos no Natal de 2007. E adivinhem quando saiu o Ruby 1.9? Exatamente no Natal de 2007!

Ou seja, o Matz fez uma previsão incrivelmente precisa mesmo 1 ano e 2 meses antes do lançamento da versão 1.9 do Ruby, já que o livro do Akita foi lançado em outubro de 2006, sendo que a entrevista pode até ter sido feita um pouco antes disso.

Portanto, é melhor levar a sério quando o Matz fizer uma previsão sobre o lançamento de uma versão do Ruby.

SQLite 3: Visão Geral e Instalação

Postado por elomarns em 4/01/08 às 13:25

O SQLite 3 é um SGBD(Sistema de Gerenciamento de Bancos de Dados) open source incrivelmente leve, e que funciona sem nenhuma configuração. Além disso, ele não possui um processo servidor, existindo assim apenas um processo responsável por ler e escrever os dados, sendo estas operações feitas diretamente no sistema de arquivos local.

Por se tratar de um SGBD sem um processo servidor, o SQLite 3 é auto contido, podendo assim ser distribuído junto com as aplicações. Na verdade, devido a sua natureza, este é um cenário de uso ideal para ele, principalmente quando a aplicação em questão não requer um SGBD mais robusto.

Instalação

A versão mais atual do SQLite 3 é a 3.5.4, sendo que a sua instalação depende do sistema operacional utilizado. Tendo isto em vista, abaixo estão as instruções para instalação nos 3 sistemas operacionais mais usados:

Windows: baixe o programa em linha de comando que acessa e modifica os bancos de dados no SQLite 3, justamente com a DLL da biblioteca do SGBD. Feito isso, descompacte os dois arquivos baixados, obtendo assim os arquivos sqlite3.exe e sqlite3.dll. Por fim, coloque estes dois arquivos no diretório bin da sua instalação do Ruby, sendo este diretório provavelmente estará localizado em C:\ruby\bin.

Linux: existem várias formas de se instalar programas no Linux, dependendo de várias fatores como distribuição utilizada. Sendo assim, irei considerar aqui apenas distribuições baseadas no Debian, como o Ubuntu. Essas distribuições possuem o gerenciador de pacotes apt-get, o que significa que basta executar o comando sudo apt-get

Mac OS X: o SQLite 3 já vem integrado ao Mac OS X desde a versão 10.4(Tiger), portanto, a menos que você esteja em uma versão anterior, não é preciso fazer absolutamente nada para ter ele instalado no seu ambiente. Mas, caso você esteja em uma versão anterior do Mac OS X, basta usar o DarwinPort, digitando o comando sudo port install sqlite3 em uma janela de comando. Dessa forma, o Daw

Instalando o gem

Embora tenhamos instalado o SQLite 3, ainda não podemos utilizá-lo em aplicações Rails, uma vez que ainda falta o adapter necessário para a conexão. Sendo assim, temos que baixá-lo através do RubyGems, o que é feito digitando o comando gem install sqlite3-ruby em uma janela de comando.

Ruby 1.9.0

Postado por elomarns em 26/12/07 às 4:37

Parece que nesse Natal tivemos um presente especial do Matz: o Ruby 1.9.0. Abaixo estão as URLS de onde você pode baixar a nova versão:

ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.bz2

407cc7d0032e19eb12216c0ebc7f17b3

ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.gz

b20cce98b284f7f75939c09d5c8e846d

ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.zip

78b2a5f9a81c5f6775002c4fb24d2d75


E como eu fiquei sabendo dessa notícia através do blog do Akita, nada mais justo do que linkar diretamente para o post original, até porque dessa forma a informação estará mais completa, já que até o momento eu sei muito pouco sobre esta nova versão. Portanto, para maiores informações, leia o post do Akita sobre o Ruby 1.9.0.

Netbeans 6.0 Final

Postado por elomarns em 3/12/07 às 12:40

netbeans6_final.PNGApós duas versões beta e dois Release Candidates, foi lançada hoje a versão final do Netbeans 6.0.

Para quem não sabe, o Netbeans é uma IDE bastante conhecida no mundo Java, uma vez que ela é desenvolvida nesta linguagem e é mantida pela Sun, mesma empresa que mantém o Java. No entanto, se engana quem acha que o Netbeans suporta apenas desevolvimento Java, uma vez que há um bom tempo a IDE também suporta outras linguagens, como C/C++, por exemplo.

Além disso, de uns tempos pra cá, a Sun passou a investir pesado no Ruby, o que resultou na contratação dos desenvolvedores do JRuby e no fato do Netbeans agora dar suporte ao desenvolvimento Ruby/JRuby.

Como resultado desse investimento no Ruby, o Netbeans é hoje, na minha opinião, uma ótima opção para desenvolvimento Ruby/Rails. E pelo que parece eu não estou sozinho, já que, segundo uma pesquisa realizada com desenvolvedores Ruby/Rails sobre IDE/editor preferido, ele é uma das IDEs mais utilizadas para desenvolvimento Ruby/Rails.

Sendo assim, agora só me resta testar a versão final, e ver se realmente atende as expectativas no que diz respeito ao Ruby. E caso você queira fazer o mesmo, basta baixar o instalador da distribuição do Netbeans 6.0 específica para o Ruby, sendo que ele possui apenas 19,7 MB. Em seguida, prossiga através da sua instalação no melhor estilo next->next->finish e pronto!

Lendo Dados do Teclado no Ruby

Postado por elomarns em 1/11/07 às 8:11

Já vimos de forma resumida como funcionam as variáveis no Ruby e também como gerar saída de dados com puts, print e printf, no entanto, até o momento, isto não nos serve muito, já que todo dado que quisermos armazenar e/ou exibir teriam que ser inseridos por nós diretamente no código. Sendo assim, para tornar as coisas um pouco mais interessantes, veremos agora como ler dados do teclado através da janela de comando no Ruby.

Usando o método gets

O gets é um método que lê e retorna a próxima linha do fluxo de entrada padrão, que, por padrão, refere-se à janela de comando. Sendo assim, ele nos permite, entre outras coisas, ler um dado digitado pelo usuário através da janela de comando. Veja abaixo um exemplo:

print "Digite o seu nome: "
nome = gets
puts "Seu nome: " + nome

Algo interessante a ser dito sobre o gets é que mesmo que você não armazene o seu retorno em uma variável, o Ruby automaticamente irá inserir este valor na váriavel global $_. Além disto, se chamarmos o método print sem especificar nenhum argumento, ele automaticamente irá exibir o valor de $_. Veja a seguir este recurso em funcionamento:

gets
print # É o mesmo que print $_
teste = gets
print # É o mesmo que print $_

Como vimos, o gets armezena em $_ o valor que ele retorna, tanto no primeiro caso, onde não armazenamos explicitamente este valor em uma variável, como no segundo, onde o armazenamos na variável teste. No entanto, é importante mencionar que o uso do $_ está gradualmente sendo abandonado pela comunidade Ruby.

Lendo mais de uma linha com readlines

Existe também o método readlines, que nos permite ler várias linhas na janela de comando de uma só vez. Para isto, basta digitar cada linha, e separá-las pressionando a tecla Enter, o que irá inserir um caractere de nova linha(\n) entre cada linha digitada. Para encerrar a entrada dos dados, basta inserir o caractere de fim de arquivo representado por Ctrl + C, na última linha, sendo que nesta linha não pode estar presente nenhum outro caractere. Além disso, é importante saber também que o readlines retorna as linhas digitadas na forma de um array, sendo cada linha um elemento deste array.

puts "Faca um resumo da sua vida: "
resumo = readlines
puts "nResumo: nn"
puts resumo

 

# Inserindo comentários no Ruby

Postado por elomarns em 3/10/07 às 12:30

Um recurso básico oferecido pela imensa maioria das linguagens de programação, se não por todas, é a capacidade de inserir texto descritivo no código fonte, de forma a explicar certos detalhes sobre o código, ou até mesmo o seu propósito como um todo. Este tipo de texto, que obviamente é ignorado pelo compilador/interpretador, é chamado de comentário, e está disponível também no Ruby.

Para inserir comentários no Ruby, basta escrevê-los logo após o caractere #. Uma vez que o interpretador do Ruby encontrar este caractere, ele irá ignorar tudo o que vier em seguida, mas somente até o fim da linha atual. Sendo assim, este caractere só serve para comentários de uma única linha. Para escrever comentários mais extensos, você terá que prefixar cada linha do comentário com o caractere #. Veja abaixo alguns exemplos de comentários no Ruby:

# Variável que armazena a minha idade
idade = 22

puts idade # Exibindo a minha idade

# Estes comentários são para exemplificar a sintaxe dos
# comentários no Ruby, tendo inclusive comentários
# de mais de uma linha, como esse, por exemplo

No código acima, o interpretador do Ruby só irá executar a instrução que atribui o valor 22 à variável idade, e a instrução que exibe o valor desta variável. Todo o resto será ignorado, uma vez que está após o caractere #.

Há ainda uma sintaxe alternativa para inserir comentários de mais de uma linha. Para usá-la, basta iniciar o bloco de comentários com =begin e terminá-lo com =end. Dessa forma, o interpretador do Ruby irá ignorar tudo que estiver entre =begin e =end. Veja abaixo um exemplo desse tipo de comentário:

=begin
Esta é a sintaxe alternativa para comentários de múltiplas linhas
Como podem ver, seu uso também é bastante simples
=end

Um detalhe que deve ser observado no uso desse tipo de comentário é que o =begin e =end devem estar exatamente no começo da linha. Caso haja pelo menos um caractere antes dele, mesmo que seja o caractere de espaço, o Ruby irá gerar um erro.

Por fim, é válido mencionar também que esse último tipo de comentário não é tão usado. Em geral, os comentários prefixados por # são mais usados, mesmo em comentários de múltiplas linhas.

Variáveis no Ruby

Postado por elomarns em 29/09/07 às 20:09

De forma abrangente, variáveis são endereços de memória a qual damos um nome, de forma que possamos usá-los para armazenar valores, e posteriormente recuperar estes valores.

Em geral, as variáveis precisam ser declaradas com um tipo, sendo que elas só podem armazenar valores deste tipo. Isto é o que se chama de tipagem estática. Já no Ruby as coisas funcionam de forma diferente. Uma variável no Ruby pode armazenar valores de qualquer tipo ao longo do tempo. Esta é a chamada tipagem dinâmica ou duck typing.

É importante notar que como todo dado em Ruby é um objeto, as variáveis sempre armazenarão referências a objetos. Isso significa que o mais perto que chegamos dos objetos são as referências armazenadas pelas variáveis, sendo que as referências são valores binários que nos permite acessar um objeto, atuando assim como intermediários. Além disso, devido a tipagem dinâmica, uma variável pode armazenar referências a objetos de diversas classes ao longo da sua vida.

Convenções de nomes de variáveis

O Ruby possui uma convenção de nomes para as sua variáveis, de forma que somente pelo nome possamos saber o escopo da variável. Mas é importante saber que esta não é apenas uma convenção cujo uso é recomendado, pelo contrário, ela de fato faz parte da sintaxe da linguagem. Sendo assim, uma vez que você cria uma variável, o escopo dessa variável será determinado pelo nome que você deu.

Quanto ao escopo, as variáveis podem ser variáveis locais, variáveis globais, variáveis de instância e variáveis de classe.

Variáveis locais

Variáveis locais são variáveis definidas dentro de um método, só existindo dentro dos limites daquele método específico. Os seus nomes devem começar com letras minúsculas ou com underscore(_), embora o mais comum seja que eles comecem com letras minúsculas mesmo. Exemplo de variável local: idade, nome_completo e data_de_nascimento.

Variáveis globais

Uma variável global é aquela que, uma vez criada, é acessível em qualquer parte do programa, existindo inclusive variáveis globais predefinidas no Ruby. A convenção de nomes diz que estas variáveis devem ter seu nome começando com $. $versao é um exemplo de nome de uma variável global.

Variáveis de instância

As variáveis de instância implementam os atributos de uma classe, e coletivamente representam o estado do objeto, sendo que cada objeto possui uma cópia de cada variável de instância definida na classe de forma independente dos outros objetos da mesma classe. A convenção do Ruby para os nomes de variáveis de instância é que elas comecem com @. Sendo assim, uma variável chamada @nome seria uma variável de instância.

Variáveis de classe

Algumas vezes, as classes precisam armazenar informações referentes a si próprias, ou seja, ter, de alguma forma, o seu próprio estado, e é aí que entram as variáveis de classe. Uma variável de classe é compartilhada entre todos os objetos desta classe, portanto podem ser usadas por cada um deles, e também pelos métodos de classe, sobre os quais falaremos no futuro. Além disso, dada uma certa classe, só existirá uma cópia de cada variável de classe dela, mesmo que existam dezenas de objetos desta classe. As variáveis de classe devem ter o seu nome começando com @@, como por exemplo a variável @@contador.

Algumas regras adicionais

Além das regras já mencionadas, depois do primeiro caractere do seu nome, uma varíavel só poder ter combinações de letras, números e o caractere de underscore. E quando uma variável possui mais de uma palavra no seu nome, as palavras são separadas pelo undescore. Além disso, o caractere após @ e @@ não pode ser um dígito, ou seja, @@1 e @2 são nomes de variáveis inválidos no Ruby.

E como fica isso tudo no irb?

No irb, podemos definir variáveis locais, globais, de instância e de classes, mesmo sem termos coisas como classes ou métodos. Para isto, basta aplicarmos as convenções de nome relativas a cada escopo.

Valores padrão

As variáveis de instância e globais possuem automaticamente nil como valores padrão, ou seja, você pode usar essas variáveis, por exemplo, imprimindo seus valores, mesmo que não tenha explicitamente atribuído nenhum valor para elas.

Já as variáveis locais e de classes precisam ser explicitamente inicializadas, caso contrário, quando você tentar utilizá-las acontecerá um erro. No caso das variáveis locais, o interpretador do Ruby pensará que você está tentando usar um método inexistente, já que os nomes de variáveis locais e métodos em parte seguem a mesma convenção de nomes. Já no caso das variáveis de classe, o interpretador conseguirá identificar que se tratam de variáveis de classe, gerando então a mensagem de erro apropriada, que no caso é a informação que variáveis de classe precisam ser inicializadas explicitamente.

Um último exemplo

Pra finalizar, abaixo há exemplos de todos os 4 escopos de variáveis do Ruby.

opcao = "Sim"
$versao = 1.0
@idade = 15
@@contador = 28

Acima temos, respectivamente, uma variável local, uma variável global, uma variável de instância e uma variável de classe.


Comentários Recentes | Posts Recentes


designed by: Website Builder | Coded by: Blog Directory | Provided by: Wedding photojournalism chicago
bottom