Clojure Invade o Dev In Sampa

No próximo sábado, dia 14/08, acontecerá em São Paulo o 2º Dev In Sampa, um encontro de desenvolvedores de software que não faz propaganda do governo nem apresenta palestras com foco em um único fornecedor. Já era hora!

Infelizmente, por razões de força maior eu não pude comparecer na primeira edição do evento, mas este ano eu estarei presente, e ainda por cima como palestrante.

Por isso, antes de mais nada, eu gostaria de agradecer àqueles que votaram na minha palestra. Isso mostra que Clojure anda despertando o interesse da rapazeada também no Brasil, o que é muito bom.

Update: Apresentação e códigos-fonte disponíveis para download.

Continue lendo

Publicado em Off Topic, Português | Com a tag , , , , , , , , | 1 comentário

Crie seu próprio pendrive USB multi-boot salvador da pátria

Não preciso convencê-lo de que carregar algumas distribuições Linux com você pode fazer a diferença entre a vida e a morte. Bem, é claro que eu estou sendo um pouco dramático, mas é realmente muito bom poder rodar um teste de memória numa máquina que insiste em jogar erros estranhos na sua cara, ou mesmo copiar discos ou partições importantes quando você está por aí.

Para mim, algumas ferramentas e distribuições são particularmente úteis:

  • Clonezilla. Ferramenta muito boa para clonagem de disco/partição. Leva algum tempo para iniciantes se acostumarem com ela, mas vale o esforço. Já fui salvo por esta ferramenta mais de uma vez.
  • GParted. Excelente ferramenta para particionamento de disco.
  • Linux Mint. Distribuição Linux baseada no Ubuntu muito fácil de usar. Eu gosto muito da edição Live-DVD, que inclui softwares como VLC, OpenOffice e Java.
  • Ubuntu. Uma das distribuições Linux mais populares hoje em dia.
  • Memtest86+. Ferramenta para teste de memória incluída na maioria das distribuições Linux modernas. Indispensável.

Agora, em vez de queimar um CD/DVD com cada uma dessas ferramentas, nós iremos usar um pendrive USB multi-boot.

Continue lendo

Publicado em Português, Tutoriais | Com a tag , , , , , , , , , , , , , , , | 1 comentário

Create your own save-your-ass multi-boot USB stick

I don’t have to convince you that carry around a couple of Linux distros can mean the difference between life and death. Well, of course I’m being a little bit melodramatic here, but it’s really nice to have the ability to quickly run a memory test on a machine that insists to misbehave, or even backup important stuff when you are on the go.

For me, some tools and distros are particularly useful:

  • Clonezilla. Very nice disk/partition cloning tool. It takes some time for beginners to get used to it, but it’s worth the effort. This tool saved my life more than once.
  • GParted. Great tool for disk partitioning.
  • Linux Mint. Very easy to use Ubuntu-based Linux distro. I particularly like the Live-DVD edition, which includes useful software like VLC, OpenOffice and Java.
  • Ubuntu. One of the most popular Linux distros nowadays.
  • Memtest86+. Memory testing tool bundled in most Linux distros. Indispensable.

Now, instead of burning one CD/DVD for each one of these tools, we’re going to use one multi-boot USB stick.

Continue lendo

Publicado em English, Tutorials | Com a tag , , , , , , , , , , , , , , , , , | 5 comentários

Django Para Dispositivos Móveis

Estamos vivendo o que alguns chamam de “explosão mobile”, um tempo onde um número cada vez maior de dispositivos móveis — como tablets e smartphones — se tornam parte significante da Web. Esta é a razão pela qual ter seu website preparado para tais dispositivos é cada vez mais importante.

Felizmente, Django é um dos poucos frameworks web que tornam este um problema simples de solucionar.

Continue lendo

Publicado em Português, Programação, Tutoriais | Com a tag , , , , , , , , , | 4 comentários

Django For Mobile Devices

We are living what some people call the “mobile explosion”, a time where an increasing number of portable devices — like tablets and smartphones — are becoming a significant part of the Web. This is the reason why having your website tailored for these devices is becoming increasingly important.

Fortunately, Django is one of the few web frameworks that makes this an easy problem to solve.

Continue lendo

Publicado em English, Programming, Tutorials | Com a tag , , , , , , , , , , , | 1 comentário

Servidor De Email Local No Ubuntu Com Exim

Vimos em um post anterior como criar testes para código Java que envia e-mails. Agora o assunto é outro.

Exim é um MTA open source que pode ser usado como alternativa ao Sendmail em sistemas operacionais Unix. Eu não tenho idéia de qual é a melhor alternativa disponível, mas se você procura por um servidor de relay para instalar na sua configuração de desenvolvimento, Exim é provavelmente a opção mais simples para começar.

Neste artigo, veremos como configurar o Exim para enviar mensagens através do Gmail.

Continue lendo

Publicado em Português, Tutoriais | Com a tag , , , , , , , , , , , | 1 comentário

Setting Up A Local Mail Server With Exim And Ubuntu

Exim is an open source MTA that can be used as a drop-in replacement for Sendmail on Unix-like operating systems. I have no idea what’s the best mail server out there, but if you are looking for a relay-only server to install on your development setup, Exim is probably the easiest to get started with.

In this article I’ll show you how to configure Exim to send messages through Gmail.

Continue lendo

Publicado em English, Tutorials | Com a tag , , , , , , , , , , , | 1 comentário

At World Cup Season…

Some people think — and I agree — that the UEFA Champions League is a more relevant tournament than the World Cup itself, but we cannot deny that an event of this magnitude is really awesome to keep an eye on. Even those who doesn’t love the sport tend to follow the teams, the matches, the celebration.

And with the World Cup comes the sweepstakes. Lots of.

Although the rules might change from one place to another, these are the ones we use the most here in Brazil:

  1. Everyone try to predict the score of a particular match, paying a fixed amount for each guess (eg $1.00).
  2. At the end, the ammount collected is divided equally among the winners. If there are no winners: (a) the sweepstake “accumulates”1, or (b) everyone get their money back, or (c) you-crazy-rule-here.

I like this kind of sweepstake, but it could be better in some respects.

First, not everybody has the habit of carrying small bills around, so the sweepstakes manager (a.k.a. YOU) loses a lot of time chasing change. Besides, I think the fixed-valued bet is kind of boring since the amount collected is divided equally among the winners. I think things get more exciting when people can choose how much to pay for each guess, so the amount collected is divided proportionally among the winners. In this case, when several people win, earns more who bets more.

Since I don’t like to do the math myself, here’s the challenge: create a program that receives a list with all guesses and returns the list of winners along with the proportional amount to be paid to each one of them.

So, shall we?

Continue lendo

  1. The amount collected remains available for the next match’s sweepstakes, but everyone must pay again for a new guess.
Publicado em English, Off Topic, Programming | Com a tag , , , , , , , , , | Deixar um comentário

Em Tempos de Copa do Mundo…

Há quem ache — e eu concordo — que a UEFA Champions League é um torneio mais relevante do que a Copa do Mundo, mas não podemos negar que o Mundial mexe com a nossa rotina. Mesmo quem não é apaixonado pelo esporte passa a prestar atenção nas seleções, nas partidas, na festa.

E com a Copa do Mundo vem os bolões. Muitos bolões.

Todo mundo já sabe como funciona um bolão, embora a mecânica possa mudar de um lugar para outro:

  1. Cada palpite tem um valor fixo (ex: R$2,00).
  2. Cada um pode dar quantos palpites quiser.
  3. No final, o montante arrecadado é dividido igualmente entre os vencedores. Se não houverem vencedores: (a) o bolão “acumula”1, ou (b) todo mundo recebe seu dinheiro de volta, ou (c) sua-regra-maluca-aqui.

Esse tipo de bolão é interessante, mas ele podia ser melhor em alguns aspectos.

Primeiro, o organizador acaba perdendo muito tempo correndo atrás de troco, afinal não é todo mundo que anda com dinheiro trocado na carteira. Além disso, valor fixo de palpite é muito chato, pois o valor arrecadado é dividido por igual entre os ganhadores. O bolão fica muito mais interessante quando o valor do palpite é variável e o valor arrecadado é dividido proporcionalmente entre os ganhadores. Assim, no caso de vários ganhadores, ganha mais quem apostar mais.

O problema de se fazer bolões com palpite variável é ter que ficar calculando o valor proporcional a ser dado a cada ganhador. Portanto eis o desafio: criar um programa que receba uma lista com todos os palpites e retorne uma lista com os palpites vencedores juntamente com o valor proporcional a ser pago a cada ganhador.

E aí, topa?

Continue lendo

  1. Todo o montante recebido continua disponível no próximo bolão, mas os participantes devem pagar um novo palpite.
Publicado em Português, Programação | Com a tag , , , , , , , , | Deixar um comentário

Django-Flash e o Novo Framework de Mensagens

No começo da semana, depois de vários meses de trabalho duro e algum atraso, a versão 1.2 do Django foi finalmente lançada. Este talvez seja o lançamento mais aguardado do framework desde seu surgimento, e inclui recursos há muito aguardados, como suporte a múltiplos bancos de dados e um framework de “mensagens”.

Sim, eu disse que o Django 1.2 traz incluso um framework de “mensagens”. Bom, né? Django realmente precisava vir acompanhado de uma app para resolver essa questão. Isso não significa, no entanto, que Django-Flash será descontinuado ou abandonado.

Então, se você usa Django-Flash em seus projetos, não se preocupe! Nada mudará. Django-Flash já é compatível com Django 1.2, e nós ocontinuaremos a mantê-lo por algumas razões.

A primeira delas é que nos importamos com quem usa nosso software. Nós não quebraremos seus projetos se você decidir fazer o upgrade para uma versão mais recente do Django – ou se decidir continuar usando uma versão anterior.

A outra é a liberdade de escolha. Você sabe, não existe uma única forma de se resolver todos os problemas. As pessoas devem ser livres para escolher a ferramenta apropriada a uma determinada situação.

Por exemplo, baseado nas minhas primeiras impressões, existem algumas coisas que eu realmente não gostei no novo framework de “mensagens”:

  1. Ele é verboso mesmo nos casos de uso mais simples
  2. Ele associa mensagens a números de prioridade, encorajando os usuários a usá-lo como um framework de logging/debugging. Quero dizer, um framework de “mensagens” não é um framework de logging/debugging, certo?

Mas essa é apenas a minha opinião. Talvez seja isso que faz do open source algo tão formidável!

Publicado em Português, Programação | Com a tag , , , , | Deixar um comentário