Post rápido pra divulgar o lançamento da versão 3.5 do Firefox!
Visitem: http://br.mozdev.org
terça-feira, 30 de junho de 2009
domingo, 28 de junho de 2009
Dica de livro: The Pragmatic Programmer
Já citei trechos desse livro pela menos duas vezes aqui no blog e, agora que terminei de lê-lo, gostaria de indicá-lo a todos os programadores que passam por aqui.
O livro The Pragmatic Programmer, from journeyman to master fala sobre programação em geral, sem focar em nenhuma linguagem específica e sim, no ato de programar. Mostra como deve se comportar um programador pragmático, e o que é isso.
O livro foi escrito por Andrew Hunt e David Thomas, dois experientes programadores. Recomendo a leitura a todos. O livro mudou minha maneira de programar, com certeza.
Infelizmente não há uma versão em português do livro, mas para quem tem a possibilidade de ler em inglês, não perca essa oportunidade.
O livro pode ser comprado aqui.
Não é uma propaganda ao site de comércio eletrônico, só estou querendo mostrar que não é difícil comprar um livro internacional pela internet aqui no Brasil. Existem sites que vendem esse tipo de conteúdo quase pelo mesmo preço do item em seu país de origem.
Abraços, até o próximo post!
O livro The Pragmatic Programmer, from journeyman to master fala sobre programação em geral, sem focar em nenhuma linguagem específica e sim, no ato de programar. Mostra como deve se comportar um programador pragmático, e o que é isso.
O livro foi escrito por Andrew Hunt e David Thomas, dois experientes programadores. Recomendo a leitura a todos. O livro mudou minha maneira de programar, com certeza.
Infelizmente não há uma versão em português do livro, mas para quem tem a possibilidade de ler em inglês, não perca essa oportunidade.
O livro pode ser comprado aqui.
Não é uma propaganda ao site de comércio eletrônico, só estou querendo mostrar que não é difícil comprar um livro internacional pela internet aqui no Brasil. Existem sites que vendem esse tipo de conteúdo quase pelo mesmo preço do item em seu país de origem.
Abraços, até o próximo post!
quarta-feira, 24 de junho de 2009
Proposta de criação de um Hackerspace em São Paulo
O Hugo Borges (agaelebe do GURU-SP) acaba de postar no blog dele uma proposta de um projeto de criar um Hackerspace na cidade de São Paulo.
A ideia dele é muito interessante, seria uma ótima oportunidade para todos os amantes de tecnologia da cidade.
Convido a todos a ler o post original no blog dele, e também a ajudarem a tornar isso possível.
Link: http://www.agaelebe.com.br/2009/6/25/hackerspace_em_sao_paulo
A ideia dele é muito interessante, seria uma ótima oportunidade para todos os amantes de tecnologia da cidade.
Convido a todos a ler o post original no blog dele, e também a ajudarem a tornar isso possível.
Link: http://www.agaelebe.com.br/2009/6/25/hackerspace_em_sao_paulo
Basicamente um hackerspace é um lugar físico, uma espécie de laboratório que reune pessoas interessadas em certos tópicos de estudo, geralmente ligados a tecnologia, como projetos DIY (faça você mesmo), software, eletrônica, robótica, tecnoarte, entre outros. Além da realização destes projetos o hackerspace pode promover minicursos e eventos, buscando disseminar o conhecimento adquirido.Abraços.
segunda-feira, 22 de junho de 2009
Dicas para refatoramento
Hoje li um texto que gostaria de passar adiante. Foi, novamente, no livro The Pragmatic Programmer - from journeyman to master - onde o autor citou algumas dicas de Martin Fowler a respeito de refactoring (refatoramento):
Acredito que essas dicas são valiosas para um bom refatoramento.
Abraços pessoal, e até o próximo post.
Martin Fowler é uma figura respeitada na área de desenvolvimento de softwares, principalmente no que diz respeito a orientação a objetos.
- Não tente refatorar e adicionar funcionalidades ao mesmo tempo.
- Esteja certo que você tem bons testes antes de começar o refatoramento. Execute os testes sempre que possível. Desta forma você saberá rapidamente se suas alterações quebraram algo.
- De passos curtos e cautelosos: mova um campo de uma classe para outra, una dois métodos similares em uma super classe. Refatoramento frequente envolve criar muitas mudanças localizadas que resultam em uma mudança de larga escala. Se você manter seus passos pequenos, e testar depois de cada passo, você evitará debugs prolongados.
Acredito que essas dicas são valiosas para um bom refatoramento.
Abraços pessoal, e até o próximo post.
sexta-feira, 19 de junho de 2009
Entendendo símbolos em Ruby (tradução)
Ontem eu estava no rails-br e um integrante do grupo citou o link para um artigo sobre símbolos no Ruby, escrito por Kevin Clark. Achei o artigo muito útil e resolvi traduzí-lo para o português para ajudar quem estiver com dúvidas em símbolos.
Sinceramente, eu também aprendi muito com o texto. Eu sabia quando utilizar os símbolos, mas não o porque.
Então segue abaixo o texto, qualquer crítica quanto à tradução, correção ou outro tipo de comentário será bem vindo. Lembrando que todos os créditos do texto são de Kevin Clark, o autor do original.
Para quem lê em inglês, este é o link do original:
http://glu.ttono.us/articles/2005/08/19/understanding-ruby-symbols
Entendendo símbolos em Ruby
Símbolos em ruby são um enigma. Nós usamos eles, mas muitos não os entendem realmente.
Então, afinal, o que é um símbolo?
De uma forma simples, um símbolo é algo que você utiliza para representar nomes e strings. O que se resume a uma forma eficiente de ter nomes descritivos enquanto você economiza espaço que seria utilizado para gerar uma string para cada instância de nome.
O caso do Dr. Jones
Dr. Jones é um psicólogo. Ele regularmente usa testes de associações de palavras para diagnosticar pacientes e usa ruby para manter um registro de tudo. Seu primeiro paciente, Why, responde dessa maneira:
Dr J: Vermelho
Why: Ruby
Dr J: Transporte
Why: Rails
Dr J: Pedaçudo
Why: Bacon
Dr Jones cria um hash para armazenar seus dados:
O segundo paciente do Dr Jones, Bob, entrega os resultados de sua pesquisa:
O problema
Depois de executar várias centenas de testes de associações de palavras, Dr. Jones começa a perceber que ele está estourando a memória! Num palpite, Jones executa testes no irb:
Bem, vendo isso, cada vez que ele cria um hash para armazenar sua informação, o ruby cria um novo objeto string em uma diferente localização na memória para cada key. Felizmente, existe uma alternativa.
Símbolo ao resgate!
Diferente de strings, símbolos com um mesmo nome são inicializados e existem na memória uma única vez durante a sessão do ruby. Símbolos são obviamente mais úteis quando você reutiliza strings para representar alguma coisa. Reproduzindo o teste do Dr Jones, nós poderemos ver:
Usando símbolos, nós utilizamos um único endereço de memória para representar a palavra ruby em nosso teste de associação de palavras. Ao longo do tempo, isso pode poupar bastante espaço.
Mas eu não sou um psiquiatra, quando mais eu vou querer usar símbolos?
Símbolos são úteis qualquer hora que você estiver reutilizando uma palavra várias e várias vezes para representar algo, seja ele uma chave em um hash ou o método que você está usando em uma http query.
Um exemplo, do último e melhor e melhor framework web Ruby on Rails, é seu uso de símbolos em rotas e links. O Rails define actions dentre os controllers para fazer coisas no framework antes de renderizar uma página web, então um link em Rails pode se parecer com algo assim:
Quando uma aplicação pode ter centenas de links, ou ao menos centenas de referências para diferentes actions e controllers, é significantemente mais eficiente utilizar símbolos do que strings.
Finalmente, é importante comentar que a utilidade dos símbolos não é restrita às keys em hashes. Por exemplo, se alguém for escrever um cliente ou servidor http ele pode utilizar get e post diversas vezes dentro da aplicação, e pode ser apropriado usar:
Qualquer hora que uma string possa ser usada várias e várias vezes, um símbolo pode ser um bom candidato para substituição.
Sinceramente, eu também aprendi muito com o texto. Eu sabia quando utilizar os símbolos, mas não o porque.
Então segue abaixo o texto, qualquer crítica quanto à tradução, correção ou outro tipo de comentário será bem vindo. Lembrando que todos os créditos do texto são de Kevin Clark, o autor do original.
Para quem lê em inglês, este é o link do original:
http://glu.ttono.us/articles/2005/08/19/understanding-ruby-symbols
Entendendo símbolos em Ruby
Símbolos em ruby são um enigma. Nós usamos eles, mas muitos não os entendem realmente.
Então, afinal, o que é um símbolo?
De uma forma simples, um símbolo é algo que você utiliza para representar nomes e strings. O que se resume a uma forma eficiente de ter nomes descritivos enquanto você economiza espaço que seria utilizado para gerar uma string para cada instância de nome.
O caso do Dr. Jones
Dr. Jones é um psicólogo. Ele regularmente usa testes de associações de palavras para diagnosticar pacientes e usa ruby para manter um registro de tudo. Seu primeiro paciente, Why, responde dessa maneira:
Dr J: Vermelho
Why: Ruby
Dr J: Transporte
Why: Rails
Dr J: Pedaçudo
Why: Bacon
Dr Jones cria um hash para armazenar seus dados:
why = {"vermelho" => "ruby", "transporte" => "rails", "pedaçudo" => "bacon"}O segundo paciente do Dr Jones, Bob, entrega os resultados de sua pesquisa:
bob = {"vermelho" => "pintar", "transporte" => "carro", "pedaçudo" => "gordo"}O problema
Depois de executar várias centenas de testes de associações de palavras, Dr. Jones começa a perceber que ele está estourando a memória! Num palpite, Jones executa testes no irb:
> paciente1 = {"ruby" => "vermelho"}
> paciente2 = {"ruby" => "programação"}
> paciente1.each_key {|key| puts key.object_id.to_s}
211006
> paciente2.each_key {|key| puts key.object_id.to_s}
203536Bem, vendo isso, cada vez que ele cria um hash para armazenar sua informação, o ruby cria um novo objeto string em uma diferente localização na memória para cada key. Felizmente, existe uma alternativa.
Símbolo ao resgate!
Diferente de strings, símbolos com um mesmo nome são inicializados e existem na memória uma única vez durante a sessão do ruby. Símbolos são obviamente mais úteis quando você reutiliza strings para representar alguma coisa. Reproduzindo o teste do Dr Jones, nós poderemos ver:
> paciente1 = { :ruby => "vermelho" }
> paciente2 = { :ruby => "programação" }
> paciente1.each_key {|key| puts key.object_id.to_s}
3918094
> paciente2.each_key {|key| puts key.object_id.to_s}
3918094Usando símbolos, nós utilizamos um único endereço de memória para representar a palavra ruby em nosso teste de associação de palavras. Ao longo do tempo, isso pode poupar bastante espaço.
Mas eu não sou um psiquiatra, quando mais eu vou querer usar símbolos?
Símbolos são úteis qualquer hora que você estiver reutilizando uma palavra várias e várias vezes para representar algo, seja ele uma chave em um hash ou o método que você está usando em uma http query.
Um exemplo, do último e melhor e melhor framework web Ruby on Rails, é seu uso de símbolos em rotas e links. O Rails define actions dentre os controllers para fazer coisas no framework antes de renderizar uma página web, então um link em Rails pode se parecer com algo assim:
link_to("Ver Artigo", :controller => "articles", :action => "show",Quando uma aplicação pode ter centenas de links, ou ao menos centenas de referências para diferentes actions e controllers, é significantemente mais eficiente utilizar símbolos do que strings.
Finalmente, é importante comentar que a utilidade dos símbolos não é restrita às keys em hashes. Por exemplo, se alguém for escrever um cliente ou servidor http ele pode utilizar get e post diversas vezes dentro da aplicação, e pode ser apropriado usar:
do_this if query == :get
...
send_message_to_server(:post,filename)Qualquer hora que uma string possa ser usada várias e várias vezes, um símbolo pode ser um bom candidato para substituição.
sábado, 13 de junho de 2009
Suporte a multitouch nativo no Linux
Pessoal, esse é um post off-topic, mas eu achei muito interessante esse vídeo que mostra uma nova característica no Kernel do Linux, o suporte a multitouch.
Abraços!
Abraços!
terça-feira, 9 de junho de 2009
RnP #1 Como atribuir o endereço do site a uma action
Para iniciar a série de posts "Rails na prática", vou falar sobre um assunto que foi uma das minhas primeiras dúvidas na hora de implementar um site com Rails.
Ruby on Rais é um framework MVC (Model View Controller) e para acessar uma página geralmente o endereço é composto da seguinte forma:
http://dominio_do_seu_site/nome_do_controller/nome_da_action
O que acontece é que, quando estou criando um site, eu quero que o usuário tenha a opção de acessar meu site direto pelo domínio dele, por exemplo:
http://www.brunograsselli.com.br
Como fazer, então, para que o Rails atribua o endereço de meu domínio à algum endereço reconhecido por ele?
Existe um arquivo dentro do Rails que define os endereços de sua aplicação ou, como ele diz, as rotas. Esse arquivo encontrasse em config/routes.rb
Abra esse arquivo pelo seu editor de texto e digite dentro dele uma linha como, por exemplo:
Isso fará com que, quando eu acessar o endereço do domínio do meu site, o Rails me mostre a página que é montada pela action index do controller posts.
Como eu estou atribuindo à action index, eu poderia apenas informar o controller:
Importante: Além de fazer isso, para que comece a funcionar você precisa também excluir o arquivo que encontrasse em public/index.html
Após excluir esse arquivo, já deve começar a funcionar.
Nesse arquivo encontrasse comentado uma série de formas que você pode definir rotas para sua aplicação. Vale a pena dar uma estudada no assunto para definir endereços mais simples e intuitivos e, também, mais valorizados pelo google.
Você pode encontrar mais informações sobre o assunto em http://guias.rubyonrails.pro.br/routing.html
Espero que o texto ajude quem está começando a se aventurar no RoR, em breve continuarei com os textos da série que visa ensinar como solucionar algumas dúvidas simples que podemos ter no início do aprendizado Rails.
Abraços e até o próximo post.
Ruby on Rais é um framework MVC (Model View Controller) e para acessar uma página geralmente o endereço é composto da seguinte forma:
http://dominio_do_seu_site/nome_do_controller/nome_da_action
O que acontece é que, quando estou criando um site, eu quero que o usuário tenha a opção de acessar meu site direto pelo domínio dele, por exemplo:
http://www.brunograsselli.com.br
Como fazer, então, para que o Rails atribua o endereço de meu domínio à algum endereço reconhecido por ele?
Existe um arquivo dentro do Rails que define os endereços de sua aplicação ou, como ele diz, as rotas. Esse arquivo encontrasse em config/routes.rb
Abra esse arquivo pelo seu editor de texto e digite dentro dele uma linha como, por exemplo:
map.root :controller => "posts", :action => "index"Isso fará com que, quando eu acessar o endereço do domínio do meu site, o Rails me mostre a página que é montada pela action index do controller posts.
Como eu estou atribuindo à action index, eu poderia apenas informar o controller:
map.root :controller => "posts"Importante: Além de fazer isso, para que comece a funcionar você precisa também excluir o arquivo que encontrasse em public/index.html
Após excluir esse arquivo, já deve começar a funcionar.
Nesse arquivo encontrasse comentado uma série de formas que você pode definir rotas para sua aplicação. Vale a pena dar uma estudada no assunto para definir endereços mais simples e intuitivos e, também, mais valorizados pelo google.
Você pode encontrar mais informações sobre o assunto em http://guias.rubyonrails.pro.br/routing.html
Espero que o texto ajude quem está começando a se aventurar no RoR, em breve continuarei com os textos da série que visa ensinar como solucionar algumas dúvidas simples que podemos ter no início do aprendizado Rails.
Abraços e até o próximo post.
domingo, 7 de junho de 2009
Rails na Prática
Desde janeiro que eu venho estudando Ruby e Ruby on Rails a fundo. Fiz um curso no começo do ano na Caelum (ótimo curso) e desde então estou apaixonado por essa linguagem e sempre que dá estou procurando algo a respeito.
Apesar de estar sempre lendo livros sobre Rails (na verdade, mais Ruby do que Rails) e participando da comunidade, ainda não tinha começado a fazer nenhum projeto em Rails pra valer.
Esse final de semana, finalmente, comecei meu primeiro projeto e já me deparei com uma série de dúvidas. E é por isso que venho aqui escrever para vocês.
Minha proposta é, nos próximos posts, escrever a respeito de todas essas dúvidas e curiosidades que eu venho enfrentando nesse primeiro projeto. Na maioria das vezes coisas simples, que nas linguagens que estamos habituados a utilizar fazemos sem problema, mas quando vamos fazer no Rails acabamos parando pra pensar:
"Putz, não havia pensado nisso. E agora, como se faz isso?"
E corremos atrás do google e dos amigos nas comunidades.
Toda vez que estou me deparando com uma situação como essa, estou fazendo minhas anotações para depois vir aqui falar a respeito, na série de posts que eu vou chamar de Rails na Prática (RnP).
Ainda nessa semana pretendo fazer o primeiro post sobre o tema.
Espero que gostem e se tiverem sugestões por favor entrem em contato por e-mail, comentário, ou twitter.
Abraços e até o próximo post.
Apesar de estar sempre lendo livros sobre Rails (na verdade, mais Ruby do que Rails) e participando da comunidade, ainda não tinha começado a fazer nenhum projeto em Rails pra valer.
Esse final de semana, finalmente, comecei meu primeiro projeto e já me deparei com uma série de dúvidas. E é por isso que venho aqui escrever para vocês.
Minha proposta é, nos próximos posts, escrever a respeito de todas essas dúvidas e curiosidades que eu venho enfrentando nesse primeiro projeto. Na maioria das vezes coisas simples, que nas linguagens que estamos habituados a utilizar fazemos sem problema, mas quando vamos fazer no Rails acabamos parando pra pensar:
"Putz, não havia pensado nisso. E agora, como se faz isso?"
E corremos atrás do google e dos amigos nas comunidades.
Toda vez que estou me deparando com uma situação como essa, estou fazendo minhas anotações para depois vir aqui falar a respeito, na série de posts que eu vou chamar de Rails na Prática (RnP).
Ainda nessa semana pretendo fazer o primeiro post sobre o tema.
Espero que gostem e se tiverem sugestões por favor entrem em contato por e-mail, comentário, ou twitter.
Abraços e até o próximo post.
sábado, 6 de junho de 2009
Link para denúncias no portal da Anatel
Recentemente eu tive alguns problemas com o serviço de internet móvel da Claro SP, então, durante dois dias, tentei entrar em contato com eles mas, após escolher a opção abrir reclamação, fiquei esperando por mais de meia hora sem ser atendido.
A solução que eu tive para solucionar esse problema foi bem simples e gostaria de divulgá-la para que todos possam exercer seu direito.
No portal da Anatel (http://www.anatel.gov.br) existe um opção de Atendimento Eletrônico (dentro do link fale conosco).
Lá você pode abrir uma denúncia contra esse tipo de serviço em operadoras de telefonia, internet, radio e tv por assinatura.
Após abrir a denúncia a operadora tem 5 dias para solucionar o problema, senão é punida.
Comigo funcionou perfeitamente, no dia seguinte a Claro já estava desesperada atrás de mim.
Passe essa informação adiante no seu blog, twitter, etc, para melhorarmos a qualidade desse tipo de serviço.
Até o próximo post,
Abraços.
A solução que eu tive para solucionar esse problema foi bem simples e gostaria de divulgá-la para que todos possam exercer seu direito.
No portal da Anatel (http://www.anatel.gov.br) existe um opção de Atendimento Eletrônico (dentro do link fale conosco).
Lá você pode abrir uma denúncia contra esse tipo de serviço em operadoras de telefonia, internet, radio e tv por assinatura.
Após abrir a denúncia a operadora tem 5 dias para solucionar o problema, senão é punida.
Comigo funcionou perfeitamente, no dia seguinte a Claro já estava desesperada atrás de mim.
Passe essa informação adiante no seu blog, twitter, etc, para melhorarmos a qualidade desse tipo de serviço.
Até o próximo post,
Abraços.
Assinar:
Postagens (Atom)


