Sabonete de Código Aberto

Leia Também:
- Aprenda com a música do Software Livre
- GNU/Macarrão - O código aberto na culinária
- César Brod, o Miguel de Icaza brasileiro!
- Propaganda da IBM sobre Linux
- Resposta ao FUD de um colunista da Microsoft Technet

Leia Também:
Interactive Ruby Shel (irb)
Vamos começar as aulas usando o irb. Um shell interativo no mesmo estilo do shell do Python. Ele vai ser útil para podermos testar os comandos e códigos para irmos aprendendo de forma mais fácil e divertida
No livro do Ruby - Conhecendo a Linguagem, do TaQ (que eu estou seguindo para fazer essas aulas), ele recomenda que edite o arquivo .irbrc, que pode ser encontrado no diretório home (no Linux), e insira a seguinte linha:
require 'irb/completion'
Feito isso, vamos executar o irb, digitando (tcham, tcham, tcham, tcham….) irb no terminal (ou em um prompt do DOS -.-):
[saibot@upson saibot]$ irb
E com isso seremos recebidos com uma tela onde estará escrito o seguinte:
irb(main):001:0>
Certinho… Vou botar um pequeno codigozinho aqui como exemplo para explicar um pouco sobre a estrutura do irb:
irb(main):001:0> x = 5
=> 5
irb(main):002:0> if x != 5
irb(main):003:1> puts “Diferente de 5″
irb(main):004:1> else
irb(main):005:1* puts “Igual a 5″
irb(main):006:1> end
Igual a 5=> nil
irb(main):007:0>
Como pode ser visto, o prompt é separado por dois pontos (:). Com isso, temos o seguinte:
Sobre a profundidade, podemos dizer que é a que estamos quando abrimos ou fechamos uma expressão. Isso pode ser observado no próprio exemplo. Na linha 002, estamos começando a usar o if e o nível de profundidade é 0. Já na linha 003, uma linha depois do if, já entramos no nível de profundidade 1 ;D Na linha 006, fechamos o if com o end, por isso na linha 007 voltamos ao nível 0 de profundidade. Entendido?
Mais uma coisa, observe a linha 005 e perceberá um asterisco (*). Isso ocorre porque o irb “sabe” que o if precisa ser fechado com um end
“Olá Mundo!” no irb
Vamos agora começar fazendo o mais básico que existe em qualquer linguagem (exceto em, digamos…. …Java! Ahueahuaehuaeuae!!!!!!!). O “Hello World!” ou “Olá Mundo!”
Dentro do irb (óbvio O.o) digite:
irb(main):001:0> puts “Olá Mundo!”
Olá Mundo!
=> nil
irb(main):002:0>
Como pode ver, a frase “Olá Mundo!” foi escrita na tela
O puts é o comando (um dos) para imprimir coisas na tela…
Da mesma forma que usamos o puts para isso, podemos também usar o print:
irb(main):002:0> print “Olá Mundo!”
Olá Mundo!=> nil
irb(main):003:0>
Como podemos ver, apesar de parecer fazer exatamente o mesmo que o puts, o print apenas imprime na tela e não pula linha nenhuma, enquanto o puts pula uma linha cada vez que é usado.
Variáveis
Apesar de dizerem que tudo em Ruby é um objeto, as variáveis são excessões, sendo apenas referências para estes.
São bem simples de serem utilizadas em Ruby pelo fato de usarem duck typing (uma forma como é chamada a tipagem dinâmica do Ruby).
Exemplo:
[saibot@upson saibot]$ irb
irb(main):001:0> x = “terramel”
=> “terramel”
irb(main):002:0> x.class
=> String
irb(main):003:0> x = 1
=> 1
irb(main):004:0> x.class
=> Fixnum
irb(main):005:0> x = 1.2
=> 1.2
irb(main):006:0> x.class
=> Float
irb(main):007:0>
Ruby também tem tipagem forte, como pode ser observado a seguir:
[saibot@upson saibot]$ irb
irb(main):001:0> x = 1
=> 1
irb(main):002:0> y = “oi”
=> “oi”
irb(main):003:0> z = x + y
TypeError: String can’t be coerced into Fixnum
from (irb):3:in `+’
from (irb):3
from :0
irb(main):004:0>
Quando tentamos somar um número com uma string recebemos um erro (óbvio), já que não é possível somar essas dois coisas diferentes…
Claro que podemos converter o x para String (usando o método .to_s) para concatenarmos os valores das duas variáveis:
irb(main):004:0> z = x.to_s + y
=> “1oi”
irb(main):005:0>
Mais para frente veremos um pouco mais sobre este e outros métodos. Por enquanto, lembrando o que Matz disse que tudo é objeto em Ruby, dê uma olhada nisso:
[saibot@upson saibot]$ irbirb(main):001:0> x = 1
=> 1
irb(main):002:0> x.methods
=> ["to_a", "%", "<<", "respond_to?", ">>", "divmod", "&", "type", "integer?", "chr", "protected_methods", "eql?", "to_sym", "*", "instance_variable_set", "+", "is_a?", "truncate", "hash", "send", "to_s", "-", "between?", "modulo", "singleton_method_added", "prec", "zero?", "/", "size", "class", "tainted?", "private_methods", "__send__", "next", "|", "untaint", "~", "id", "step", "to_i", "inspect", "instance_eval", "prec_i", "remainder", "clone", "nonzero?", "public_methods", "^", "+@", "floor", "extend", "freeze", "-@", "display", "**", "quo", "__id__", "<=>", "downto", "to_f", "<", "methods", "method", "==", "===", "prec_f", "abs", ">", "to_int", "nil?", "dup", "instance_variables", "coerce", ">=", "instance_of?", "ceil", "<=", "upto", "div", "times", "object_id", "=~", "singleton_methods", "equal?", "succ", "taint", "id2name", "[]“, “frozen?”, “instance_variable_get”, “kind_of?”, “round”]
irb(main):003:0>
Esses são os métodos públicos da instância da classe. Teriamos o mesmo resultado usando x.public_methods.
Podemos ver os métodos privados da instância da classe usando x.private_methods:
irb(main):003:0> x.private_methods
=> ["select", "lambda", "local_variables", "chomp", "raise", "print", "sub!", "Array", "method_missing", "format", "trap", "at_exit", "exit!", "readlines", "autoload", "system", "set_trace_func", "getc", "initialize_copy", "split", "fail", "putc", "gsub!", "iterator?", "catch", "p", "remove_instance_variable", "sub", "sleep", "syscall", "callcc", "Integer", "fork", "srand", "singleton_method_removed", "caller", "puts", "chop!", "irb_binding", "scan", "block_given?", "autoload?", "binding", "throw", "warn", "`", "gsub", "loop", "open", "Float", "singleton_method_undefined", "rand", "exit", "chomp!", "gets", "load", "exec", "trace_var", "global_variables", "proc", "initialize", "chop", "printf", "String", "test", "sprintf", "abort", "readline", "untrace_var", "require", "eval"]
irb(main):004:0>
Por enquanto é só… Sei que demorei para postar essa primeira aula, mas com paciência e sempre em frente vamos andando ;D Na próxima aula explicarei um pouco mais sobre varíaveis, os tipos, variáveis públicas, blocos etc. Aguardem! Vou ver se começo a postar as aulas com mais freqüência ;D
Leia Também:
Acabei de ler no OMEdI que o líquido mais caro do mundo é o colírio Lumigan 5ml (R$126,15 em uma drogaria por aí). Vendo dessa forma, o galão desse colírio sairia por R$4.128.889,50. Mais de quatro milhões de reais…
Isso me fez lembrar daquele e-mail falando que o líquido mais caro do mundo é a tinta de impressora. Como já apaguei o e-mail que recebi sobre isso meses atrás, dei uma pesquisada e li no Sol *&ite que a tinta de impressora no Brasil custa quase R$6.000,00 o litro.
Então, mesmo não sendo o líquido mais caro do mundo, ainda é mais caro que o champagne Veuve Clicquot City Travelle, já que um cartucho HP com míseros 10ml de tinta custa R$59,99. Enquanto a tinta desse cartucho saí por R$5,99 o milímetro, o tal champagne sai por R$1,29 o milimetro…
Mas vocês amigos que precisam imprimir um monte de coisas como monografia, tese de doutorado, projetos, letras de música, gibizinhos, fotos de cantor emo miguxo e todo tipo de porcaria para professores picaretas, chefes cuzões, irmãzinhas emos, esposa mandona ou qualquer outro afrescalhado te enchendo o saco para imprimir cada merda que aparece porque diz que ler no computador cansa a vista, não se preocupe. Terrinha arrumou um lugar para vocês comprarem mais barato e não precisarem mais ficar batendo boca com vendedor e tendo sua namorada te segurando e falando que você é violento e briguento porque você está com vontade de bater no vendedor e quebrar a loja inteira (coisa que quase sempre me acontece quando saio e preciso por a mão no bolso aheuaehueahaeuhea).

A Carrot Ink é uma empresa que vende cartuchos de tinta até 70% mais barato que os fabricantes de impressora. Foi fundada em 1998 por John e Amy Howard com a filosofia de que os cartuchos de tinta não devem custar mais que a impressora. Em maio de 2007, Ray e Wendy Pahler (pai e filha) compraram a empresa e continuam seguindo com a mesma filosofia de fazer cartuchos de qualidade bem baratinhos.
Claro, tem sempre aqueles babacas que vem com aquela mesma falácia de que “O barato sai caro”. Mas nem esses precisam se preocupar, já que todo produto da Carrot Ink segue os padrões ISO 9001/2000.
Se quiser conhecer um pouco mais, faça uma visita no site deles (em inglês) e aproveite para comprar alguma coisa e começar a economizar. Ah sim, em qualquer compra acima de 50 dólares, o frete sai de graça ;D
O mais legal é que os caras são o que podemos chamar de “empresa verde”, já que aproveitam, reutilizam e reciclam tudo o que puder ;D Dê uma olhada, por exemplo, na descrição do produto C6656an.
Ta aí uma boa solução para sair das dívidas (especialmente a galera que tem escritório, empresa e qualquer outra porra desse tipo).
Leia Também:
Leia Também:


Leia Também: