Archive for November, 2009

Recomendações do Édipo #1

Posted in Geral, Leitura, Programação on November 16th, 2009 by Edipo Luis Fderle – Be the first to comment

Eu quase nunca faço recomendações aqui no blog, mas nos últimos dias eu estou simplesmente viciado na leitura dos artigos do Joel on Software, não vou ficar aqui descrevendo quem é o Joel porque no site tem sobre ele, o que eu posso deixar aqui registrando por hora é que o cara é MUITO BOM.

Bom, dada essa pequena introdução vou deixar aqui registrado porque acho que você deveria começar a ler seus artigos AGORA.

Ele aborda os mais diferentes assunto do mundo do desenvolvimento de Softaware de forma com que você fique colado na tela lendo seus textos por hoars e mais horas( ao menos comigo), ele fala sobre arquitetura, sobre programação, sobre gerenciamento, sobre recursos, sobre testes, sobre processos, e muitas outras coisas que você provavelmente deve estar interessado em saber.

Outra coisa que é muito interessante nos seus artigos é a forma como ele os conduz, não é aqueles textos chatos de se ler, é algo bem “dinâmico” , divertido e engraçado algumas vezes.

Ontem li o último que faltava( do site em português, logo falo dele) que foi o “Voltando as Raizes” onde ele trato de algo em parte muito interessante, algo mais baixo nível, lá nas profundezas dos bytes, e como ele mesmo diz no artigo, um pequeno exercício usando à linguagem C, e foi um dos mais interessantes que li dele. Muito bom , recomendo começar por ele.

Provavelmente você não irá concordar com tudo o que ele fala, mas aposto que em sua grande maioria você vai.

Então tenho que saber inglês para ler os posts? Bom, se você quizer ler todos vai ter que  saber, porque nem todos os textos estão traduzidos para o  português.

Neste Link você pode encontrar o que tempos em português, e neste o endereco original onde você encontra tudos.

Bom pessoal fica a dica. Abraço a todos.

Ruby Série #3 – Operador Splat

Posted in Ruby/Rails on November 10th, 2009 by Edipo Luis Fderle – Be the first to comment

Warning: Missing argument 1 for GeSHi::GeSHi(), called in /home/storage/f/73/ab/bitside1/public_html/edipo_blog/blog/wp-content/plugins/codecolorer/codecolorer-core.php on line 137 and defined in /home/storage/f/73/ab/bitside1/public_html/edipo_blog/blog/wp-content/plugins/deans_code_highlighter/geshi.php on line 432

Warning: Missing argument 2 for GeSHi::GeSHi(), called in /home/storage/f/73/ab/bitside1/public_html/edipo_blog/blog/wp-content/plugins/codecolorer/codecolorer-core.php on line 137 and defined in /home/storage/f/73/ab/bitside1/public_html/edipo_blog/blog/wp-content/plugins/deans_code_highlighter/geshi.php on line 432

Olá pessoal vamos para o terceiro post da série de Ruby, este post irá ser um pouco mais pequeno porque
irá tratar apenas de um operador, esse operador é o Splat.

O Operador Splat é usado quando queremos em uma atribução fazer com que vários valores de um array se tornem
rvalues, como por exemplo:

1
a, b, c, d = 10, 11, *[12,13]

Como da para se notar o que mudou foi o último rvalue sendo precedido por um *.

No Ruby 1.8 Arrays e Rangs podem ser splatted, ele também fornece um método to_ary que retorna um array de valores.

Também podemos fazer ao contrário, fazer um ivalue ter um *, quando isso acontece os rvlues extras são postos em um array e são atribuidos a tal valor.

1
x, *y = 1, 2, 3

Aqui x = 1 e y = [2,3]

OBS: No Ruby 1.9, você pode ter quantos splats quizer, para ver mais sobre Splat no 1.9 veja esse link:
http://ruby.about.com/od/newinruby191/qt/MultipleSplats.htm

Bom pessoal esse post foi rápito espero que deu para aprender algo com ele :D

Até o Mais.

Série Ruby #2 – Atribuições

Posted in Ruby/Rails on November 6th, 2009 by Edipo Luis Fderle – Be the first to comment

No último post foi visto como o Ruby trabalha com os 5 tipos de varíaveis, falamos bastante sobre atribuições também, então neste post iremos falar um pouco mais sobre isso.

Atribuições

Uma atribuição é um expressão que pode especificar um ou mais de um valor para uma dada varíavel ou mais corretamente
de um Ivalue.
IValue é um termo para indicar o que aparece antes de um operador de atribuição, por exemplo:

x = 10

Na expressão acima x é um ivalue e um rvalue que é 10.
No Ruby existem três tipos de expressões de atribuição, a mais simples vista acima e outras duas que vamos ver agora.

As atribuições abreviadas que são expressões que além de atualizar um valor ainda aplicam alguma matemática sobre o ivalue
certamente você já fez isso:

x *= 10

Também tempos as atribuições paralelas que são aquelas em que um rvalue é atribuido a n ivalues, por exemplo:

x, y, z = 10

Também é possivel tem n ivalues e n rvalues, assim:

x, y, z = 2, 4, 6

Aqui x recebe 2, t recebe 4 e z recebe 6.
O que um ivalue recebe como conteúdo é o valor ou array de valores que é à ela atribuido. Um operador de atribuição é righ-assiciative ou seja, a atribuição é avalidada da direita para a esquerda, com isso podemos fazer isso:

a = b = 4

Aqui b recebe 4 e a também recebe 4.

Efeitos colaterias – Idempotent.

Como vimos uma atribuição muda o estado de uma varíavel isso muda o estado de um programa por exemplo,
existem várias expressões que não tem efeitos colaterais algum, pois toda a vez que são avalidas irão retornar o mesmo valor ,por exemplo:

Dado um método para calcular a raiz quadrada de um número inteiro e positivo:

1
2
3
def raiz(x)
   return x * x
end

Esse método não tem efeitos colaterais, esse tipo de expressão é chamado de idempotent, você pode
avaliar o método acima n vezes e ele sempre irá retornar o mesmo valor, já a seguinte expressão irá mudar a cada vez que for executada:

x += 1

Você pode ler mais sobre isso em: http://en.wikipedia.org/wiki/Idempotence
Bom pessoal, esse foi o segundo post da série Ruby. Até mais e Obrigado.

Série Ruby #1 – Varíaveis não inicializadas

Posted in Programação, Ruby/Rails on November 3rd, 2009 by Edipo Luis Fderle – 2 Comments

Varíaveis não inicializadas

cplx

Olá esse será o primeiro post de uma série que pretendo fazer falando sobre Ruby(A Linguagem)
Tentarei manter em posts pequenos com exemplos de código ou não,  não terá uma ordem do tipo: básico – intermediário – avançado, irei postando conforme eu achar melhor, ou se alguem vier a ler também gostaria de ouvir comentários sobre assuntos que poderiam serem abordados nos posts.

Para começar irei falar um pouco sobre “Varíaveis Não Inicializadas”. Então chega de bate papo e vamos ao post.

Se você já programa em alguma linguagem digamos assim mais conhecida como Java ou C sempre após a declaração de uma varíavel é recomendado que você à inicialize antes de fazer seu uso, uma das razões para se fazer isso é que pode acontecer de o local(na memória(1.a)) onde tal varíavel foi alocada já tenha sido usada por outra váriavel e posivelmente pode conter algum tipo de LIXO, então é uma boa prática inicializa-las.

1.a)

Básicamente falando a memória é vista pelo processador como uma tabela cada “entrada” desta tabela pode guardar um byte e cada entrada é referenciada pela sua posicão.

1 Byte é um conjunto de 8 bits pode representar um número de ate 255(na base 10).

Veja mais sobre essa matemática aqui.

Então no Ruby  em linhas gerais você sempre deve atribuir algum valor antes que de fato usar tal varíavel, mas como vamos ver existem alguns tipos de varíaveis no Ruby que não necessariamente precisam ser inicializadas.

Vejamos os tipos de váriaveis presentes no Ruby.

 - Varíaveis de Classe.
 - Varíaveis de instância.
 - Varíaveis globais.
 - Varíavies locais.

Varíaveis de Classe.

Sempre devem ter um valor atribuido antes de serem usadas, caso você à utilize sem inicializar irá receber um NameError, Como isso:

1
2
3
class Class_Variable
   puts @@var
end

NameError: uninitialized class variable @@var in Class_Variable


Varíavies de Instância

Quando você tentar usar um varíiavel de instância sem ela ter sido devidamente inicializada o Ruby irá retornar um Nil, veja:

1
2
3
4
def instance_variable
    puts @name
 end
 instance_variable

Veja passando a opção -W para o comando Ruby em linha de comando, ele irá dar um aviso que você possue a varíavel não inicializada:

ruby -W teste.rb
teste.rb:2: warning: instance variable @x not initialized
nil

DICA: Sempre use a opção -W para testar seus código maiores, assim você pode verificar de forma fácil a presença desse tipo de coisa.


Varíaveis Globais.

Para esse tipo de varíavel vale a mesma regra que das de instância.

Varíaveis Locais.

Aqui temos que ter cuidado, em todos os outros tipos de varíaveis no Ruby temos um caractere de pontuação servindo como prefixo, isso quer dizer que as varíaveis locais se parecem com uma chamada de método, caso o Ruby “veja” uma atribuição para tal varíavel ele irá saber que se trata de uma varíavel e não de uma invocação de método, caso ele não ver, ele irá invocar o método, e caso o método não exista temos um NameError.

Por Exemplo se simplesmente fizermos isso:

1
2
3
a
 NameError: undefined local variable or method `a' for main:Object
 from (irb):1

Viram?

Então, a varíavel passa a existir apartir do momento em que ela recebe uma atribuição, e não necessita que a atribuição seja de fato executada, veja um exemplo:

1
2
3
a = 0.0 if false => nil
 puts a
 nil

Bom pessoal é isso por hoje, espero que alguem leia isso :) .

Referencia: Livro – “A linguagem de Programação Ruby” – David Flanagan & Yukihiro Matsumoto.

Até Mais Pessoa e Orbrigado.