Image Image Image Image Image
Scroll to Top

Topo

Ruby

SWX Direto das trincheiras 03 – Campus Party, Podcasts e Forum de Inovação tecnológica

Em 13, fev 2014 | 28 Comentários | Em Blog, CMS, Código, Destaques, JavaScript, NodeJs, Ruby, Vídeos, Wordpress | Por Mike Lopes

Neste SWX Direto das trincheiras trazemos as novidades que rolaram na SWX, se perdeu alguma coisa confira:

  • SWX Labs 03 – Editais de Inovação: http://bit.ly/SWXLabs03
    • Bate papo com Marcelo Dósea, sobre Editais de Inovação, sua importância e como se preparar para participar.
  •  SWX Labs 04 – Planejamento: http://bit.ly/SWXLabs04
    • Neste podcast Benhun, gerente de projetos de SWX, fala sobre planejamento. São debatidos conceitos e dicas de como preparar um bom planejamento.
  • 5 formas de utilizar o google alerts para alavancar seu negócio ou carreira: http://bit.ly/GoogleAlerts5Dicas
    • No blog do CIO Market tem dicas interessantes de como aproveitar uma grande ferramenta do google, o Alerts.
  • Model em Ruby on Rails – Parte 02: http://bit.ly/NGczin
    • Segunda parte do artigo explicando um aspecto da aplicação da arquitetura MVC com Ruby on Rails.
  • Uma introdução ao gulp: http://bit.ly/1cCsR4S
    • Saiba mais sobre esse automatizador de tarefas baseado no node.js
  • Desvendando os “Custom Post Types”: http://bit.ly/1iMneoz
    • Para iniciantes e intermediários em wordpress entenderem melhor como personalizar o back end de posts no wordpress.
  • SWX na Startup and Makers da Campus Party 2014: http://bit.ly/1bPGgmy
    • Confira como foi a participação da SWX na Campus Party 2014.
  •  1º Fórum de Inovação, Propriedade Intelectual e Transferência de Tecnologia do IFS (FIPITT) – http://bit.ly/1nwdZqf
    • A SWX participa deste fórum como case de sucesso. Se vc estiver em Aracaju no dia 18/02 apareça no IFS e veja a palestra de Vinicius.

Tags | , , , , , , , , ,

SWX Labs 05 – Projeto 14 Bis

Em 10, fev 2014 | Sem Comentários | Em Blog, Cloud Computing, Código, Destaques, Rails, Ruby, Sistemas, SWX Labs | Por Mike Lopes

BisOn

No SWX Labs 05 Mike, Ighor, Tássio e principalmente Vinicius , falam sobre o principal projeto em curso na SWX, o 14 BIS.

Saiba a proposta do projeto, como ele surgiu, conseguiu financiamento e está sendo desenvolvido. Além disso, conheça uma história que fala sobre empreendedorismo e dedicação, e o saiba um pouco mais do dia a dia de uma Startup e de como executar um projeto de software.

Ouça o podcast clicando no play, se preferir faça o download

Links

Assine o feed do nosso podcast e não perca nenhum episódio: http://feeds.feedburner.com/SWXLabs

Se preferir, também estamos no Itunes Store

Gostou? Não gostou? Erramos algo? Sua opinião é muito importante para nós, por isso deixe seu comentário ou envie email para mike@swx.com.br

Temas abordados:

  • O que é o 14 BIS

    • Definição

    • CIO Market

    • Vantagens

  • Histórico

    • Surgimento da SWX

    • Insight: Problemas de instalação e manutenção de software para pequenas e médias empresas

    • Inspiração: Loja de aplicativos (Google Play e Apple Store)

    • Solução: Loja de aplicativos que automatiza a instalação de softwares

    • Histórico do desenvolvimento do 14 BIS

  • Processo de desenvolvimento do 14 BIS

    • Seleção de desenvolvedores

    • Andamento do desenvolvimento dos módulos

    • Importância da parceria com a Universidade Federal de Sergipe

  • 14 BIS na prática

    • Como funciona para comprador e fornecedor de software

    • Diferenciais competitivos

  • O futuro do 14 BIS

    • Consolidação dos grupos de projeto

    • Aumento das opções de infraestrutura de nuvem

    • Transformação do CIO Market em plataforma (plataforma como serviço)

 

 

 

Tags | , , , , , ,

22

jan
2014

Sem Comentários

Em Blog
Código
Rails
Ruby

Por Mike Lopes

Model em Ruby on Rails – Parte 02

Em 22, jan 2014 | Sem Comentários | Em Blog, Código, Rails, Ruby | Por Mike Lopes

* Por João Paulo

Veja a parte 01

ruby-on-rails

Um model é uma classe que herda da classe ActiveRecord::Base e está associada a uma tabela.

O arquivo do model possui o nome da tabela em minúsculo no singular (“nomedatabela.rb”) e a classe o nome em CamelCase (“class NomeDaTabela”).

É possível criar o model manualmente, porém o Rails possui um generate que cria o model, o migration e a tabela dinamicamente. Funciona no seguinte formato:

rails g model <Model> <Campo1>:tipo <Campo2>:tipo <Campon>:tipo

 ex.: A tabela “produtos”, gerada anteriormente, poderia ser gerada da seguinte forma: será gerada a tabela, o model e a migration pra ela.

rails g model Produto name:string

 Nota: Caso a tabela já tenha sido criada, é necessário adicionar o parâmetro “–force” no generate para reexecutar a migration.

 _mvc

Para acessar um campo pelo controller é necessário criar os métodos que irão ler e escrever o campo, por exemplo, para um campo “nome” ser lido, tem que ser criado o método “nome” e para gravar deverá ser criado o método “nome=”.

class table1 < ActiveRecord::Base

def nome

self[:nome]

end

def nome=(novoNome)

self[:nome] = novoNome

end

end

 

 Nota: É possível usar attr_accessor, attr_reader e attr_writer.

 Para definir um relacionamento no model é necessário chamar o método com o nome do relacionamento (belongs_to, has_one, has_many, …) e o nome na tabela. Esse relacionamento será feito a partir do id. Ex.:

class table1 < ActiveRecord::Base

belongs_to :table2

end

 

relacionará o campo “table2_id” da “table1” com o campo “id” da “table2”.

 Relacionamentos:

  • belongs_to (pertence à): Define que um registro de um model está ligado a um registro de outro model e pertence a ele numa relação “um pra um”, por exemplo, em  uma tabela com reitores e outra com universidades, “um reitor pertence a uma universidade”, assim a tabela “universidade” deverá ter um campo “reitor_id”.
  • has_one (“contém”): Define que um registro model contém outro de outro model numa relação “um pra um” (o contrário de belongs_to), no exemplo do belongs_to, temos que uma “universidade contém um reitor”.
  • has_many (“contém muitos”): Define que um registro de um model contém muitos registros de outro model. Por exemplo, um cliente pode ir a uma loja comprar vários produtos, assim à relação será “cliente contém muitos produtos”, logo a tabela “produtos_vendidos” terá um campo “cliente_id”.
  • has_and_belongs_to_many (“contém e pertence a vários”): Define que vários registros de um model está associado a vários de outro model. Por exemplo, em um sistema de vendas, existe uma tabela “pedidos” que associa vários registros da tabela “produtos” a um da tabela “cliente”, pois um cliente compra vários produtos; porém, também associa vários da tabela “clientes” a um da tabela “produtos”, pois um produto é comprado por vários clientes.

 

Validações:

 Em um model é necessário validar se os dados são válidos antes de salvar no banco de dados, para validar é necessário definir o método no formato:

“validates :<campo>, <validação>”.

 ex.: O campo “nome” da tabela “table1” será obrigatório.

class table1 < ActiveRecord::Base

validates :nome, presence: true

end

Existem vários helpers para validação, como, por exemplo, garantir que apenas números são esperados:

class table1 < ActiveRecord::Base

validates :value, numerically: true

end

Para mais helpers acesse: http://edgeguides.rubyonrails.org/active_record_validations.html#validation-helpers

É possível definir mensagens para caso ocorra um erro na validação, ou seja, para quando um valor passado não estiver de acordo com a validação:

class table1 < ActiveRecord::Base

validates :nome, presence: true, :message => “O nome é obrigatório.”

end

É possível definir a validação para uma determinada ação (create, update, …):

class table1 < ActiveRecord::Base

validates :nome, presence: true, on: :update

end

 

Validações por métodos customizados:

class table1 < ActiveRecord::Base

validate :método, on: :create

 

def metodo

if (campo1 > 10)

erros.add(:value_error, “O número tem que ser maior que 10”)

end

end

 

Informações sobre validações: http://edgeguides.rubyonrails.org/active_record_validations.html#validation-helpers

Documentação completa: http://api.rubyonrails.org/

* João Paulo é estudante de Computação e estagiário da SWX

Tags | , , , ,

15

jan
2014

Sem Comentários

Em Código
Rails
Ruby

Por Mike Lopes

Model em Ruby on Rails – Parte 01

Em 15, jan 2014 | Sem Comentários | Em Código, Rails, Ruby | Por Mike Lopes

Por João Paulo*
ruby-on-rails

O model é o componente da arquitetura de software MVC que faz a comunicação com o banco de dados (acessar e editar o banco de dados), ou seja, é no model que ficam as regras de negócio. O Rails conta com uma biblioteca para o desenvolvimento dos models de forma rápida, segura e organizada, essa biblioteca é chamada de ActiveRecord. No Rails, o model faz referências a uma tabela no banco, logo se existir um model, existe uma tabela associada a ele (essa é a ideia básica, mas não uma regra, pois é possível ter um model não associado a uma tabela).

É possível criar uma tabela manualmente, porém para alterá-la é necessário alterar manualmente em cada máquina que estiver o projeto, o que torna um processo trabalhoso, então, com o objetivo de  resolver esse problema, o Rails possui o ActiveRecord::Migrations que uma classe do ActiveRecord que define a tabela de forma que cada alteração seja facilmente enviada a todas as máquinas com o projeto. O modelo abaixo é de uma migration (nome dado a classe que herda de ActiveRecord::Migrations) em que é criada uma tabela chamada “produtos” e um campo “nome”:

ActiveRecord

class CreateProductos < ActiveRecord::Migration
	def change
		create table :produtos do |t|
			t.string :nome
		end
	end
end

O método change suporta:

  • add_column

  • add_index

  • add_reference

  • add_timestamps

  • create_table

  • create_join_table

  • drop_table (must supply a block)

  • drop_join_table (must supply a block)

  • remove_timestamps

  • rename_column

  • rename_index

  • remove_reference

  • rename_table

As migrations ficam salvas como: db/migrate/<timestamp>_<migration>.rb.

O comando “rake db:migrate” executa, no console, as migrations que ainda não foram executadas.

Para mais informações sobre migrations: http://guides.rubyonrails.org/migrations.html

É possível gerar, de forma dinâmica, uma migration a partir do console.

Abaixo estão apresentados alguns comandos:

Criar tabela:

rails g migration Create<Tabela> < campo1>:tipo <campo2>:tipo <campon>:tipo

Ex.: será criada uma migration chamada “CreateProducts” com o nome “products”:

rails g migration CreateProducts name:string

Adicionar coluna em uma tabela (depois da tabela ter sido criada):

rails g migration Add<Coluna>To<Tabela> <nome_da_coluna>:tipo

Ex.: será criada uma migration “AddRefToProducts” que acrescentará uma coluna chamada “ref” a tabela “products”:

rails g migration AddRefToProducts ref:string

Nota: é possível usar “rails generate…” ou simplesmente “rails g…”, pois eles são equivalentes.

Para mais informações sobre o rails generate acesse: http://guides.rubyonrails.org/migrations.html#creating-a-migration

* João Paulo é estudante de Computação e estagiário da SWX

Tags | , ,

20

maio
2012

Sem Comentários

Em Blog
Ruby

Por Allison

Como implementar uma aplicação Cliente-Servidor com Sockets em Ruby

Em 20, maio 2012 | Sem Comentários | Em Blog, Ruby | Por Allison

Fonte: Samuel Vinicius/IMasters

Este é primeiro de vários artigos que irei publicar sobre Sockets em Ruby. Mas, antes de qualquer coisa, é conveniente dizer o que são Sockets:

A grosso modo, são as extremidades de um canal de comunicação bidirecional. Ou seja, você pode utilizar Sockets para fazer comunicação entre processos de uma máquina, entre máquinas diferentes e entre processos de máquinas diferentes.

O que iremos fazer?

Como este é o primeiro artigo sobre o tema, pretendo ir direto ao ponto, mostrando de forma simples como implementar uma aplicação Cliente-Servidor. Nessa aplicação, o cliente envia uma mensagem para o servidor e este responde, sendo a comunicação entre cliente e servidor realizada via Socket através do protocolo TCP.

Então, sem mais delongas, vamos aos códigos:

  • Servidor
 
# file server.rb
require 'socket'
 
server = TCPServer.open(3001)  # Abre socket em escuta na porta 3001
loop { # o servidor nunca morre, fica sempre executando
client = server.accept      # aceita conexão do cliente
msg_cliente = client.recvfrom( 10000 ) # recebe mensagem - 10000 bytes - do cliente
 
puts  "Mensagem do cliente: #{msg_cliente}" # imprime a mensagem do cliente no servidor
client.puts "Ola cliente eu, o servidor, recebi sua mensagem" #envia uma mensagem ao cliente
client.close # fecha conexão
}
  • Cliente
# file client.rb
require 'socket'
 
server = TCPSocket.open('localhost', 3001) # conecta ao servidor na porta 3001
server.puts "Ola servidor eu, o cliente, estou enviando uma mensagem" # envia mensagem para o servidor
 
resp = server.recvfrom( 10000 ) # recebe a mensagem -10000 bytes - do servidor
puts resp
 
server.close # Fecha a conexão com o servidor

Como rodar a aplicação?

Primeiro, salve o código do servidor em um arquivo .rb (por exemplo server.rb) e execute o arquivo – ruby server.rb. Nesse ponto, o servidor está esperando a conexão de um cliente. Agora salve o código do cliente de forma análoga e execute em outro terminal, de modo que cliente e servidor sejam rodados ao mesmo tempo. A partir de então, o cliente envia uma mensagem ao servidor e o servidor responde.

Este é um exemplo simples do que pode ser feito com Sockets. Espero que te ajude em algo.

***

Referência: http://www.tutorialspoint.com/ruby/ruby_socket_programming.htm

Tags | , , , ,

07

maio
2012

Sem Comentários

Em Blog
Ruby

Por Allison

Manipulando arquivos com Ruby

Em 07, maio 2012 | Sem Comentários | Em Blog, Ruby | Por Allison

Fonte: Samuel Vinicius/IMasters

Fonte Original: http://www.techotopia.com/index.php/Working_with_Files_in_Ruby

O Ruby tem um modo muito fácil para manipular arquivos. Neste artigo, vamos ver os principais métodos para manipular arquivos de texto plano.

  • Abrindo arquivos:
arq = File.new("arquivo.txt", "modo_de_abertura") # abri o arquivo em modo "modo_de_abertura
  • Modos de abertura:

r – Abre o arquivo para leitura;

w – Abre o arquivo para escrita;

a – Anexa ao final do arquivo, caso você queira escrever no final do arquivo;

r+ – Abre o arquivo para leitura e escrita;

w+ – Cria um arquivo vazio para leitura e escrita;

a+ – Abre o arquivo para leitura e anexação, ou seja, você pode ler qualquer parte do arquivo, mas só pode escrever no final do arquivo.

  • Lendo arquivos:
a = File.readlines("arquivo.txt") # => ["Blog sobre Ruby on Rails.\n", "\n", "Possui tutoriais, dicas, criticas e muito mais sobre o framework mais comentado da atualidade!\n"

Como pode ver, esse código devolve um vetor possuindo em cada elemento uma linha do arquivo.

  • Lendo os caracteres do arquivo:
arq = File.open("arquivo.txt")
arq.getc.chr #=> "B"
arq.getc.chr #=> "l"
arq.getc.chr #=> "o"
arq.getc.chr #=> "g"
arq.getc.chr #=> " "
  • Escrevendo em arquivos:
arq = File.new("arquivo.txt", "w") # abri o arquivo em modo de escrita
arq.write "Rails Open" # escreve no arquivo e retorna quantos caracters exitem neste
arq.puts " - Ruby on Rails" # escreve no arquivo
arq.close unless file.closed? # se o arquivo não foi fechado: fechamos

O “unless file.closed?” foi colocado apenas para demonstrar o método “close?”. O “arq.close” já bastava para que ele funcionasse normalmente.

  • Renomeando arquivos:
File.rename("arquivo.txt", "arquivo_novo.txt")
  • Descobrindo a extensão do arquivo:
extensao = File.extname("arquivo_novo.txt") # => ".txt"
  • Informações sobre o arquivo

O arquivo realmente existe?

File.exists?("arquivo_novo.txt") #=> true

Ele pertence a determinado diretório?

File.directory?("/home/samuelvinicius") # => true

Qual o tamanho do arquivo em bytes?

File.size("arquivo_novo.txt") # => 24

O arquivo está vazio?

File.zero?("arquivo_novo.txt") #=> false

Qual a data de criação, de última modificação e de último acesso ao arquivo?

File.ctime("arquivo_novo.txt") #=> Tue Jan 26 16:20:36 -0300 2010
File.mtime("arquivo_novo.txt") #=> Tue Jan 26 16:27:41 -0300 2010
File.atime("arquivo_novo.txt") #=> Tue Jan 26 16:27:42 -0300 2010

Posiciona em um ponto do arquivo:

arq = File.open('local_filename', 'r') # abri o arquivo em modo de leitura
arq.seek(2, IO::SEEK_SET)  # aponta pra o byte 2 do arquivo
puts f.readline # imprime os caracteres da linha a partir do byte 2

Tags | , ,

23

abr
2012

Sem Comentários

Em Blog
Ruby

Por Allison

Atualização para Ruby 1.9.3 corrige problema de segurança no RubyGems

Em 23, abr 2012 | Sem Comentários | Em Blog, Ruby | Por Allison

Fonte:IMasters

Com informações de The H

A equipe de desenvolvimento do Ruby publicou uma atualização para a série 1.9.3, chamada de 1.9.3-p194, da sua linguagem de programação para corrigir uma vulnerabilidade encontrada no framework de gerenciamento de pacote RubyGems.

O problema causava falha na verificação do servidor SSL para repositórios remotos. Ele foi corrigido ao desaprovar redirecionamentos de conexões https para http, ao habilitar a verificação de certificados do servidor SSL em uma versão atualizada do RubyGems, a 1.8.23. Mais detalhes podem ser encontrados aqui.

Mais informações sobre a atualização, incluindo uma lista de correções de bugs, podem ser encontradas no anúncio oficial de lançamento e no change log. O Ruby 1.9.3-p194 está disponível para download no site do projeto.

Tags | , ,

10

abr
2012

Sem Comentários

Em Blog
Rails
Ruby

Por Allison

Puma, novo servidor web para Ruby, é disponibilizado

Em 10, abr 2012 | Sem Comentários | Em Blog, Rails, Ruby | Por Allison

Fonte: IMasters

Com informações de The H

A especialista em Ruby on Rails Platform-as-a-Service, Engine Yard, divulgou um novo servidor web para Ruby, que recebeu o nome de Puma. De acordo com seus desenvolvedores, o Puma foi criado como uma alternativa para WEBrick e Mongrel, e foi construído para ter melhor desempenho e para lidar com concorrência.

A novidade trabalha com qualquer aplicativo que suporte a interface Rack, além de processar requisições usando o Ragel, uma extensão otimizada em C, que oferece rápida análise do protocolo HTTP 1.1, atrás do qual oferece a solicitação em uma thread a partir de uma pool de threads. O Puma foi feito para ser um servidor “go-to” para Rubinius, e também trabalha com JRuby and Ruby MRI.

Mais informações sobre o Puma, incluindo um guia e benchmarks, podem ser encontrados no site do projeto e neste link. O código fonte do novo servidor web está hospedado no GitHub.

Tags | , , ,

10

abr
2012

Sem Comentários

Em Blog
CSS
Rails
Ruby

Por Allison

Como gerar gráficos no Rails com o CSS Graphs

Em 10, abr 2012 | Sem Comentários | Em Blog, CSS, Rails, Ruby | Por Allison

Fonte: Samuel Vinicius/IMasters

Post Original http://nubyonrails.com/pages/css_graphs

O CSS Graphs é um bom plugin para quem deseja gerar gráficos no Ruby on Rails usando apenas CSS. Para quem ainda tem alguma dúvida, veja como utilizá-lo:

Instalação

./script/plugin install http://topfunky.net/svn/plugins/css_graphs

Como usar

Para usá-lo, o seguinte código basta:

<%= bar_graph  [ ['Rails', 24],
                    ['Open', 9],
                    ['Css', 81],
                    ['Gráficos', 57],
                    ['Samuel', 42]] %>

Ou:

<%= complex_bar_graph  [ ['Rails', 24],
                  ['Open', 9],
                  ['Css', 81],
                  ['Gráficos', 57],
                  ['Samuel', 42]]%>

Tags | , , , ,

30

mar
2012

Sem Comentários

Em Blog
Rails
Ruby

Por Allison

Segundo release candidate do Ruby on Rails 3.2.3 é lançado

Em 30, mar 2012 | Sem Comentários | Em Blog, Rails, Ruby | Por Allison

Fonte: IMasters

A equipe de desenvolvimento do Ruby on Rails anunciou hoje a chegada do segundo release candidate da versão 3.2.3.

O Rails 3.2.3 trouxe uma nova opção que permite que o usuário controle o comportamento de formulários remotos relacionados à geração authenticity_token. Aqueles que querem fragmentar seus formulários em cache verão que o token de autenticação também serão também serão armazenados em cache, o que não é aceitável. Entretanto, se esses formulários forem usados apenas com Ajax, é possível desabilitar a geração de token, porque ela será buscada com a meta tag.

Com a versão 3.2.3, há a opção de parar de gerar authenticity_token em formulários remotos, configurando config.action_view.embed_authenticity_token_in_remote_forms = false. Essa ação vai impedir o envio desses formulários com o javascript desabilitado. Caso a opção de não gerar o token em formulários remotos seja escolhida por padrão, é possível ainda explicitar :authenticity_token => true ao gerar o formulário para contornar essa configuração.

A opção padrão é true, o que significa que aplicativos já existentes não são afetados.

O RC inclui essa mudança no authenticity_token e duas correções para bugs. Caso não haja maiores impedimentos, a versão final deve ser liberada amanhã.

Detalhes sobre as mudanças que a nova versão traz podem ser encontrados no anúncio de lançamento.

Tags | , ,

20

mar
2012

Sem Comentários

Em Blog
Ruby

Por Allison

Como implementar uma aplicação cliente-servidor usando Sockets em Ruby

Em 20, mar 2012 | Sem Comentários | Em Blog, Ruby | Por Allison

Fonte: Samuel Vinicius/IMasters

Referência: http://www.tutorialspoint.com/ruby/ruby_socket_programming.htm

Este é primeiro de vários artigos que irei publicar sobre Sockets em Ruby. Mas antes de qualquer coisa, é conveniente dizer o que são Sockets:

A grosso modo, são as extremidades de um canal de comunicação bidirecional. Ou seja, você pode utilizar Sockets para fazer comunicação entre processos de uma máquina, entre máquinas diferentes e entre processos de máquinas diferentes.

O que iremos fazer?

Como este é o primeiro artigo sobre o tema, pretendo ir direto ao ponto, mostrando, de forma simples, como implementar uma aplicação cliente-servidor. Nela, o cliente envia uma mensagem para o servidor e este responde. Sendo a comunicação entre cliente e servidor realizada via Socket, através do protocolo TCP.

Então, sem mais delongas. Vamos aos códigos:

Servidor

# file server.rb
require 'socket'

server = TCPServer.open(3001)  # Abre socket em escuta na porta 3001
loop { # o servidor nunca morre, fica sempre executando
client = server.accept      # aceita conexão do cliente
msg_cliente = client.recvfrom( 10000 ) # recebe mensagem - 10000 bytes - do cliente

puts  "Mensagem do cliente: #{msg_cliente}" # imprime a mensagem do cliente no servidor
client.puts "Ola cliente eu, o servidor, recebi sua mensagem" #envia uma mensagem ao cliente
client.close # fecha conexão
}

Cliente

# file client.rb
require 'socket'

server = TCPSocket.open('localhost', 3001) # conecta ao servidor na porta 3001
server.puts "Ola servidor eu, o cliente, estou enviando uma mensagem" # envia mensagem para o servidor

resp = server.recvfrom( 10000 ) # recebe a mensagem -10000 bytes - do servidor
puts resp

server.close # Fecha a conexão com o servidor

Como rodar a aplicação?

Primeiro, salve o código do servidor em um arquivo .rb – por exemplo server.rb – e execute o arquivo – ruby server.rb. Neste ponto, o servidor está esperando a conexão de um cliente. Agora salve o código do cliente de forma análoga e execute em outro terminal de modo que cliente e servidor sejam rodados ao mesmo tempo. A partir de então, o cliente envia uma mensagem ao servidor e o servidor responde.

Este é um exemplo simples do que pode ser feito com Sockets, espero que te ajude em algo.

Tags | , , , ,

14

mar
2012

Sem Comentários

Em Blog
Ruby

Por Allison

IDEs para Ruby, um resumo das novidades

Em 14, mar 2012 | Sem Comentários | Em Blog, Ruby | Por Allison

Fonte: Mirko Stocker/Robison Tesini/InfoQ

A JetBrains lançou uma nova versão de sua IDE para Ruby, o RubyMine 4. O foco de versão anterior, 3.0, estava no suporte a Rails 3, cobertura de código e melhoria de depuração. O RubyMine 4 tem desempenho melhorado e aperfeiçoamentos em várias áreas. Do release notes:

A nova arquitetura da IDE permite que ações sejam executadas assincronamente para evitar bloqueios de memória. Por exemplo, a funcionalidade de inspeção de código (Inspect Code) agora roda até quatro vezes mais rápido. […] A interface do RubyMine foi reestruturada significantemente para ficar mais compacta, moderna e confortável no suporte a todas as plataformas. O menu principal foi reorganizado, um novo visual para a barra de navegação, abas de edição foram melhoradas e mais.

Outra área que recebeu muita atenção nesta versão é análise estática e a navegação pelo código fonte. Por exemplo, a relação entre as classes pode ser mostrada em um diagrama UML; uma visualização de Estrutura e Hierarquia mostra subtipos e métodos herdados; e a complementação de código e a navegação agora funcionam também com Gems com extensão nativa.

A inspeção de código também foi melhorada, códigos que não seguem o Guia de estilo Ruby são destacados e acertos rápidos podem ser utilizados para corrigir inconsistências; e o novo método de refatoração inline substitui uma invocação de um método pelo corpo desse método. O blog do RubyMine posta regularmente dicas sobre como utilizar a nova IDE de maneira mais produtiva e é um ótimo recurso para iniciantes.

Além do Ruby, o RubyMine vem com suporte a outras linguagens e dialetos como CoffeeScript, HAML, SCSS e LESS. Código em CoffeeScript agora pode ser compilado para JavaScript diretamente na IDE.

O RubyMine está disponível em uma edição de avaliação de 30 dias. Licenças profissionais custam USD$149, e licenças pessoais estão disponíveis a USD$69. Projetos de código aberto ou usuários educacionais podem solicitar uma licença gratuita.

Ruby de volta ao NetBeans

Os usuários do NetBeans, do qual o suporte oficial a Ruby foi interrompido no ano passado, ficarão aliviados em saber que Tom Enebo, do time do JRuby, lançou uma versão preview para o NetBeans 7.1 com atualizações no suporte a Ruby. Tom falou sobre a razão de o antigo suporte a Ruby do NetBeans 7.0 não funcionar mais no 7.1:

O NetBeans 7.1 atualizou alguns componentes, e um destes componentes foi o html.editor.lib. O suporte a Ruby era dependente da versão 1, porém o NetBeans 7.1 agora inclui somente a versão 2.

O trabalho de Tom Enebo soluciona parte desse problema e já torna possível programar em Ruby com a versão mais recente do NetBeans.

Tags | , , , , ,