17 de novembro de 2008

Explicando o nil em Ruby

O hotel aqui em Ambrose não é nem um pouco bom. As camas são todas tortas. O elevador é minúsculo. Um cara pôs toda sua bagagem no elevador e não sobrou mais lugar pra ele. Ele apertou o botão e as perseguiu pelas escadas. Mas as escadas eram muito estreitas e ele ficou entalado tentando subir.

Os mini-sabonetes que eles te dão são dimensionados para gnomos, então é impossível fazer uma espuma. Eu odeio isso. Toda hora eu confundo eles com lentes de contato.

Eu abri a torneira e nada saiu. O caso é o seguinte: Ambrose é um lugar com propriedades mágicas, então eu me arrisquei. Coloquei minha mão embaixo da torneira. Invisível, umidade morna. Eu senti a sensação de água corrente, passando pelos meus dedos. Quando tirei minha mão de lá, elas estavam secas e limpas.

Foi um incrível experiência de vazio total. Foi como nil.

Nil (Nada)

No Ruby, o nil representa o vazio. Ele representa falta de valor. Ele não é zero. Zero é um número.

É um morto-vivo do Ruby, uma palavra chave falecida. Você não pode adicionar à ele, ele não evolui. Mas ele é terrivelmente popular. É este esqueleto sorrindo nas fotos.

copo_plastico = nil

No código acima copo_plastico está vazio. Você pode argumentar que o copo_plastico contém algo, um nil. O nil representa vazio, logo, então, adiante-se e chame-o de vazio.

Alguns de vocês que já programaram antes estarão tentados a dizer que copo_plastico está indefinido (undefined). Que tal não. Quando você diz que uma variável está indefinida, você está dizendo que o Ruby simplesmente não tem lembrança da variável, ele não a conhece, ela absolutamente não existe.

Mas o Ruby está sabendo do copo_plastico. Ruby pode facilmente olhar dentro do copo_plastico. Está vazio, mas não está indefinido.

Retirado do livro http://why.nomedojogo.com/chapter-4.html

11 de novembro de 2008

A Catedral e o Bazar

Nesses dias estava escutando o podcast do RailsBox e ouvi sobre o ensaio "A Catedral e o Bazar". O livro fala de algumas características que são premissas no desenvolvimento do Linux (do UNIX e de outros projetos open source) e como estas características contribuem para que o software tenha uma qualidade superior.

Vou listar os pontos destacados pelo Eric S. Raymond

1. Todo bom trabalho de software começa colocando o dedo na ferida de um programador.
2. Os programadores bons sabem o que escrever. O grandes sabem o que re-escrever (e re-
usar)
3. "Planeje jogar algo fora; você irá, de qualquer maneira.'' (Fred Brooks, "The Mythical Man-Month'', Capítulo 11)
4. Se você tem a atitude certa, problemas interessantes irão encontrá-lo.
5. Quando você perde interesse em um programa, sua última obrigação a fazer com ele é entregá-lo a um sucessor competente.
6. Tratar seus usuários como co-desenvolvedores é seu caminho mais fácil para uma melhora do código e depuração eficaz.
7. Liberece cedo. Libere freqüentemente. E ouça seus fregueses.
8. Dada uma base grande o suficiente de beta-testers e co-desenvolvedores, praticamente todo problema será caracterizado rapidamente e a solução será óbvia para alguém.
9. Estrutura de dados inteligentes e código burro trabalham muito melhor que ao contrário. Brooks, Capítulo 11: "Mostre-me seu código e esconda suas estruturas de dados, e eu poderei
continuar mistificado. Mostre-me suas estruturas de dados, e eu provavelmente não
necessitarei do seu código; ele será óbvio.''
10. Se você tratar seus beta testers como seu recurso mais valioso, eles irão responder tornando-se seu mais valioso recurso.
11. A melhor coisa depois de ter boas idéias é reconhecer boas idéias dos seus usuários.
12. Freqüentemente, as soluções mais impressionantes e inovadoras surgem ao se perceber que o seu conceito do problema estava errado.
13. "A perfeição (em projetar) é alcançada não quando não há mais nada a adicionar, mas quando não há nada para jogar fora.''
14. Qualquer ferramenta deve ser útil da maneira esperada, mas uma ferramenta verdadeiramente *boa* leva ela própria a usos que você nunca esperou.
15. Quando escrevendo um software gateway de qualquer tipo, faça tudo para perturbar o conjunto de dados o menos possível -- e *nunca* jogue fora informação a não ser que o destinatário force você a isto!
16. Quando sua linguagem não está perto de um Turing completo, açúcar sintático pode ser seu amigo.
17. Um sistema de segurança é tão seguro quanto é secreto.
18. Para resolver um problema interessante, comece achando um problema que é
interessante para você.
19. Contanto que o coordenador do desenvolvimento tenha uma mídia pelo menos tão boa
quanto a Internet, e saiba como liderar sem coerção, muitas cabeças são
inevitavelmente melhores que uma.


Para quem pensa em participar de algum projeto open source são 14 páginas obrigatórias!


O livro foi traduzido por Erik Kohler - ekohler at programmer.net
Baixe aqui

8 de novembro de 2008

Evento CearaOnRails Dia 14 de Novembro

Garanta já sua vaga!
Participe da lista de discussão


Data: 14 de Novembro de 2008 - 19h
Local: Faculdade Christus
Avenida Dom Luís, 911,
Fortaleza-Ce



O que é CearaOnRails?

O CearaOnRails é um evento solidário que será realizado no dia 14 de Novembro, voltado para todos profissionais área de TI com interesse em aprender um pouco mais sobre XP(Extreme Programming), Ruby e o framework RubyOnRails.

Nosso intuito é apresentar esta nova forma de trabalho e com isso tentar mudar um pouco a atual visão de desenvolvimento local, colaborando também com a ONG 2A(Acreditando e Aprendendo), com a doação de alimentos não perecíveis que serão arrecadados no evento como forma de ingresso sendo apenas 2 Kg de alimento por pessoa em troca do acesso as palestras. O evento além de sua função social e integradora, também permite uma grande difusão do framework RubyOnRails e ainda oportuniza o intercâmbio entre profissionais, estudantes, professores e outros interessados na área.

CearáOnRails tem como missão abrir caminhos e atualizar conhecimentos sobre desenvolvimento com software livre no Estado.

Palestrante Nome
Tiago Bastos Onde está o método?
Nabucodonosor Coutinho ORM on Rails
Fabio Akita Desenvolvimento fora da Média com Ruby e Rails

Palestras
----------------------------------------------------------------------
Nome: Onde está o método?
Dia: 14/11/2008
Horário: 14/11/2008 19:10 - 14/11/2008 19:40
Descricão: Uma introdução a recursos avançados da linguagem. Explicando como interceptar chamadas à métodos, monkey patching e avaliação de código. Mercado de trabalho.
Palestrante: Tiago Bastos
----------------------------------------------------------------------
Nome: ORM on Rails
Dia: 14/11/2008
Horário: 14/11/2008 19:40 - 14/11/2008 20:20
Descricão: A camada de persistência do ROR está realmente nos trilhos? A visão de um DBA sobre a camada de persistência do Rails. Analise dos padrões DAO e ActiveRecord. Análise das implementações ActiveRecord e iBatis para ruby. Análise das implementações Rails ActiveRecord e Hibernate (java).
Palestrante: Nabucodonosor Coutinho
----------------------------------------------------------------------
Nome: Desenvolvimento fora da Média com Ruby e Rails
Dia: 14/11/2008
Horário: 14/11/2008 20:25 - 14/11/2008 22:10
Descricão: Porque é importante entender as novas tecnologias como Ruby e Rails e como elas agilizam seus projetos web.
Palestrante: Fabio Akita

Patrocinadores
LocaWeb
http://www.locaweb.com.br

Ipabe
http://www.cmfor.ce.gov.br/ipab

Mondrian Tecnologia
http://www.mondriantecnologia.com

Secrel International
http://www.secrelinternational.com/

Instituto Atlântico
http://www.atlantico.com.br/
======================================================================
Quem é ONG 2A?

ONG 2A - ACREDITANDO E APRENDENDO é uma Organização Não-Governamental, de caráter psico-sócio-educativo, de duração indeterminada, com domicílio e foro na cidade de Fortaleza/CE com sede provisória na Escola de Ensino Fundamental Vereador José Barros de Alencar, cedida após acordo fixado entre a fundadora da ONG e a diretoria da escola. Atende-se aproximadamente 100 crianças, adolescentes e pais (educandos) com o trabalho de cerca de 15 voluntários, profissionais e universitários (educadores).
Contato

Rua B, 48 Conjunto Santo Dias Santa Filomena – Fortaleza - CE
CNPJ: 03.582.274/0001-24
ong_2a@yahoo.com.br
Caixa Econômica, ag.:2183 c/c: 130-5

30 de junho de 2008

Java Magazine - Edição 58

Tinha falado no post sobre a JM57 que só faltava ter incluído o JBoss Seam... Agora não falta mais! É o dito cujo o destaque da edição 58.

Outra boa matéria dessa edição é sobre o framework Apache Wicket "a refreshing lack of XML".

Boa leitura!

26 de maio de 2008

Java Magazine - Edição 57

Recebi hoje a minha JM57. O destaque é NetBeans Visual Web JSF - Criando uma aplicação passo a passo com Visual Web JavaServer Faces, Spring 2.5 e Hibernate utilizando JPA.

Só faltou o JBoss Seam!

What is JBoss.org?


Estou postando aqui um resumo, em imagem, do mundo que é a JBoss.org. Destaque para os já conhecidos Hibernate, JBoss AS.

http://www.jboss.org/projects/

Será que precisamos mesmo da IBM SOA Suite, Microsoft BizTalk Server e etc?

SOA segundo Booch

Aproveitando que o assunto está na moda...

SOA segundo Booch:

"A minha visão do cenário SOA é um pouco radical do que a maioria que vi até agora. A cobertura da mídia exagerada sobre SOA a faz parecer como a melhor coisa que aconteceu depois dos cartões perfurados. SOA não apenas irá transformar a sua organização e torná-lo mais ágil e inovador, mas fará os adolescentes falarem com você e se tornará um amante melhor. Além disso, seguindo a maioria desses caminhos, parecerá que pode realizar as coisas quase sem nenhum esforço: apenas dê uma polida nos seus bens atuais, plante alguns serviços aqui e acolá, amarre tudo isso junto e de repente estará virtualizado, automatizado e com todos os serviços que precisa. Que besteira."

Booch está certo. O importante é que SOA é uma estratégia que requer tempo e esforço. é preciso alguma experiência para entender do que SOA trata, e onde e como ela ajuda.

See you later

Curso de Angular GRATUITO | Curso de Angular GRATIS | FREE Angular Course

Português  Angular  https://www.youtube.com/playlist?list=PLnDvRpP8Bnex2GQEN0768_AxZg_RaIGmw Matheus Battisti - Hora de Codar Curso Angular ...