<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.10" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>blog.patrulleros.com.br</title>
	<link>http://blog.patrulleros.com.br</link>
	<description>Mais um blog disponibilizado pela Locaweb</description>
	<pubDate>Wed, 02 Dec 2009 14:07:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.10</generator>
	<language>en</language>
			<item>
		<title>Frango assado</title>
		<link>http://blog.patrulleros.com.br/2009/12/02/frango-assado/</link>
		<comments>http://blog.patrulleros.com.br/2009/12/02/frango-assado/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 14:07:31 +0000</pubDate>
		<dc:creator>Thiago</dc:creator>
		
		<category>cozinha</category>

		<guid isPermaLink="false">http://blog.patrulleros.com.br/2009/12/02/frango-assado/</guid>
		<description><![CDATA[Escrevo este artigo só para me lembrar de algo que comi este ano (2009). Um dia fomos almoçar na casa dos meus pais em BH e meu pai, que é o cozinheiro da família, apresentou um ingrediente diferente.
Antes de continuar, digo que meu pai é um excelente cozinheiro, amador ainda, mas excelente. Sempre gostei dos [...]]]></description>
			<content:encoded><![CDATA[<p>Escrevo este artigo só para me lembrar de algo que comi este ano (2009). Um dia fomos almoçar na casa dos meus pais em BH e meu pai, que é o cozinheiro da família, apresentou um ingrediente diferente.</p>
<p>Antes de continuar, digo que meu pai é um excelente cozinheiro, amador ainda, mas excelente. Sempre gostei dos pratos que ele faz e tento imitar o que consigo.</p>
<p>Nesse dia meu pai fez asas e coxas de frango assados e disse que era um frango especial. Qual não foi minha surpresa ao morder uma coxinha e descobrir que <strong>os ossos tinham sido substituídos por presunto picado!</strong> Fantástica idéia e delicioso! Ele não quis me dizer de jeito nenhum onde tinha comprado o tal frango.</p>
<p>Se alguém de BH souber, me avise. <img src='http://blog.patrulleros.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.patrulleros.com.br/2009/12/02/frango-assado/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Eclipse Galileo pulando breakpoints</title>
		<link>http://blog.patrulleros.com.br/2009/08/13/eclipse-galileo-pulnado-breakpoints/</link>
		<comments>http://blog.patrulleros.com.br/2009/08/13/eclipse-galileo-pulnado-breakpoints/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 16:52:28 +0000</pubDate>
		<dc:creator>Thiago</dc:creator>
		
		<category>Tecnologia</category>

		<guid isPermaLink="false">http://blog.patrulleros.com.br/2009/08/13/eclipse-galileo-pulnado-breakpoints/</guid>
		<description><![CDATA[Estou usando o Eclipse Galileo no trabalho para programar em Java e de repente, no modo de Debug, nenhum breakpoint é respeitado: todos passam direto.
Procurei um pouco na net e descobri que é um problema do JDK 1.6.0.14.
Usem outra versão -> A 1.6.0.16 corrige esse problema.
Fonte

]]></description>
			<content:encoded><![CDATA[<p>Estou usando o Eclipse Galileo no trabalho para programar em Java e de repente, no modo de Debug, nenhum breakpoint é respeitado: todos passam direto.</p>
<p>Procurei um pouco na net e descobri que é um problema do JDK 1.6.0.14.</p>
<p>Usem outra versão -> A 1.6.0.16 corrige esse problema.</p>
<p><a href="http://www.shaunabram.com/eclipse-breakpoints/">Fonte</a>
</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.patrulleros.com.br/2009/08/13/eclipse-galileo-pulnado-breakpoints/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cachorros crescem muito rápido!</title>
		<link>http://blog.patrulleros.com.br/2009/06/20/cachorros-crescem-muito-rapido/</link>
		<comments>http://blog.patrulleros.com.br/2009/06/20/cachorros-crescem-muito-rapido/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 14:00:49 +0000</pubDate>
		<dc:creator>Heringer</dc:creator>
		
		<category>Sem Categoria</category>

		<guid isPermaLink="false">http://blog.patrulleros.com.br/2009/06/20/cachorros-crescem-muito-rapido/</guid>
		<description><![CDATA[Estou impressionado com o tanto que nossa cachorrinha já cresceu em menos de 4 meses!


]]></description>
			<content:encoded><![CDATA[<p>Estou impressionado com o tanto que nossa cachorrinha já cresceu em menos de 4 meses!</p>
<p><img src="http://blog.patrulleros.com.br/up/p/pa/blog.patrulleros.com.br/img/malu.jpg" alt="malu - malu" title="malu - malu" />
</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.patrulleros.com.br/2009/06/20/cachorros-crescem-muito-rapido/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Copa 2014 - Reedição de Uzbequistão vs. Bahrein</title>
		<link>http://blog.patrulleros.com.br/2009/06/17/copa-2014-reedicao-de-uzbequistao-vs-bahrein/</link>
		<comments>http://blog.patrulleros.com.br/2009/06/17/copa-2014-reedicao-de-uzbequistao-vs-bahrein/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 11:47:27 +0000</pubDate>
		<dc:creator>Heringer</dc:creator>
		
		<category>Sem Categoria</category>

		<guid isPermaLink="false">http://blog.patrulleros.com.br/2009/06/17/copa-2014-reedicao-de-uzbequistao-vs-bahrein/</guid>
		<description><![CDATA[Só pra manter a consistência&#8230;
Pelo terceiro segundo quatriênio seguido, Uzbequistão e Bahrein voltam a fazer uma partida decisiva valendo vaga na Copa do Mundo, após campanhas razoáveis na repescagem.
Na última vez, isso aconteceu na repescagem asiática. Dessa vez, entretanto, as seleções anteciparam a partida para a última rodada das eliminatórias asiáticas. O vencedor irá para [...]]]></description>
			<content:encoded><![CDATA[<p>Só pra manter a consistência&#8230;</p>
<p>Pelo <s>terceiro</s> segundo quatriênio seguido, Uzbequistão e Bahrein voltam a fazer uma partida decisiva valendo vaga na Copa do Mundo, após campanhas razoáveis na repescagem.</p>
<p>Na última vez, isso aconteceu na repescagem asiática. Dessa vez, entretanto, as seleções anteciparam a partida para a última rodada das eliminatórias asiáticas. O vencedor irá para a repescagem contra outra seleção asiática, onde o vencedor ainda terá que enfrentar uma seleção da América do Norte ou da América Central.</p>
<p>O jogo que ninguém quer acompanhar acontece hoje, 17/06/2009, às 13h, horário de Brasília.</p>
<p>Esse foi mais um post inútil para manter a coerência com <a href="http://blog.patrulleros.com.br/2008/06/03/copa-2010/">o post de <s>4 anos</s> 1 ano atrás</a> <img src='http://blog.patrulleros.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .
</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.patrulleros.com.br/2009/06/17/copa-2014-reedicao-de-uzbequistao-vs-bahrein/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Clear Case</title>
		<link>http://blog.patrulleros.com.br/2009/03/20/clear-case/</link>
		<comments>http://blog.patrulleros.com.br/2009/03/20/clear-case/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 14:35:54 +0000</pubDate>
		<dc:creator>Thiago</dc:creator>
		
		<category>Sem Categoria</category>

		<guid isPermaLink="false">http://blog.patrulleros.com.br/2009/03/20/clear-case/</guid>
		<description><![CDATA[Post-desabafo: O Rational Clear Case é o pior sistema de controle de versão de artefatos que já foi criado. Esse lixo é lento e entupido de bugs! Já teve caso aqui no trabalho de pessoas (plural!) que já perderam a pasta toda de código fonte de um projeto (tiveram que voltar o backup do servidor, [...]]]></description>
			<content:encoded><![CDATA[<p>Post-desabafo: O Rational Clear Case é o pior sistema de controle de versão de artefatos que já foi criado. Esse lixo é lento e entupido de bugs! Já teve caso aqui no trabalho de pessoas (plural!) que já perderam a pasta toda de código fonte de um projeto (tiveram que voltar o backup do servidor, pois os arquivos sumiram do repositório). Eu já perdi muitos arquivos e tive que refazer muito trabalho, pois é comum que o conteúdo de um arquivo seja apagado quando o mesmo é incluído no Clear Case.</p>
<p>Hoje já tem 2 horas que estou incluindo 2 mil arquivos de código fonte no Clear Case. Já travou 5 vezes. Já deu 4 tipos de erros diferentes. A exibição de status dos arquivos já tornou-se não determinística: cada vez que ativo o programa ele mostra estados diferentes para o mesmo arquivo.</p>
<p>As ferramentas da Rational são horríveis, credo.
</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.patrulleros.com.br/2009/03/20/clear-case/feed/</wfw:commentRss>
		</item>
		<item>
		<title>8 Puzzle - Parte 2</title>
		<link>http://blog.patrulleros.com.br/2009/02/18/8-puzzle-parte-2/</link>
		<comments>http://blog.patrulleros.com.br/2009/02/18/8-puzzle-parte-2/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 14:29:31 +0000</pubDate>
		<dc:creator>Thiago</dc:creator>
		
		<category>Tecnologia</category>

		<guid isPermaLink="false">http://blog.patrulleros.com.br/2009/02/18/8-puzzle-parte-2/</guid>
		<description><![CDATA[Ontem fiz um programa para resolver o 8 puzzle. Testei em casa com o puzzle presente no jogo Professor Layton e para minha tristeza o programa era lento demais. Deixei ligado por vários minutos e a resposta não apareceu. Logicamente precisava aumentar a performance e a maneira mais óbvia era trocar o algoritmo de busca, [...]]]></description>
			<content:encoded><![CDATA[<p>Ontem fiz um programa para resolver o 8 puzzle. Testei em casa com o puzzle presente no jogo <em>Professor Layton</em> e para minha tristeza o programa era lento demais. Deixei ligado por vários minutos e a resposta não apareceu. Logicamente precisava aumentar a performance e a maneira mais óbvia era trocar o algoritmo de busca, já que a busca em largura, apesar de dar a resposta correta, é muito lenta. </p>
<p>Dito isto, troquei para o algoritmo <a href="http://en.wikipedia.org/wiki/A*_search_algorithm">A*</a>, que é o super bambambam dos algoritmos de busca. Para implementar este algoritmo, preciso de uma <a href="http://en.wikipedia.org/wiki/Priority_queue">fila de prioridade</a> e felizmente a biblioteca de Python já possui uma implementação no módulo <a href="http://www.python.org/doc/2.5.2/lib/module-heapq.html">heapq</a>. Também é preciso associar um custo com cada configuração do tabuleiro e fiz da seguinte forma: o custo de um configuração é a soma da quantidade de movimentos até chegar nela mais a soma das <a href="http://en.wikipedia.org/wiki/Taxicab_geometry">distâncias Manhattan</a> de cada quadrado até sua posição na configuração final. Usei uma matriz bacana para armazenar fácil essas distâncias, hehe!</p>
<p>Por fim, rodei o programa e dentro de poucos minutos ele deu uma resposta. Testei e a resposta está correta. Até que enfim resolvi esse puzzle terrível! O código está abaixo.</p>
<p><em>Yesterday I wrote a program to solve the 8 puzzle, but my implementation was too slow. I changed the search algorithm to A* and everyting worked just fine. I finally got through that pesky puzzle in the game.</em></p>
<pre>
<code>
"""
This is a solver for the 8 sliders puzzle.

A state is a snapshot of the game board. It is represented by a list of
9 items, eg. [0,1,2,3,4,5,6,7,8]. The positions in the list map to the
following positions on the board:
        0 1 2
        3 4 5
        6 7 8
We assume the square labelled 0 is the empty square. It is possible
to have more of the same number on the board.
"""

# A Priority Queue implementation
import heapq

""" The allowed moves in the game. For example, 0:[1,3] means that
a square in position zero can be swapped with the square in position one
or the square in position three.
"""
SWAPS = {0:[1,3],
         1:[0,2,4],
         2:[1,5],
         3:[0,4,6],
         4:[1,3,5,7],
         5:[2,4,8],
         6:[3,7],
         7:[4,6,8],
         8:[5,7]}

def solve_eight_puzzle(begin, goal):
    distance = calculate_distance(goal)
    openlist = []
    heapq.heappush(openlist, package_cost(begin, 0, distance))
    closedlist = []
    previous = {begin:None}
    while len(openlist) > 0:
        print len(openlist),
        cost, state = heapq.heappop(openlist)
        closedlist.append(state)
        if state == goal:
            s = goal
            path = []
            while previous[s] is not None:
                path.append(s)
                s = previous[s]
            path.append(s)
            path.reverse()
            return path
        nextstates = [s for s in possible_moves(state) if s not in closedlist]
        for next in nextstates:
            previous[next] = state
            heapq.heappush(openlist, package_cost(next, cost + 1, distance))
    return None

def package_cost(state, path_length, distance):
    cost = path_length
    for i in range(9):
        cost += distance[state[i]][i]
    return (cost, state)

def possible_moves(state):
    izero = index_of_zero(state)
    swaps = SWAPS[izero]
    new_states = []
    for swap in swaps:
        new_state = list(state)
        new_state[izero] = state[swap]
        new_state[swap] = state[izero]
        new_states.append(tuple(new_state))
    return new_states

def instructions(state_list):
    answer = []
    previous = None
    for state in state_list:
        if previous is not None:
            izero1 = index_of_zero(previous)
            izero2 = index_of_zero(state)
            if izero1 / 3 < izero2 / 3:
                # zero went down
                inst = "move a piece up"
            elif izero1 / 3 == izero2 / 3:
                if izero1 < izero2:
                    # zero  went right
                    inst = "move a piece left"
                else:
                    #zero went left
                    inst = "move a piece right"
            elif izero1 / 3 > izero2 / 3:
                # zero went up
                inst = &#8220;move a piece down&#8221;
            answer.append(inst)
        previous = state
    return answer            

def index_of_zero(tup):
    i = 0
    while i < 9:
        if tup[i] == 0:
            return i
        i += 1
    print "Mega error: there is no ZERO in", tup

def calculate_distance(goal):
    distance = {}
    distance[goal[0]] = [0, 1, 2, 1, 2, 3, 2, 3, 4]
    distance[goal[1]] = [1, 0, 1, 2, 1, 2, 3, 2, 3]
    distance[goal[2]] = [2, 1, 0, 3, 2, 1, 4, 3, 2]
    distance[goal[3]] = [1, 2, 3, 0, 1, 2, 1, 2, 3]
    distance[goal[4]] = [2, 1, 2, 1, 0, 1, 2, 1, 2]
    distance[goal[5]] = [3, 2, 1, 2, 1, 0, 3, 2, 1]
    distance[goal[6]] = [2, 3, 4, 1, 2, 3, 0, 1, 2]
    distance[goal[7]] = [3, 2, 3, 2, 1, 2, 1, 0, 1]
    distance[goal[8]] = [4, 3, 2, 3, 2, 1, 2, 1, 0]
    return distance 

# Test
i = 1
print
for inst in instructions(solve_eight_puzzle((1,2,3,4,5,6,7,0,1),(1,2,3,4,0,7,6,5,1))):
    print i, inst
    i += 1
raw_input()
</code>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.patrulleros.com.br/2009/02/18/8-puzzle-parte-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>8 Puzzle</title>
		<link>http://blog.patrulleros.com.br/2009/02/17/8-puzzle/</link>
		<comments>http://blog.patrulleros.com.br/2009/02/17/8-puzzle/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 19:27:25 +0000</pubDate>
		<dc:creator>Thiago</dc:creator>
		
		<category>Tecnologia</category>

		<guid isPermaLink="false">http://blog.patrulleros.com.br/2009/02/17/8-puzzle/</guid>
		<description><![CDATA[O problema 8 puzzle é um quebra cabeça em que temos um tabuleiro 3 por 3 com 8 quadrados deslizantes e um espaço em branco. Dada uma posição inicial dos quadrados, pede-se para chegar em uma outra posição qualquer considerando que:

Os quadrados podem ser deslizados para ocuparem a posição previamente em branco.
Movimentos diagonais são proibidos.
As [...]]]></description>
			<content:encoded><![CDATA[<p>O problema 8 puzzle é um quebra cabeça em que temos um tabuleiro 3 por 3 com 8 quadrados deslizantes e um espaço em branco. Dada uma posição inicial dos quadrados, pede-se para chegar em uma outra posição qualquer considerando que:</p>
<ul>
<li>Os quadrados podem ser deslizados para ocuparem a posição previamente em branco.</li>
<li>Movimentos diagonais são proibidos.</li>
<li>As peças só podem ser deslizadas, isto é, não pode-se tirá-las do tabuleiro.</li>
</ul>
<p>Estava jogando o ótimo <em><a href="http://en.wikipedia.org/wiki/Professor_Layton_and_the_Curious_Village">Professor Layton and the Curious Village</a></em> quando emperrei num dos puzzles, que é um 8 puzzle (Puzzle 107: A Worm&#8217;s Dream). Depois de milhares de movimentos, desisti e resolvi escrever um programa para resolver o problema para mim, hehe. Apresento a solução abaixo, escrita em Python 2.5.</p>
<p>Adotei a abordagem mais simples, é uma busca em largura sem heurística no grafo onde os vértices são as diversas configurações do tabuleiro. Primeiro implementei a busca como uma função recursiva, mas estava estourando a pilha (<a href="http://stackoverflow.com/">Stack Overflow</a>) então reescrevi a função de forma iterativa.</p>
<p>Conseguem ver como ela funciona? O que pode ser feito para melhorar a performance? <img src='http://blog.patrulleros.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Alguém tem uma idéia melhor para como armazenar a seqüência de movimentos que o jogador tem que fazer?</p>
<p><em><br />
This Python 2.5 program solves the 8 puzzle. It uses a simple breadth first search algorithm in a graph where the vertices are game board snapshots.</p>
<p>Can you see how it works? How can the performance be improved? Does someone have a better idea of how the answer should be stored or presented?<br />
</em></p>
<pre>
<code>
"""
This is a solver for the 8 sliders puzzle.

A state is a snapshot of the game board. It is represented by a list of
9 items, eg. [0,1,2,3,4,5,6,7,8]. The positions in the list map to the
following positions on the board:
        0 1 2
        3 4 5
        6 7 8
We assume the square labelled 0 is the empty square. It is possible
to have more of the same number on the board.
"""

""" The allowed moves in the game. For example, 0:[1,3] means that
a square in position zero can be swapped with the square in position one
or the square in position three.
"""
SWAPS = {0:[1,3],
         1:[0,2,4],
         2:[1,5],
         3:[0,4,6],
         4:[1,3,5,7],
         5:[2,4,8],
         6:[3,7],
         7:[4,6,8],
         8:[5,7]}

def solve_eight_puzzle(begin, goal):
    openlist = [begin]
    closedlist = []
    previous = {tuple(begin):None}
    while len(openlist) > 0:
        state = openlist.pop(0)
        closedlist.append(state)
        if state == goal:
            s = tuple(goal)
            path = []
            while previous[s] is not None:
                path.append(s)
                s = previous[s]
            path.append(s)
            path.reverse()
            return path
        nextstates = [s for s in possible_moves(state) if s not in closedlist]
        for next in nextstates:
            previous[tuple(next)] = tuple(state)
        openlist.extend(nextstates)
    return None

def possible_moves(state):
    izero = state.index(0)
    swaps = SWAPS[izero]
    new_states = []
    for swap in swaps:
        new_state = state[:]
        new_state[izero] = state[swap]
        new_state[swap] = state[izero]
        new_states.append(new_state)
    return new_states

# Test
print solve_eight_puzzle([0,1,3,4,2,5,7,8,6],[1,2,3,4,5,6,7,8,0])
</code>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.patrulleros.com.br/2009/02/17/8-puzzle/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Top Games</title>
		<link>http://blog.patrulleros.com.br/2009/02/17/top-games/</link>
		<comments>http://blog.patrulleros.com.br/2009/02/17/top-games/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 16:25:05 +0000</pubDate>
		<dc:creator>Thiago</dc:creator>
		
		<category>Sem Categoria</category>

		<guid isPermaLink="false">http://blog.patrulleros.com.br/2009/02/17/top-games/</guid>
		<description><![CDATA[Farei aqui, agora, uma lista pessoal dos (aproximadamente) 7 melhores jogos que já joguei em cada hardware:
Atari

Adventure
Hero
River Raid
Keystone Keepers
Enduro
Frogger
Q*bert

MSX

Knightmare
Penguin Adventure
Magical Tree
Payload
The Castle
Nemesis
Atlantis

Master System

Phantasy Star
Psycho Fox
Land of Illusion
Alex Kidd in Miracle World
Sonic
California Games
Lemmings

Mega Drive

Phantasy Star 4
Super Street Fighter 2
Beyond Oasis
Road Rash 2
Sonic 3 &#038; Knuckles
Shinobi 3
Jungle Strike
Landstalker
Flashback
ToeJam &#038; Earl

Saturn

Guardian Heroes
Dragon Force
X-Men vs Street Fighter
Virtual On
Mr. Bones
Panzer [...]]]></description>
			<content:encoded><![CDATA[<p>Farei aqui, agora, uma lista pessoal dos (aproximadamente) 7 melhores jogos que já joguei em cada hardware:</p>
<p>Atari</p>
<ol>
<li>Adventure</li>
<li>Hero</li>
<li>River Raid</li>
<li>Keystone Keepers</li>
<li>Enduro</li>
<li>Frogger</li>
<li>Q*bert</li>
</ol>
<p>MSX</p>
<ol>
<li>Knightmare</li>
<li>Penguin Adventure</li>
<li>Magical Tree</li>
<li>Payload</li>
<li>The Castle</li>
<li>Nemesis</li>
<li>Atlantis</li>
</ol>
<p>Master System</p>
<ol>
<li>Phantasy Star</li>
<li>Psycho Fox</li>
<li>Land of Illusion</li>
<li>Alex Kidd in Miracle World</li>
<li>Sonic</li>
<li>California Games</li>
<li>Lemmings</li>
</ol>
<p>Mega Drive</p>
<ol>
<li>Phantasy Star 4</li>
<li>Super Street Fighter 2</li>
<li>Beyond Oasis</li>
<li>Road Rash 2</li>
<li>Sonic 3 &#038; Knuckles</li>
<li>Shinobi 3</li>
<li>Jungle Strike</li>
<li>Landstalker</li>
<li>Flashback</li>
<li>ToeJam &#038; Earl</li>
</ol>
<p>Saturn</p>
<ol>
<li>Guardian Heroes</li>
<li>Dragon Force</li>
<li>X-Men vs Street Fighter</li>
<li>Virtual On</li>
<li>Mr. Bones</li>
<li>Panzer Dragoon Saga</li>
<li>Radiant Silvergun</li>
<li>Burning Rangers</li>
<li>Nights into Dreams</li>
</ol>
<p>Dreamcast</p>
<ol>
<li>Soul Calibur</li>
<li>Shenmue</li>
<li>Rez</li>
<li>Jet Grind Radio</li>
<li>Power Stone 2</li>
<li>Crazy Taxi</li>
<li>Skies of Arcadia</li>
</ol>
<p>PC</p>
<ol>
<li>Planescape:Torment</li>
<li>Fallout</li>
<li>Baldur&#8217;s Gate 2</li>
<li>Starcraft</li>
<li>Duke Nukem 3D</li>
<li>Grim Fandango</li>
<li>Total Annihilation</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.patrulleros.com.br/2009/02/17/top-games/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pirataria e o mercado de jogos</title>
		<link>http://blog.patrulleros.com.br/2009/02/13/pirataria-e-o-mercado-de-jogos/</link>
		<comments>http://blog.patrulleros.com.br/2009/02/13/pirataria-e-o-mercado-de-jogos/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 10:17:12 +0000</pubDate>
		<dc:creator>Thiago</dc:creator>
		
		<category>Sem Categoria</category>

		<guid isPermaLink="false">http://blog.patrulleros.com.br/2009/02/13/pirataria-e-o-mercado-de-jogos/</guid>
		<description><![CDATA[Têm-se falado muito sobre como a pirataria está afetando o mercado de jogos. Grandes produtoras estão procurando investir mais em consoles do que em PCs devido às proteções que existem. 
As técnicas de proteção contra cópia em jogos acabam prejudicando justamente os compradores de jogos, pois sofrem com incompatibilidade, lentidão, com a incoveniência de ter [...]]]></description>
			<content:encoded><![CDATA[<p>Têm-se falado muito sobre como a pirataria está afetando o mercado de jogos. Grandes produtoras estão procurando investir mais em consoles do que em PCs devido às proteções que existem. </p>
<p>As técnicas de proteção contra cópia em jogos acabam prejudicando justamente os compradores de jogos, pois sofrem com incompatibilidade, lentidão, com a incoveniência de ter que deixar o CD do jogo no drive, etc, coisa pela qual os usuários de jogos piratas não têm que passar. Mas vejam o experimento com World of Goo, jogo premiadíssimo, produzido por 2 pessoas. Este jogo foi lançado sem qualquer proteção contra cópia, como uma maneira dos autores analisarem se a existência de proteção influencia o nível de pirataria ou não. Descobriram que não, pois mesmo o jogo sendo barato, 85% dos jogadores usam cópias piratas. </p>
<p>A produção de jogos consome dinheiro. Se não ha incentivo financeiro para criar jogos, logicamente não haverá mais tantos jogos (seria uma nova bolha?). </p>
<p>Eu passei a acreditar que a única maneira de reduzir a pirataria é conscientizar os jogadores a comprarem jogos originais. Ao menos, aqueles que eles gostaram de verdade.</p>
<p>Obs: Isso não se aplica a MMORPGs, mas não é todo mundo que gosta deles.
</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.patrulleros.com.br/2009/02/13/pirataria-e-o-mercado-de-jogos/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Histórias da faculdade - La onda quadrada</title>
		<link>http://blog.patrulleros.com.br/2008/12/19/historias-da-faculdade-la-onda-quadrada/</link>
		<comments>http://blog.patrulleros.com.br/2008/12/19/historias-da-faculdade-la-onda-quadrada/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 18:48:50 +0000</pubDate>
		<dc:creator>Thiago</dc:creator>
		
		<category>Abobrinhas</category>

		<guid isPermaLink="false">http://blog.patrulleros.com.br/2008/12/19/historias-da-faculdade-la-onda-quadrada/</guid>
		<description><![CDATA[Numa aula de laboratório de física na faculdade, o Matheus e eu fizemos uma dupla. O tema na época era correntes elétricas, V = ri e coisas do gênero. A aula consistia em um exercício, que era encaixar capacitores, resistências e fios numa placa de forma que quando a corrente passasse por um osciloscópio a [...]]]></description>
			<content:encoded><![CDATA[<p>Numa aula de laboratório de física na faculdade, o Matheus e eu fizemos uma dupla. O tema na época era correntes elétricas, V = ri e coisas do gênero. A aula consistia em um exercício, que era encaixar capacitores, resistências e fios numa placa de forma que quando a corrente passasse por um osciloscópio a corrente mostrada no gráfico apresentasse certas formas. Estávamos com problema para conseguir exibir uma das dadas formas e pedimos ajuda ao professor depois de mais de meia hora de tentativas. Ele olhou, olhou e então começou o surto!!! Ele arrancava os fios loucamente e gritava: &#8220;Donde está la onda quadrada a derecha? DONDE ESTÁ LA ONDA QUADRADA A DERECHA ?!&#8221;. Depois disso, sem dizer mais nada, ele virou de costas e foi embora, deixando fios e componentes jogados para todo lado. O Matheus e eu ficamos estupefatos olhando um para o outro, sem acreditar no que acabamos de ver. </p>
<p>Depois disso o monitor do laboratório veio nos ajudar e identificou que um dos componentes estava com problema.</p>
<p>E juro que esse professor avaliava os trabalhos de acordo com a cara de cada aluno. Era só entregar os trabalhos para ele que ele dava uma olhada rápida para sua cara e já escrevia a nota na capa do trabalho. As garotas sempre tiravam boas notas.</p>
<p>(Digo que ele não lia porque alguns de nossos colegas rechearam o trabalho de frases sem sentido e palavrões. Tiraram a mesma nota de sempre&#8230;)
</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.patrulleros.com.br/2008/12/19/historias-da-faculdade-la-onda-quadrada/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
