Skip to content

Category: Uncategorized

É nóis na mídia

Tô chique. Saiu uma matéria comigo e com o Caio do Brogui.com no jornal Diário da Manhã (Goiânia) em uma matéria intitulada “Como arrecadas dinheiro com blogs”.

Eu na capa do Diário da Manhã
A setinha é para mostrar que eu não sou a matéria sobre violência. 😛

A jornalista Edilaine Pazini entrou em contato comigo e nós trocamos alguns emails e telefonemas para discutir sobre monetização de blogs. Pela matéria até parece que eu sou um barão da blogosfera, o que não é verdade nem de longe. Mas eu fiquei bem contente com o conteúdo da matéria, pena que não houve um link para o eupodiatamatando.com. É sempre muito bom ver a mídia tradicional levando os blogs com mais seriedade do que o de costume.

Para ver a matéria você pode ir na versão online do jornal aqui e procurar na seção de Economia na página 10, ou clicar na imagem abaixo:

Clique para ampliar

E aproveitando a deixa, o Café Com Tapioca desse mês também apareceu na mídia. Foi no jornal O Povo. Eu vou apresentar uma mini-palestra sobre Netbeans 6.

obs: eu tirei várias fotos legais para usar alguma no jornal. Agora estou usando elas como avatar. Agradecimentos a Samaria Confecções e Miudesas (Tel: 3081-4139) na rua Desembargador Leite Alburquerque, no. 844, Aldeota, aqui em Fortaleza. Quando eu precisar de alguma fantasia é lá que eu vou. 😉

Gerando permutações

Muitas vezes para resolver uma única instância de um problema é mais rápido ataca-lo com força bruta do que encontrar um algoritmo geral com uma boa ordem de complexidade. Permutações são de grande utilidade nesse tipo de abordagem.

Permutações em Prolog:

Esse é um código em Prolog que o Wladimir Araujo passou na cadeira de IA.

select(X, [X|Xs], Xs).
select(X, [Y|Ys], [Y|Zs]) :- select(X, Ys, Zs).

permutar([], []).
permutar(Xs, [Z|Zs]) :-
    select(Z, Xs, Ys),
    permutar(Ys, Zs).

Permutações em Python:
Esse é um código de um certo Michael Davies que eu tirei daqui. Ele gera uma lista com todas as permutações de uma lista. Muito bonitinho. 🙂

def all_perms(str):
    if len(str) <=1:
        yield str
    else:
        for perm in all_perms(str[1:]):
            for i in range(len(perm)+1):
                yield perm[:i] + str[0:1] + perm[i:]

Um exemplo de uso:

>>> for p in all_perms(['a','b','c']):
	print p
['a', 'b', 'c']
['b', 'a', 'c']
['b', 'c', 'a']
['a', 'c', 'b']
['c', 'a', 'b']
['c', 'b', 'a']

Outras implementações:
Em outras linguagens o código para gerar permutações geralmente é muito grande, então eu preferi deixar alguns links.

Monitor de Memória do Netbeans

Você já viu em algum screencast um monitor de memória na barra de ferramentas do Netbeans?

Monitor de memória

Bem lega, né? Essa ferramenta mostra um gráfico animado do consumo de memória do Netbeans. Ele também permite que você chame a Coleta de Lixo clicando nele

Para ativar essa ferramenta no Netbeans 6 (download), vá em View → Toolbars → Memory.

View → Toolbas → Memory

Binha Dormindo

Binha dormindo
Binha, a poodle da Juliana (aka Cheetos).

Reparem que ela usou a coleira para tapar os olhos. Engraçado, não é a primeira vez que eu vejo um cachorro usar essa técnica. Eu também não consigo dormir sem um lençol para cobrir o rosto.

Família Simpsons em Prolog

Os Simpsons no sofá

% Fatos.
homer.
marge.
bart.
lisa.
maggie.
mona.
jacqueline.
patty.
abraham.
clancy.
hugo.
louise.
herb.

mulher(marge).
mulher(maggie).
mulher(lisa).
mulher(mona).
mulher(jacqueline).
mulher(selma).
mulher(patty).
mulher(louise).

homem(homer).
homem(bart).
homem(abraham).
homem(clancy).
homem(hugo).
homem(herb).
homem(clancy).

progenitor(homer,bart).
progenitor(homer,lisa).
progenitor(homer,maggie).
progenitor(marge,bart).
progenitor(marge,lisa).
progenitor(marge,maggie).

progenitor(abraham, homer).
progenitor(mona, homer).

progenitor(clancy, marge).
progenitor(clancy, patty).
progenitor(clancy, selma).
progenitor(jacqueline, marge).
progenitor(jacqueline, patty).
progenitor(jacqueline, selma).

progenitor(abraham, herb).

progenitor(herb, hugo).
progenitor(louise, hugo).

% Regras
pai(A,B) :- homem(A), progenitor(A,B).
mãe(A,B) :- mulher(A), progenitor(A,B).

é_pai(A) :- pai(A,_).
é_mãe(A) :- mãe(A,_).

filho(A,B):- homem(A), progenitor(B,A).
filha(A,B):- mulher(A), progenitor(B,A).

irmaos(X,Y) :-
	progenitor(Z,X),
	progenitor(Z,Y),
	X\=Y.

irmao_completos(A,B) :-
	pai(P,A), pai(P,B),
	mãe(M,A), mãe(M,B),
	A\=B.

tio(T,A) :-
	homem(T),
	irmaos(T,X), progenitor(X,A).

tia(T,A) :-
	mulher(T),
	irmaos(T,X), progenitor(X,A).

primo(A,B) :-
	homem(A),
	progenitor(X,A),
	progenitor(Y,B),
	irmaos(X,Y).

prima(A,B) :-
	mulher(A),
	progenitor(X,A),
	progenitor(Y,B),
	irmaos(X,Y).

avô(A,B) :- pai(A,X), pai(X,B).
avó(A,B) :- pai(A,X), pai(X,B).

Referências:

Extrair arquivos .rar incompletos

ícone pacote de David Vignoni

É bem comum eu assisti episódios ou filmes em formatos rmvb que estão divididos em diversos arquivos rar hospedados em vários servidores grátis diferentes. Mas uma das coisas boas do rmvb é a possibilidade de assistir o vídeo antes mesmo de ter finalizado o do download. Como os arquivos estão compactados em vários arquivos rar seria necessário esperar acabar o download de todas as partes e só então descompactar e assisti ao vídeo.

Você pode contornar isso descompactando o arquivo mesmo sem ele ter terminado. Na linha de comando você deve usar o parâmetro -kb:

unrar e -kb arquivo.rar

O unrar vai descompactar o arquivo rar e os arquivos da sequência até onde ele conseguir, e quando ele sentir falta de algum arquivo ele vai falhar mas não vai apagar o que ele já conseguiu extrair.

Bachelorette

Adoro esse clipe. Não é só porque é da Björk mas porque essa recursividade me lembra muito os sonhos em que as vezes eu fico preso.

Cannot create duplicate Solaris fdisk partitions

Eu estava com problemas para instalar o Solaris Express Community Edition b73.

Ocorria de sempre no inicio ou lá pelos 5% da instalação ela falhava. No log da instalação havia:

ERROR: Cannot create duplicate Solaris fdisk partitions (c0d0)

Isso acontecia quando eu instalava o Ubuntu e depois tentava instalar o Solaris. Quando eu tentava instalar o Solaris no disco todo não havia nenhum problema e a instalação transcorria normalmente.

Bem, o que eu acho que estava acontecendo era o seguinte. Por algum motivo o Solaris usa o mesmo código para identificar uma partição Solaris e uma partição linux-swap. Sempre que já havia alguma partição linux-swap ele iria pensar que já havia uma partição Solaris.

Para contornar isso, use uma ferramente da particionamento como o Gparted e modifique temporariamente o linux-swap para alguma outra coisa. No meu caso eu troquei para ext2.

Gparted

Depois é só instalar o Solaris normalmente e o problema não deve se manifestar sumir:

Opensolaris no notebook

Depois reformate a partição para linux-swap e torne o swap ativo:

Ativando o swap

Pronto.