Skip to content

Category: Uncategorized

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.

SHA-1 em Java

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class sha1it {
    public static void main(String[] args) throws NoSuchAlgorithmException {
        if (args.length==0) return;
        
        MessageDigest md = MessageDigest.getInstance("SHA1");
        md.update(args[0].getBytes());
        byte[] newHash = md.digest();
        StringBuffer newHashStringBuffer = new StringBuffer();
        for ( int i = 0; i < newHash.length; i++ )
            newHashStringBuffer.append(Integer.toHexString(newHash[i]&0xff));
        System.out.println(newHashStringBuffer.toString());
    }
}

Vai calcular o SHA-1 do primeiro argumento da linha de comando:

$ java sha1it silveira
665fc8e2ed1b8aa1571a5c9d3e14d89bad4f0

Note que não é uma implementação pura do SHA-1. Simplesmente pedimos por essa implementação, que pode não estar disponível.