Entries Tagged as ''

Sabonete de Código Aberto

Essa eu vi num e-mail do Tzelli… Falta de coisa pra fazer é phoda ;D (preguiça de postar algo descente é pior ainda….)

Technorati Tags: , , , , , , , ,

Leia Também:

Se você gostou deste post, pode me pagar um café que servirá como um excelente combustível para que eu escreva mais posts ;)

Ruby: Primeira Aula

Ok! Tomei coragem e deixei a preguiça de lado! Quando comecei a escrever este post eu estava meio gripado e de saco cheio de ficar ouvindo minha mãe falando que estou perdendo meu tempo com a internet, que isso não me leva a nada, que eu deveria pensar no mercado de trabalho e estudar a matéria (chata e retrógrada) da faculdade, que eu preciso crescer e blá blá blá! Mas tudo bem! Não quero nem saber quem pintou a zebra! Eis que apresento-lhes… A primeira aula de Ruby deste blog:

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:

  1. Nome do programa (main)
  2. Número de linhas que digitamos (e estamos) no irb.
  3. Nível de profundidade

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:

Se você gostou deste post, pode me pagar um café que servirá como um excelente combustível para que eu escreva mais posts ;)

Economize nas impressões com Carrot Ink!

Qual o líquido mais caro do mundo? É o petróleo que já chegou aos US$82,51 o barril? Não! É o champagne francês Dom Pérignon que custa R$ 576,99 a garrafa (fazendo dessa forma o galão custar algo como R$125.899,21)? Também não!

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).

Technorati Tags: , , , , , , , , , , , , , , , , , , , , , , , ,

Leia Também:

Se você gostou deste post, pode me pagar um café que servirá como um excelente combustível para que eu escreva mais posts ;)

Aprenda com a música do Software Livre

Muito legal esse vídeo que fizeram com uma versão “remixada” da Free Software Song (Música do Software Livre) do Richard Stallman. O vídeo tem um bonequinho (Flat Eric) e ele ouve a música, faz umas ligações, assina umas coisas, pega uns charutos e fala sobre Software Livre e Código Aberto. Muito legal mesmo ) Pena que as legendas (em inglês) passam um pouco rápidas. Mas qualquer coisa é só dar pause e ler com mais calma ;D

Technorati Tags: , , , , , , , , , , , , , , , , , , , , , ,


Leia Também:

Se você gostou deste post, pode me pagar um café que servirá como um excelente combustível para que eu escreva mais posts ;)

Linux, Windows & Mac

Technorati Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Leia Também:

Se você gostou deste post, pode me pagar um café que servirá como um excelente combustível para que eu escreva mais posts ;)