Skip to content

Category: Uncategorized

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.

A trilogia de cinco livros

Os cinco livros da trilogia dos mochileiros das galáxias de Dougla Adams

Terminei de ler os cinco livros da “trilogia” do Guia Do Mochileiro das Galáxias do Douglas Adams. É uma série que eu já queria ler a um bom tempo e que eu não me arrependi.

Excelente para quem gosta de ficção científica, crítica a sociedade e muito humor.

Recomendo fortemente, principalmente porque são livros que foram lançados no Brasil a preços bem acessíveis.

Python: capturando o retorno da linha anterior

Lendo um código eu me deparei com o operador _ do Python.
Ele é uma variável especial para ser usada quando estamos trabalhando no console e queremos referenciar o valor de retorno da linha anterior.
Por exemplo:

>>> 42
42
>>> 1 + _
43

>>> import os
>>> os.getcwd()
'/home/silveira'
>>> _ + '/pasta'
'/home/silveira/pasta'

Eu gostaria ter sabido disso quando eu usava o console do Python pelo meu antigo celular…