Flexigrid with rubyOnRails
Pessoal publiquei o plugin VL_Flexigrid (baseado no componente Flexigrid) no meu blog por isso to divulgando aqui no amapaOnRails.
Esse é o primeiro de três possíveis artigos usando o mesmo plugin, esporo que gostem.
att,
Um pouco de Ruby e Rails
Olá pessoal, meu nome é Vinícius Luiz e essa é minha primeira participação dentro da comunidade Ruby. Resolvi montar esse material por que é a forma que tenho de fixar melhor o que to aprendendo. Comecei a poucos o estudo de Ruby e de Rails, esse pouco gostaria de compartilhar com mais alguém então por que não com todos? Nesse artigo não vou me aprofundar em uma aplicação Rails até por que não disponho de tanto conhecimento assim. Vou falar um pouco sobre RoR, sua instalação, atualização e, logicamente, falarei um pouco sobre Ruby (nessa ordem). Serei bastante direto e meus exemplos serão para Windows e Linux, por isso.
O que é RoR?
RoR é um acrônimo para RubyOnRails, ta certo?. Esse, na realidade, é um poderoso framework open-source de desenvolvimento web criado para construir, de forma muito rápida, aplicações web de alta qualidade. É bastante simples de instalar, seu único pré-requisito é o próprio Ruby instalado e configurado na máquina local, ai o resto é resto.
Como disse, o RoR precisa do Ruby por isso, pra inicio de conversa vamos instalar o Ruby que é uma linguagem de programação assim como java, dotnet, python, etc… Se você for usuário Microsoft, abaixo tem um link pra baixar um instalador da linguagem Ruby, o one-click install, no windows. Nele não existe segredo, é só ir pressionando próximo até aparece o fechar e pronto “Ruby funcionando!”.
http://rubyinstaller.rubyforge.org/wiki/wiki.pl
Para facilitar o entendimento desse micro-artigo, vou trabalhar com o windows XP e a distribuição Ubuntu do Linux. Os exemplos serão mostrados em ambos os sistemas operacionais, até por que uso ambos.
Continuando, pra quem usa linux a instalação do Ruby é meio diferente, mesmo assim, sem mistério. Como disse, eu uso Ubuntu, mas acredito que seja o mesmo para as demais distribuições por isso, faça o seguinte. Abra um terminal e digite:
sudo apt-get install ruby
Esse comando instala e configura o Ruby como se fosse o one-click install do windows, muito fácil ne mesmo?.
Agora que temos o Ruby instalado, basta fazer o mesmo com o Rails por isso vamos da seguinte maneira. Novamente, será exibido os passos para Ubuntu e posteriormente Windows, digite no terminal os comandos seguintes:
[Linux Ubuntu]
sudo gem install rails -y
sudo gem install sqlite3-ruby
sudo apt-get install libopenssl-ruby1.8
[Windows XP]
gem install rails -y
gem install sqlite3-ruby
Aguarde um tempinho (não se preocupe caso aparente que o comando não respondeu ou esta demorando um pouco, o sistema esta catalogando todas as dependências necessárias para o download, terminando, será exibidos a listagem com o que ta sendo instalado) e pronto. Muito complicado né mesmo? O primeiro comando instala o RoR com todas as suas dependências (pra isso o –y, em futuras versões do Ruby esse parâmetro não será necessário). O segundo comando instala um adaptador que vai possibilitar nossa aplicação conversar com um banco sqlite3 (é possível baixar o adaptador sem o banco está instalado, mas o sistema só vai rodar se encontrar o banco por isso instale-o também). O último comando só vale pra Linux, ele vai instalar a biblioteca openssl usada pelo mongrel para iniciar o serviço, quando não tem, da pau.
DICA: Se você usa proxy pra acessar a internet, no Windows precisa configurar uma variável para que o RubyGems possa baixar as gems. Faça o seguinte:
a) acesse as propriedades de meu computador;
b) depois avançado>variáveis de ambiente;
c) nela você vai criar uma variável chamada HTTP_PROXY e o valor dela devera ser http://<ip_proxy>:<porta_proxy>
d) abra novamente o terminal para que a modificação tenha efeito e pronto.
Continuando, vamos testar nosso ambiente. Uma forma bastante simples e pratica de fazer isso, por sinal muito parecida com a do java (javac), é digitando no terminal:
ruby -v
rails -v
Tanto pra Windows quanto Linux. O primeiro comando informa a versão do Ruby que esta instalada. O segundo informa a versão do Rails que foi baixada. Os dois comandos respondendo direitinho prova que ta tudo certinho com nossos passos até então (qual quer problema reveja os passos novamente).
Bom, como já temos os dois prontos, podemos fazer um teste mais rigoroso criando uma aplicação de demonstração para ver a coisa no vera mesmo.
Criando um Demo em Rails
Antes de tudo, você que usa Windows precisa realizar mais um passo chato configurando o Ruby na variável Path do sistema. Acesse as propriedades de Meu Computador, avançado>variáveis de ambiente e acrescente a seguinte instrução dentro da variável path.
C:\ruby\bin
O endereço tem de ser o da instalação do Ruby, coloque a unidade C: por que é o padrão da instalação. Após isso, feche o terminal para que ele re-carregue todas as configurações e pronto.
Crie em algum lugar uma pasta para centralizar seus projetos (isso não é um pré-requisito, mas deixa seu ambiente de trabalho mais organizado). Abra novamente o terminal de comandos (se você ainda estiver com o terminal anterior aberto, poderá usá-lo), por ele acesse a pasta de projetos Rails recém criada e digite:
rails Demo
Rails é o comando que vai criar sua aplicação, ele pede somente um parâmetro que é justo o nome do aplicativo. Esse comando instrui o Rails a criar um sistema web, note que ele não cria uma estrutura vazia. Isso acontece por que Rails segue uma serie de convenções para facilitar a vida de quem vai produzir sistemas. Uma dessas convenções é justamente a padronização do ambiente da aplicação por pastas especificas que ele próprio (RoR) se encarrega de gerenciar. Logicamente, você tem livre arbítrio para seguir suas próprias convenções e não as dele (RoR), só fique ciente que esse será um trabalho a mais que terá e você precisara gerenciar isso. Agora podemos acessar o demo e iniciar nosso primeiro sistema web digitando (a partir da pasta do projeto):
[Linux Ubuntu]
script/server
[Windows XP]
ruby script/server
Note que em um ambiente Windows, precisamos referenciar a variável de sistema Ruby. Agora vamos aponte o browse para o seguinte endereço:
http://localhost:3000
Se tudo correr direitinho, será exibido a pagina de boas vindas do projeto.
Como faço para atualizar meus projetos RoR?
Em vista de tudo pronto e funcionando, é bastante comum que você (programador) queira sempre esta com a versão mais atual de seu framework preferido. Com RoR não é diferente, mas existe uma condição para que isso ocorra. Alguns recursos do Ruby precisam se encontrar atualizados, por exemplo, RoR é instalado a partir de um gerenciador de pacotes do Ruby chamado RubyGems, ele se encarrega de verificar e baixar todas as dependências do RoR incluindo RDoc e, por ai vai. RubyGems é um recurso do Ruby muito usado, por isso sempre é bom da uma atualizada nele até por que versões mais recentes dos pacotes gems sempre irão pedir a versão mais atual do RubyGems e isso inclui RoR. A boa notícia é que fica fácil atualizar seus recursos depois RubyGems está pronto pra isso, basta certificar-se de que o sistema será atualizado corretamente a partir dos comandos:
[Linux Ubuntu]
sudo gem update –system
sudo gem install rails
sudo gem update rake
sudo gem update sqlite3-ruby
[Windwos XP]
gem update –system
gem install rails
gem update rake
gem update sqlite3-ruby
Novamente, tanto Linux quanto Windows. O primeiro comando atualiza o próprio sistema RubyGems (que é exigido pela versão mais recente do RoR) como já mencionado. O segundo comando instala Rails mais recente com todos os novos recursos. O terceiro comando atualiza a ferramenta Rake (um construtor de aplicações Ruby similar ao make do Linux). Por fim, o último comando vai atualizar o adaptador sqlite3 que foi instalado (você pode ter vários adaptadores, um para cada banco preferido seu).
Novamente, a execução dos comandos pode levar um tempinho para ser concluído, não se preocupe caso não aparece nenhum texto de imediato. Quando estiver finalizado, você poderá listar todas as gems instaladas usando o comando:
gem list
Esse é um comando do Ruby por isso pode ser rodado a qualquer instante. Existe um outro que possibilita você ler a documentação de todas as gems instaladas:
gem server
Executando essa instrução acima, você estará iniciando um servidor web na porta 8808 que dará acesso à documentação das gems de instaladas. Você verá uma lista des gems com links para o RDoc web e uma breve descrição da gem. O endereço para o server é:
http://localhost:8808/
Depois que estiver com a versão mais recente de RoR, pode acontecer que algumas de suas aplicações não funcionem. Esse é um problema muito simples de resolver por tanto faça o seguinte:
a) Acesse a arquivo config/environment.rb de sua aplicação;
b) Altera o valor da variável RAILS_GEM_VERSION para a nova versão do RoR que você quer usar, tipo: de RAILS_GEM_VERSION = ‘2.0.0′ para RAILS_GEM_VERSION = ‘2.1.2’.
O Ruby!
Até esse momento vimos um pouco sobre RoR. Nada muito detalhado, mas com algumas informações fundamentas pra quem ta iniciando. RubyOnRails é um Framework muito poderoso que não seria capaz de fazer o que faz se não fosse a linguagem de programação Ruby. Ruby é uma linguagem tão boa que hoje já temos empresas grandes como a Sun investindo nela. Existe até um projeto pouco conhecido chamado JRuby (eu disse pouco?) que vem tomando espaço de uns outros menos barulhentos mas muito legais como o Groovy (pra quem quiser saber mais, abaixo segue um post com 33 pontos de comparação para essas linguagens), detalhe, não estamos aqui para falar disso por isso deixaremos esses discurções para quem sabe mais do assunto por tanto.
http://www.javafree.org/news/view.jf?idNew=3118
Quando instalamos o Ruby no computador para testar o RoR, junto com ele foi instalado um programinha muito bom para se testar código, o irb (interactive Ruby shell), que nos possibilita chama-lo e já ir colocando códigos e testando. Nada muito complexo, excelente pra quem ta iniciando assim como eu. Agora, antes de tudo, vamos fazer algumas modificações no ambiente para facilitar e dar um pouco mais de agilidade as nossas vidas (essa configuração só se aplica ao Linux pos não sei como fazer isso no Windows, mas quem souber e quiser contribuir, sinta-se a vontade para postar aqui).
Acesse o diretório de seu usuário na pasta /home/, por exemplo:
/home/vinicius/
Dentro digite:
sudo gedit .irbrc
Será exibido um documento em branco, nele acrescente a linha:
require ‘irb/completion’
Ok, a partir de agora seu irb possui suporte para auto-complemento usando a tecla de atalho tab, mas isso ainda não esta funcionando pos falta um passo a ser seguido. Procure a pasta onde o Ruby foi instalando, no meu pc ela fica em /etc/lib/ruby. Pelo terminal, a partir dela faço o seguinte, localizo a pasta 1.8.2 que possui os arquivos rb depois digito o comando:
Rdoc *.rb
Esse comando vai gera a documentação do Core do Ruby a partir dos arquivos rb. Após essa trabalheira toda, agora sim poderemos utilizar o irb com recursos de auto-complemento. Vamos fazer só um teste rápido pra validar o que fizemos, acesse o terminal e digite:
irb
String.<PRECIONE_TAB>
A instruição irb vai iniciar a execução do programa IRB. Quando, nele, digitamos o nome de uma classe do Ruby e chamamos o método methods da classe, é exibo um array contendo todos os métodos dessa classe. Se os passos feitos antes do inicio do irb funcionaram, nós poderemos escrever, por exemplo, o nome de uma classe qualquer mais o ponto e pressione o TAB duas vezes (bem como o exemplo acima) que os métodos serão exibidos lado a lado na tela.
Beleza, tudo certo para nosso pequeno Tour? Vamos esquecer um pouquinho o que vimos em RoR e nos focarmos no Ruby por isso, antes de mais nada, é preciso entender que em Ruby tudo é um objeto e quando eu falo tudo me refiro a tudo mesmo (ta bom, tem algumas exceções que fogem a regra tipo variável, mixin e blocos) por isso, qualquer coisa que se faça esta sendo feito em um objeto. Por exemplo, vamos criar um método e uma classe, hum!! Como criar um método e uma classe?
Como disse, o IRB é um ambiente de teste que possibilita testar tudo o que vem na cabeça por isso uma definição de método tipo:
def meu_nome
puts “vinicius luiz”
end
ou uma declaração de classe tipo:
class Teste1
end
São coisas totalmente aceitas dentro dele. Não se preocupe em “onde que ele ta pondo essas coisas” ou “quando vai precisar compilar”. Ruby é uma linguagem totalmente dinâmica por isso o que você escrever no IRB já estará pronto para uso.
Agora que temos uma definição de método e uma declaração de classe, vamos ilustrar so mais um pouquinho e não se preocupe se o que vir for meio estranho. Como disse, em Ruby tudo é muito simples inclusive declarações de classe. Class em si é um objeto por isso podemos criar outras classes da seguinte maneira (esse é um modo muito diferente do convencional):
Teste2 = Class.new
Isso não é um bicho de sete cabeças pra se entender correto? O que fizemos foi simplesmente criar uma classe nova instanciando ela do objeto Class, simples não?
Agora, temos um método que vai imprimir uma string “vinicius luiz” quando for chamado no irb. Como o irb e um objeto Object, o que estamos fazendo na realidade é uma chamada em Object, exemplo (agora segue uma lista):
meu_nome
self.meu_nome
Object.meu_nome
Note a primeira chamada não é mais segredo já a segunda e a terceira! Como você percebeu, o método criado na realidade foi enfiado (sutil não?) no objeto Object e como IRB herda Object, também acessa esse mesmo método novo. Até o momento não vimos nada complicado, mas temos uma terceira forma de se chamar essa mesma função, digite:
Kernel.meu_nome
Kernel? Mas quem e esse Kernel afinal? Calma, eu explico! Kernel é um modulo que pega os dados postos no IRB e coloca em Object. Qualquer método que esteja sendo criado no IRB (na realidade em qualquer lugar no ruby) ficara acessível através do contexto de qualquer classe, do Kernel ou de Object, deu pra entender isso? Humm, pêra ae! Eu disse qualquer classe?
Ta lembrado das classes criadas no inicio, agora é à hora de usá-las, vamos fazer o seguinte:
Teste1.meu_nome
Teste2.meu_nome
Antes de prosseguir, permita me fazer uma pergunta. “Quem nasceu primeiro, o ovo ou a galinha?”, ehhh, to brincando. Bom, continuando.
Como toda classe por padrão herda de um Objeto expecifico (e já estamos cansados de saber disso), em Ruby não é diferente por isso nossas classes também, visto que herdam do objeto Object, terão acesso à função meu_nome.
Como deu pra ver, tudo em Ruby é um objeto incluindo qualquer coisa pôs métodos, variareis, etc. definidos em qualquer lugar não são coisas dispersas em um espaço estático e acessível sem vinculação com nada. Tudo que for definido será inserido em Object que por sua vez deriva pro o IRB, pro Kernel e pra qualquer outro objeto.
Acho que da pra dizer que o Kernel no ruby seria como o java.lang do java (corrijam me se estiver errado). Uma biblioteca importada por padrão, com métodos acessíveis sem a necessidade de informar o nome de sua classe.
Conclusão
Bom pessoal, falei um pouco de RoR, sua instalação, atualização e algumas outras pequenas configurações que existem pra serem feitas nos diferentes ambientes testados. Acho que não teve muita coisa nova pos o que mostrei já deve ta mais que batido.
Pode acontecer deu ter me equivocado? Pode sim, sem nenhum problema por isso me corrigirem se for o caso pos como disse no inicio, esse material foi pra fixar mais as idéias.
Estudem Ruby, não se prendam somente em RoR, RoR, RoR. É um bom framework? Sim, com toda certeza um dos melhores, mas Ruby a meu ver é muito mais essencial pra quem ta iniciando. Existem materiais excelentes na internet, quem poder e quiser baixar, eles estão ai aos milhares por isso, colocarei só um aqui pra vocês.
http://rapidlibrary.com/index.php?q=ruby+way
Existem alguns livros nacionais muito legais como “Ruby: desvendando a linguagem” (esse particularmente eu aconselho) e outros mais. Agora, quem quiser postar alguma coisa, sou todo ouvidos hehehehe.
Cresce a Comunidade Amapaense de RubyonRails!
E a linguagem Ruby vem cativando mais programadores no Amapá, agora o time cresce com o Pessoal da InovaSoft.
No sábado dia 1/11/2008, fizemos uma reunião e divilgação da Comunidade AmapáOnRails na sede da InovaSoft, onde estavam os programadores Vinicius, Anderson, Huan, Veronica, Robson.
Falamos um pouco sobre programação e outros assuntos legais, vimos o Ruby fazendo suas mágicas ao vivo e a cores, eu também mostrei um pouco do meu KungFu usando a linguagem Ruby. Bem foi um sábado legal. Agradeço ao pessoal que apoia a comunidade e convido todas a usarem Ruby. Valeu!!
Metaclasse em Ruby!
Esse assunto é bem legal porém as vezes muito confuso vou tentar explica-lo sem confundir.
O que é uma Metaclasse?
Para que serve uma Metaclasse?
Bem antes vamos falar de Classes e Objetos. Vamos fazer uma classe simples para usarmos como exemplo.
Uma Classe é composta de atributos e métodos, entao todos os Objetos de uma classe tem em comum seus atributos e métodos. Porém cada objetos tem seus atributos específicos, ou seja, se uma classe tem o atributo “nome” todos os objetos teram um nome, so que para cada objetos o nome é particular, ex. Joao, Maria, Jose, etc. sendo assim cada Objeto tem seu próprio atributo e é individual. Já os métodos, sao todos iguais para todos os objetos, a ação de um método é sempre igual em todos os objetos.
E o que isso implica? É que quando se instancia um Objeto, o Objeto é colocado em memória e lá é reservado espaço de memória para todos seus atributos, isso é importante para que possamos guardar valores individuais para cada Objeto. Porém os métodos são iguais a todos os Objetos e não faz sentido ocupar espaço em memória colocando para cada Objeto seus métodos é muito mais inteligente colocar todos os métodos em um único Obejto e esses métodos serem usados por todos os Objetos da mesma Classe.
Bem este Objeto que guarda em sí todos os métodos de uma Classe chama-se Metaclasse! Em Ruby uma Metaclasse é um Objeto(constante) Singleton, que guarda em sí todos os métodos e representa a classe durante a execução do código.
Em miudos, em Ruby uma Metaclasse é um Objeto que representa a Classe, ou seja, uma espécie de procurador, ou executor do que está escrito na Classe. Estranho, mais é isso, lembrando que Classe nunca faz nada, pois em Orientação a Objetos só Objetos podem fazer algo e não Classe. Isso torna o ruby uma linguagem altamente Orientada a Objetos. Costuma-se dizer que em Ruby até as Classes são Objetos porém não é bem verdade Classes continuam sendo documentos e as Metaclasses é que são os Objetos que representão a Classe.
Fica Assim! Quando se escreve uma classe em Ruby automaticamente o interpretador cria um Objetos(Metaclasse) que representa essa Classe, este Objeto é uma constante por isso tem a primeira letra em maiúcula e é singleton, ou seja, só existe uma instancia em execução. Por fim não podemos deixa de lembrar que a Metaclasse é um Objeto, sendo um Objeto ele vem de uma classe, que é a classe “Class”, e tem atributos e métodos como qualquer Objeto. Vejamos:
Notem que no Objeto(metaclasse) que representa a Classe “Teste” não tem o método “falar”, isso porque ele não e da classe “Teste” e sim da classe “Class” e tem o métodos da sua classe. Mais o Objeto(metaclasse) guarda em si alguns métodos legais, como o método “new”.
Em algums linguagens de programação a criação de uma instacia de um objeto é feito pelo interpretador, já em Ruby a criação de uma instacia de um Objeto é feita pela sua Metaclasse, isso é ser Orientado a Objetos.
Bem classicamente o método “new” lê a documentação, ou seja a “Classe” e cria um Objeto com seus atributos em memória. Essa ação é realizada pelo método “new”. Sendo um método é possivel mudar seu comportamento, pensemos algo como.
- Primeiro abrir uma conexao com o Banco de dados
- Ir em uma tabela e coletar o nome de suas colunas
- depois criar um Objeto que tenha seus atributos representando essas colunas
- criar também todos os métodos de persistencia para essas informações no bando
Ficou mais legal assim o método “new”! heheh!
Olha que legal, em Ruby por a Metaclasse ser responsável pelo criação de Objetos, a Metaclasse tem em si um método “new”, sendo um método eu posso sobrescreve-lo e mudar seu comportamento natural, e colocar mais aqueles passos no método “new”, assim eu posso automatimente criar um Objeto que seja um modelo de Dados persistente em Banco de dados. legal isso. Acho que voces ja viram essa idéia no Activerecord do RubyonRails. Talvez voce esteja falando, poxa como é facil, aquela mágica todo é so isso!
Porém o Poder a Metaclasse vai muito além disso, vejamos outro exemplo classico e muito poderoso:
Vamos pensar em atributos. Para que seus atributos sejam Encapsulas corretametne é necessário que se tenha os métodos acessores. Métodos acessores, como o nome ja diz são os métodos que dão acesso ao atributo, os famosos métodos gets e sets, sempre chatos! Bem para criarmos um atributo e seus acessore a classe ficaria assim:
Bem assim é que se faz encapsulamento de atributos, é sempre a mesma coisa e sempre chata, agora pense em um objeto que tem vários atributos para cada atributo seus métodos acessores, isso é um tormento e não melhora em nada o código, pois sempre é meiro do mesmo jeito.
Deixando a chatisse dos métodos acessore de lado, e lembrando que nós temos uma Objeto(metaclasse) que faz as coisas para mim, porque não criarmos um método na Objeto(metaclasse) que escreva os métodos acessores para mim. Poxa isso seria mágico eu passaria a chatisse para o Objeto(metaclasse) fazer. Isso ja foi feito e é usado assim:
Existe o método “attr_acessor” escreve o Atributo e seus métodos acessores, este método é do Objeto(metaclasse).
Como existe o método “attr_accessor” existem vários outro metodos que nso ajuda a diminuir a aquntidade de código durante a programação. O mais legal de tudo é que voce pode escrever seus próprio métodos de ajuda, sei lá, alguma rotina que voce esteja reescrevendo, ou algo que de para automatizar é legal esse recurso, lembrabdo de nao esquecer do conseito DRY.
Bem acho que este artigo ta ficando muito cansativo e longo, vamos continuar vendo em outro artigo!
No proximo artigo veremos como colocar funcionalidades na Metaclass.
E onde fica os métodos dos objetos na metaclasse, e adicionar novos metodos de instancia,
Espero que estejam gostando do assunto, valeu!!
O Projeto Da Vinci VM!!

Da Vinci
A Proxima Grande Revolução da Informática!
De Tempos em Tempos acontecem algumas coisas que mudam o mundo de maneira tão grande que é impossível tentar prever as coisas depois da mudança, e também após a mudança fica dificil lembrar como viviamos sem ela. Bem são essas mudanças que mudam o rumo de nossas vidas e torna o mundo diferente.
Talvez voce esteja se perguntando, do que o IsaacGuerra ta falando! Que mudança é essa?

Revolução da Tecnologia
Sim eu vejo um projeto que pode mudar o modo em que programamos e tratamos a programação!
Só o simples pensamento de que a maioria das coisas que fazemos pode ser bem mais fácil, que tudo que criamos pode ser mais acessível, ja cria em mim um anseio e uma esperança que me faz ter curiosidade e um pouco de medo do futuro.
Bem vamos falar de programação!! de Código que é o que interessa!
Hoje com certeza vivemos uma mudança interessante mais muito timida da forma que programamos, com o aparecimento de linguagens mais gostosas como Ruby, Smalltalk, Phyton, etc.. Porém, como o Fabio King sempre diz, nao existe a linguagem completa que resolve tudo que agrega em si a solução total para todos os problemas e isso.
É isso que eu busco em uma liguagem, algo que eu possa nao escrer tudo em uma boa linguagem e sim que eu possa usar a linguagem certa na hora certa, onde tudo que eu fizer seja cambiavel entre elas, sem nenhum transtorno. Neste sentido eu busqui muito, hoje eu acedito que possamos fazer muita coisa em muitas linguagens legais, tais como C, C#, PHP, JAVA, RUBY, PHYTON, PERL, LISP, SMALLTALK, JAVASCRIPT, etc.. Em si toda linguagem faz alguma coisa de bom, agrega em amlgum ponto algo memorável e que ajuda o programador fazer algo.
Porem por mais que eu tenha procurado uma linguagem que faça tudo da melhor maneira ainda nao encontrei. Bem mais foi quando eu vi algumas coisas acontecerem meio timidas e elas foram se encaixando e mostrando que este sonho, o sonho de poder juntar tudo varias linguagens em uam só, nde seis Conponentes, APIs, Bibliotecas sejam cambiaves. Bem eu esperava a linguagem completa mais nao é isso que vai ser.
A Algum tempo a SUM a mantenedora do JAVA abriu o fonte de sua maquina virtual, isso nao foi bombastico nem muita novidade, porém, de alguma forma esse movimento esta mudando o mundo. Na verdade o JAVA e um conjunto de tecnologia sendo RunTime, SDK e linguagem, onde a pior parte de tudo isso com certeza e a linguagem, porém a Maquina Virtual ja tem mais de dez anos e muitos bilhoes de dolares de grandes empresas investidos em otimiza-la, com isso criu-se um ambiente seguro e confiável. Bem mais onde entra e revolução.
Notem que a JVM ja e Multiplataforma agora o grande esforço é que ela seja multilinguagem, onde todas linguagens de ante mao ganham o poder de serem multiplatafor, ganham também o poder e as otimizações do Ambiente Java, e por fim o melhor onde as APIs e bibliotecas ja escritas podem ser consumidas por qualquer Linguagem. Bem isso é legal e dizer que eu posso a partir do Phyton acessar um recurso escrito em Java, bem isso e legal, mais o mais legal e que algo escrito em Ruby seja acessivel em Java, e assim por diante, ou seja todos os recursos escritos habitarem um ambente comum e ser acessível por qualquer linguagem, com isso todo esforço será reusado.
Isso e diser que suas bibliotecas escritas hoje possam ser usadas nas proximas linguagens que vc quiser usar, e entendender que seu programa pode ser escrito por várias linguagens onde cada linguagem faça o que tem de melhor e por fim o seu sistema seja melhor.
Bem esse projeto ja existe e se chama “Da Vinci Machine Project”.
Uma linguagem que foi extremamente importante para o inicio do projeto Da Vinci foi Ruby com o JRuby, onde é possivel rodar aplicações Ruby sobre a VM Java, e mais legal e poder usar todas as bibliotecas escrita em Java em Ruby, bem é interessante também para equipes multidisciplinares, com a possibilidade de escrita em várias linguagens não obriga a equipe escrever tudo na mesma linguagem. Bem eu vou continuar esse assumto com mais dados tecnicos, falando mais sobre HotSpot, JIT, GC, etc.
Valeu!!!
Rails Summit - Chad Fowler
A incrivel capacidade de olhar além!

Talvez seja essa a melhor maneira de começar falando sobre Chad Fowler, em quanto todos se impressionavam com java e .NET ele se aventurou em linguagens desconhecidas como RUBY.
Eu sempre quiz conhece-lo, queria olhar pra ele, procurar algo diferente(um terceiro olho, sei la), algo que o fizesse ver tao longe, por minha surpresa eu fiquei frente a frente com Chad Fowler, e pude olhar e descobrir algo que me deixou chocado, descrobri que ele não tem nada de especial, nenhum olho magico, nenhum sexto sentido, mais pude ver um homem apaixonado por sua arte, isso me tranquilizou, apesar de ter perdido um herói ganhei um ídolo. Fiquei mais feliz assim!!
Bem Vamos ao que Chad Fowler disse no Rails Summit!
Ser Fantástico!!!
Não sei se consegui absorver tudo que ele disse, mais eu me esforcei ao máximo, e por fim ele queria que eu me tornasse fantástico(talvez tenha conseguido).
O que é ser fantástico? Fantástico e aquele membro da equipe que brilha e faz a equipe brilhar! E aquele programador que sempre consegue transformar o ato melancólico de programar em algo maravilhoso e singular.
Marketing Pessoal!
Não adianta ser o melhor programador do mundo se só você sabe disso, uma maneira fantástica de mostrar seu potencial em programação seja fazendo projetos OpenSource, com certeza quando você compartilha código todos descobrem o quanto você é magico e fantástico.
As vezes te falta uma grande idéia então a segunda dica é faça parte de algum projetos OpenSouce, seja colaborador de algum projeto que você se identifique.
Caso voce não tenha nenhum projeto que você se identifique ao ponto de participar do código ou ainda nao conheça o projeto ao ponto de ajudar com código, então, Documente e Divulgue ajude a documentar e divulgar algum projeto Opensouce, crie tutoriais, faça passo a passos, etc, divulgue!!
Caso voce nao possa fazer tutoriais, por não ser tão conhecedor do projeto, então Traduza Tutoriais ou Noticias ligados a projetos OpenSouce, com certeza ja exite muitos tutoriais escritos que muitos nao conseguem usar por estar em outra lingua, então traduza, divulgue.
Blog Pessoal!
Por fim crie urgentemente um blog pessoal! se voce ja tem, invista mais tempo invista sempre e a todo tempo, crie a cutura de escrever ao menos uma vez ao dia sobre sua experiencia, seja sucinto porem constante, eu tenho um amigo que esta se preparando para escrever uma artigo aqui no blog da comunidade, mais ja faz 3 meses, pois segundo ele, ele quer escrever o melhor artigo ja escrito, eheh, e por fim nao escreveu nada ainda, é muito melhor ser simples mais constante, acredite todos querem resolver problemas simples do dia dia, nao estão preocupados com a complexidade do universo, voce vai ajudar muito mais gente sendo constante.
Participe de Comunidades!
Participe de comunidades seja ativo, dedique tempo e recursos para crescimento dos grupos que acredite, faça Fóruns, faça divulgação em faculdades, em Escolas assemelhadas, seja ativo, use camisas que divulguem, chapeus, adesivos no carro, não seja exagerado, mais seja visível.
Estude Muito!
Por fim, por mais lindo que seja Ruby, o fato é que ele passará, entao nao adianta saber só Ruby, saiba mais, se possível sobre tudo aprenda a programar em outras linguagens, aprenda novas coisas, não só sobre informática aprenda sobre tudo, sobre política ou antipolítica, sobre barcos, sobre esportes sobre algo, seja feliz gaste tempo não fazendo nada, gaste tempo e dinheiro com filhos e mulher, gaste a si mesmo em tudo, pois nao adianta deixar nada de voce intacto para depois, aprenda algo que voce acha sem sentido, sei la, castelo de areia, pular de para quedas, é isso que vai te tornar diferente e especial mais por fim seja feliz.
Seja um Programador Fantástico!!!!!!
Bem acho que acabou, acredite não quiz dizer o que Chad Fowler disse, e sim o que entendi sobre o assunto, acho que ele deve ter falado mais sobre ser Fantático, algo mais sobre música, bem falou tudo diferente do que eu mais com o mesmo sentido, heheeh, bem por fim sejam Fantasticos!!! Valeu!
Conhecendo um pouco sobre a Linguagem Ruby!
O que é a Linguagem de programação Ruby?
Segundo Yukihiro Matsumoto, ou “Matz”, o criador da linguagem Ruby:
“Ruby é uma Linguagem de script interpretada para programação orienteada a objetos, de modo fácil e rápido. Ela tem vários recuros para processar arquivos de texto e para fazer tarefas de gerenciamento de sistemas. Ela é simples, direta ao ponto, extenssível e portável. Oh, preciso mensionar, é totalmente livre, o que significa não só livre de precisar pagar para usá-la, mais tambem a liberdade de usar, copiar, modificar e distribuí-la”
Pensamentos de Mats:
Para mim o propósito da vida é parcialmente em ter prazer. Programadores as vezes sentem prazer quando podem se concentrar na parte criativa da programação. Então Ruby foi projetado para fazer programadores felizes.
Matz começou a trabalhar no Ruby em 24 de fevereiro de 1993, a primeira versão alpha ficou pronta em dezembro de 1994. Até 1996, ele trabalhou sozinho, quando começou a se formar uma comunidade ao redor da linguagem. A partir daí, apesar de ainda fazer a maior parte do desenvolvimento sozinho, Matz passou a receber fixes e patches da comunidade.
Características da Linguagem
- Principio da Menor Surpresa
- Orientada a Objetos “de verdade” (nao como java “pseudoorientada”)
- Tipagem Dinamica
- Fortemente Tipada
- Mixins
- Clousures ou Blocos
- Continuations
- Bindings
Porque usar Ruby?
“Voce quer aproveitar a vida, não quer? Se conseguir terminar seu trabalho mais rápido e seu trabalho for divertido, isso é bom, não é? Esse é o proposito da vida, em parte. Sua vida é melhor.Quero solucionar problemas que encontro no cotidiano usando computadores, então preciso escrever programas. Usando Ruby, quero me concentrar nas coisas que faço, não nas regras mágicas da linguagem, como começar com public void alguma coisa alguma coisa para dizer “print hello world!”. Apenas quero dizer “print this!”. Não quero todas as diversas palavras mágicas. Quero me concentrar na tarefa. Essa é a idéia básica. Por isso tenho tentado fazer o código Ruby conciso e suscinto.” Mats
A Linguagem Ruby e com certeza uma excelente ferramenta para se fazer um bom programa, ela traz em si, um aglomerados de boas coisas de vá¡ria Linguagens, tais como Lisp, Perl, Python, Ada, Smaltalk, Eiffel, e muitas outras. Traz em sim o poder das linguagens Dinamicas, o poder da Orientaçao a Objetos, O Poder dos Mixins, O Poder dos Blocos, O poder dos Continuations e Binfings.
Se voce esta lendo este artigo é muito provavelmente que ja tenha ouvido falar na linguagem Ruby, talvez esteja se preguntando, “Será que devo estudar e aprender esta linguagem”, com toda certeza o meu conselho é que voce estude, mesmo que não tenha nenhuma pretenção de usá-la brevemente. A linguagem Ruby traz em si a proposta de tornar a ato de programar algo prazeroso e agradavél, contexto esses abandonado e despresado pelas outras linguagens, só isso ja bastaria para usá-la, porém, alem de tudo ela traz consigo uma comunidade forte de pensadores, não de somente usuários e sim de críticos que tornar o simples processo de aprender Ruby ainda mais edificador e agradável.
Nos proximos Artigos abordaremos as características Tecnicas da Linguagens
Fontes:
www.rubyonbr.org
www.akitaonrails.com
www.ruby-lang.org
simplesideias.com.br