<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>blog do chester &#187; software</title>
	<atom:link href="http://chester.blog.br/archives/category/software/feed" rel="self" type="application/rss+xml" />
	<link>http://chester.blog.br</link>
	<description>livros, quadrinhos, micros antigos, web, política, software e tudo mais que me der na telha</description>
	<lastBuildDate>Thu, 19 Nov 2009 01:17:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>simpleyql &#8211; usando as APIs do Yahoo! em Java</title>
		<link>http://chester.blog.br/archives/2009/09/simpleyql-usando-as-apis-do-yahoo-em-java.html</link>
		<comments>http://chester.blog.br/archives/2009/09/simpleyql-usando-as-apis-do-yahoo-em-java.html#comments</comments>
		<pubDate>Sat, 26 Sep 2009 06:21:23 +0000</pubDate>
		<dc:creator>chester</dc:creator>
				<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://chester.blog.br/?p=3451</guid>
		<description><![CDATA[O simpleyql é uma biblioteca que facilita bastante o desenvolvimento de aplicações em Java que manipulem dados de usuários do Yahoo! Meme (ou de quaisquer sites do Yahoo! que estejam expostos via YQL e oAuth).
Na teoria, é possível usar uma biblioteca de oAuth pré-existente para isso (o próprio simpleyql se baseia em classes disponíveis no [...]]]></description>
			<content:encoded><![CDATA[<p>O <a href="http://simpleyql.sourceforge.net/">simpleyql</a> é uma biblioteca que facilita bastante o desenvolvimento de aplicações em Java que manipulem dados de usuários do <a href="http://meme.yahoo.com">Yahoo! Meme</a> (ou de quaisquer sites do Yahoo! que estejam expostos via <a href="http://developer.yahoo.com/yql/">YQL</a> e <a href="http://developer.yahoo.com/oauth/">oAuth</a>).</p>
<p>Na teoria, é possível usar uma biblioteca de oAuth pré-existente para isso (o próprio simpleyql se baseia em <a href="http://oauth.googlecode.com/svn/code/java/core/">classes disponíveis no oauth.net</a>), mas quando eu e a  <a href="http://baniverso.com/">Bani</a> começamos o <a href="http://memethis.com/">MemeThis</a> (falo dele em outro post) vimos que as particularidades do Y! tornariam o código demasiadamente complexo.</p>
<p>Além disso, essas classes exigem um grau de entendimento de oAuth maior do que o puramente conceitual. E o fato de o Yahoo! disponibilizar <a href="http://developer.yahoo.com/social/sdk/">bibliotecas para outras linguagens</a> &#8211; mas <strong>não</strong> para Java &#8211; foi a gota d&#8217;água que motivou a criação da biblioteca.</p>
<p>Com ela, basta uma quantidade mínima de <a href="http://sourceforge.net/apps/mediawiki/simpleyql/index.php?title=Usage">código</a> para iniciar o processo de autorização do usuário &#8211; um passo necessário quando ele acessa sua aplicação pela primeira vez. Dali em diante basta manter a chave de acesso atualizada no banco de dados ou equivalente, e você poderá usá-la em uma chamada simples sempre que quiser interagir com o Y! em nome da pessoa.</p>
<p>Parece simples? Ótimo, essa era a idéia: encapsular os <a href="http://developer.yahoo.com/oauth/guide/oauth-auth-flow.html">detalhes</a> do vai-e-vem de tokens e permitir ao desenvolvedor focar apenas na aplicação. A biblioteca é compatível com o <a href="http://appengine.google.com">Google App Engine</a> (o MemeThis roda nele), então não tem mais desculpa: se a sua praia é Java, a hora de desenvolver pro Yahoo! Meme é agora.</p>
]]></content:encoded>
			<wfw:commentRss>http://chester.blog.br/archives/2009/09/simpleyql-usando-as-apis-do-yahoo-em-java.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>timefix (ou: Acertando o Horário de Verão em Java II)</title>
		<link>http://chester.blog.br/archives/2007/02/timefix.html</link>
		<comments>http://chester.blog.br/archives/2007/02/timefix.html#comments</comments>
		<pubDate>Sat, 24 Feb 2007 18:12:10 +0000</pubDate>
		<dc:creator>chester</dc:creator>
				<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://chester.blog.br/archives/2007/02/timefix.html</guid>
		<description><![CDATA[Ano passado escrevi um texto sobre o problema do Java com o horário de verão, explicando as causas, apontando soluções comuns e sugerindo uma nova - cuja principal vantagem é dispensar alterações no código-fonte da aplicação afetada. Sua maior...
]]></description>
			<content:encoded><![CDATA[<p><img src="http://chester.blog.br/archives/img/timezone.jpg" alt="" width="200" height="212" align="right" /></p>
<p>Ano passado escrevi um <a href="http://chester.blog.br/archives/2006/10/acertando_o_hor.html">texto sobre o problema do Java com o horário de verão</a>, explicando as causas, apontando soluções comuns e sugerindo uma nova &#8211; cuja principal vantagem é dispensar alterações no código-fonte da aplicação afetada.</p>
<p>Sua maior desvantagem é que o arquivo com o código de correção tem que ser recompilado a cada mudança de regra do horário de verão (i.e., uma vez por ano, pelo menos) e re-copiado em cada servidor  &#8211; o que fica complicado quando se cuida de dezenas ou centenas deles.</p>
<p>Em vista disso (e com a ajuda da classe <a href="http://www.bmsi.com/java/#TZ">ZoneInfo</a>, de autoria de Stuart D. Gathman), criei o <strong>timefix</strong> &#8211; uma biblioteca que lê automaticamente o arquivo <code>/etc/localtime</code> do servidor, ajusta o timezone default e chama a aplicação final. Desta forma, basta reiniciá-la quando o arquivo for atualizado parq que as novas datas de início e fim do horário de verão entrem em vigor.</p>
<p><span id="more-2285"></span></p>
<p>A <a href="http://code.google.com/p/timefix/">página do projeto</a> no Google Code hospeda o código-fonte e a biblioteca compilada (disponíveis sob a licença <a href="http://www.gnu.org/licenses/lgpl.html">LGPL</a>).</p>
<p><strong>Download e Instalação</strong></p>
<p>Para usar, basta <a href="http://code.google.com/p/timefix/downloads/list">baixar o timefix-1.0.jar</a> (ou a versão mais atual, se houver) e fazer duas mudanças no script de inicialização do servidor (ex.: no <code>catalina.sh</code> do Tomcat, ou no <code>/etc/init.d/minha_aplicacao</code>):</p>
<ol>
<li>Adicionar o .jar no CLASSPATH. Ex.: <code>export CLASSPATH=$CLASSPATH:timefix-1.0.jar</code></li>
<li>Colocar o texto &#8220;tiimefix&#8221; antes do nome da classe original. Por exemplo, se o script original era:<code> java com.xyz.ClassePrincipalDaMinhaApp param1 param2 param3</code>
<p>mude para:</p>
<p><code> java <span style="color:red">timefix</span> com.xyz.ClassePrincipalDaMinhaApp param1 param2 param3</code></li>
</ol>
<p>Desenvolvedores de aplicações preocupados com a questão podem também efetuar a chamada ao método <a href="http://timefix.googlecode.com/svn/trunk/timefix/docs/br/blog/chester/timefix/Timefix.html#fixTimeZone()"><code>fixTimeZone()</code></a> ao inicializar a mesma (ou em intervalos regulares, dispensando o restart quando houver mudança nas regras). Mas este método torna a aplicação dependente do SO hospedeiro (pessoalmente, não recomendo isso).</p>
<p><strong>Sistemas operacionais suportados</strong></p>
<p>Esta solução só funciona em Linux e outros sistemas estilo Unix que usem o formato do <a href="http://www.twinsun.com/tz/tz-link.htm">banco de dados <code>tz</code></a> (e exige que o arquivo de timezone compilado &#8211; ou um link simbólico para ele &#8211; esteja no <code>/etc/localtime</code>). Testei em Linux (Ubuntu 6.06.1 / Kernel 2.6.15) e em Mac OS X (10.4.8).</p>
<p>Administradores de servidores Windows podem tentar criar o diretório <code>\etc\localtime</code> no drive onde a aplicação roda e copiar um arquivo de timezone compilado para lá (ex.: copiado de uma máquina Linux ou da web). Não tentei fazer isso, mas teoricamente funciona &#8211; se alguém fizer funcionar na prática vale deixar um comentário.</p>
]]></content:encoded>
			<wfw:commentRss>http://chester.blog.br/archives/2007/02/timefix.html/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>A Busca de Epaminondas Jr.</title>
		<link>http://chester.blog.br/archives/2006/06/a_busca_de_epam.html</link>
		<comments>http://chester.blog.br/archives/2006/06/a_busca_de_epam.html#comments</comments>
		<pubDate>Tue, 20 Jun 2006 06:41:10 +0000</pubDate>
		<dc:creator>chester</dc:creator>
				<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://chester.blog.br/archives/2006/06/a_busca_de_epam.html</guid>
		<description><![CDATA[Este jogo, criado no início dos anos 90, foi uma das primeiras coisas que disponibilizei na web, não sem um certo constrangimento: minha definição de "humor" mudou um pouco ao longo dos últimos quinze anos. Embora o jogo não use...
]]></description>
			<content:encoded><![CDATA[<p><img width="300" height="127" src="http://chester.blog.br/img/epamin.gif" alt="tela do jogo 'A Busca de Epaminondas Jr.'" align="right" style="margin-left:2px">Este jogo, criado no início dos anos 90, foi uma das primeiras coisas que disponibilizei na web, não sem um certo constrangimento: minha definição de &#8220;humor&#8221; mudou um pouco ao longo dos últimos quinze anos.</p>
<p>Embora o jogo não use (nem de longe) os recursos dos PCs modernos, os e-mails que recebo mostram que ainda hoje há quem se divirta um pouco com ele. Este fenômeno curioso me levou a falar um pouco mais a respeito &#8211; incluindo algumas curiosidades e dicas para ajudar quem ficou travado em algum quebra-cabeças.</p>
<p><span id="more-2324"></span></p>
<p><b>Como Jogar</b></p>
<p>O jogo é do tipo &#8220;text adventure&#8221;, ou seja, você assume o papel de um personagem (Epaminondas) que tem uma missão a cumprir: recuperar um disquete perdido por seu patrão. Para cumprir esta missão você terá que interagir com o mundo do jogo, através das seguintes janelas:</p>
<p><img width="486" height="157" src="http://chester.blog.br/archives/img/epa_mensagens.png"/><br />
Sempre que você entra num local, uma descrição do mesmo (e dos objetos que estão visíveis) aparece aqui. Suas ações também terão seus resultados mostrados nesta janela, enfim, a história do jogo corre nela.</p>
<p><img width="529" height="36"  src="http://chester.blog.br/archives/img/epa_comando.png"><br />
Aqui você digita os comandos. Um comando é sempre composto por um verbo e um objeto, sendo os termos intermediários eliminados. Por exemplo, CONVERSAR COM O HOMEM e CONVERSAR HOMEM produzem o mesmo resultado.</p>
<p><img width="113" height="85"  src="http://chester.blog.br/archives/img/epa_direcoes.png" ><br />
A janela de direções permite a você saber quais saídas estão disponíveis, nas seis direções: norte, sul, leste, oeste, cima e baixo. Você pode andar numa direção com o comando completo (ex.: IR PARA O SUL ou IR SUL) ou apenas digitando a inicial (ex.: S).</p>
<p><img width="160" height="157"  src="http://chester.blog.br/archives/img/epa_objetos.png" ><br />
Muitos dos enigmas do jogo consistem em PEGAR e USAR objetos na hora certa (ou mesmo DEIXAR um objeto para que um personagem o pegue). Esta janela lista os objetos que você tem em mãos(caso tenha mais objetos do que as linhas da janela, o comando LISTAR permite revelar os que estão ocultos).</p>
<p><img width="530" height="48" src="http://chester.blog.br/archives/img/epa_avisos.png"><br />
Além de avisos como &#8220;pressione qualquer tecla para continar&#8221;, esta última janela exibe um menu de opções quando você tecla ESC. Neste menu você pode salvar (gravar) o jogo em andamento, carregar um jogo salvo anteriormente, obter ajuda, reiniciar ou sair do programa.</p>
<p>
<b>Download e Instalação</b></p>
<p>Para instalar é só baixar o <a href="http://chester.blog.br/download/epa15.zip">epa15.zip</a> (84KB), descompactar em qualquer pasta e dar um duplo clique no AVENTURA.BAT. </p>
<p>Qualquer PC deve ser capaz de rodar este jogo (ele foi desenvolvido em um PC-XT de 4.77Mhz e 512KB, i.e., 0,5MB de RAM), independente da versão de DOS ou Windows.</p>
<p>Algumas versões (notadamente o Windows NT e o 2000) eventualmente se enroscam com a abertura &#8211; se for o caso, clique no CA1.EXE ao invés do AVENTURA.BAT e vá direto ao jogo (sua vida não será a mesma sem os os sons bizonhos no alto-falante e o clássico &#8220;T&#8221; pulando, mas é o jeito).</p>
<p>Para &#8220;entrar no clima&#8221;, sugiro dar um Ctrl+Enter (mudando para o modo &#8220;tela cheia&#8221;, se o seu Windows e driver de vídeo suportarem). O ideal era arrumar um monitor monocromático de fósforo verde, mas esse eu sei que é mais difícil.</p>
<p>Tentei rodar no Mac (PPC) via DOSBox, sem muito sucesso &#8211; talvez em Linux, ou em Mac com plataforma Intel a coisa funcione melhor. Se alguém tiver uma dica nesse sentido, agradeço!</p>
<p>
<b>Dicas</b></p>
<p>O jogo possui cinco &#8220;fases&#8221; distintas, e uma vez alcançada uma nova fase, você não volta à anterior. Isso tem um efeito colateral desagradável: existe a possibilidade de você deixar um objeto importante para trás (é uma chance pequena, afinal, é preciso fuçar muito para encontrar a saída de cada uma delas).</p>
<p>Por isso, grave o jogo sempre que entrar numa nova fase (ESC, Gravar), com um nome diferente (ex.: INICIOF1, INICIOF2). Aliás, a sua taxa de mortalidade nesse jogo é alta, recomendo gravar sempre que tiver algum tipo de sucesso.</p>
<p>A coisa mais importante é OLHAR (ou EXAMINAR) todos os objetos e pessoas que encontrar. EXAMINAR LOCAL geralmente vai repetir a descrição dada, mas vale a pena EXAMINAR PAREDE, EXAMINAR CHAO e outros cantinhos desse gênero, sobretudo em lugares diferenciados.</p>
<p>Você pode CONVERSAR com boa parte dos personagens encontrados, e costumam sair boas dicas daí. Cuidado com os jogos de palavras &#8211; creio que a falta de mulher me deixou um pouco cruel nessa época.</p>
<p>Um dado importante: não é possível DAR um item a alguém, porque o jogo só entende frases com um verbo e um objeto. Se você quiser dar um objeto a um personagem, basta DEIXAR o objeto. Se o personagem se interessar, ele pega, senão você pode pegar ele de volta.</p>
<p>O jogo não gosta de palavrões &#8211; a insistência pode enfurecê-lo, e ele não vai se preocupar com o andamento do jogo se isso acontecer.</p>
<p>A maior parte dos objetos tem alguma utilidade. Não contei, mas creio que são apenas dois ou três que não servem pra nada, e dificilmente um objeto é usado mais de uma vez. Não tem limite, então pegue tudo o que conseguir.</p>
<p>Cada um joga adventures de texto à sua maneira, mas eu me dou muito melhor desenhando um mapa à medida em que vou jogando. Mudanças de plano (cima/baixo) exigem criativade, por isso não as usei muito no jogo. Quando um meio de transporte te levar a um lugar novo (e não for possível voltar), comece um novo mapa.</p>
<p>Eu costumava desenhar na mão, mas usando uma planilha eletrônica moderna foi possível esboçar o mapa abaixo em poucos minutos. Ele mostra os primeiros locais do jogo, dando uma idéia de como começar. À medida que o jogo prossegue, pode-se anotar a posição de objetos e personagens relevantes, enfim, tudo o que puder ajudar lá adiante, caso seja preciso retomar.</p>
<p><center><img width="470" height="395" src="http://chester.blog.br/archives/img/epa_mapa.png" ></center></p>
<p>
<b>Curiosidades Gerais</b></p>
<ul>
<li>O velhinho é uma &#8220;homenagem&#8221; ao velho amigo (ou seria amigo velho) Hilton, fanático por xadrez na época. O triste é que eu acho que ele é mais novo que eu&#8230;</li>
<p>
<li>Eu tinha 14 anos quando comecei a desenvolver o jogo (1989). Após dois anos de engavetamento e desengavetamento ele tomou sua forma final (a versão que eu chamo de 1.5b). A única mudança que fiz depois disso foi quando coloquei na web: o arquivo <a href="http://chester.blog.br/download/leiame_epa.html">LEIAME.TXT</a> (clique para ver em HTML) substituiu o programa LEIAME.</li>
</p>
<p>
<li>Muitas coisas boas (e algumas das ruins) foram inspiradas por adventures da Sierra On-Line para PC, notadamente por Leisure Suit Larry.  Adventures do Apple II (The Incredible Hulk e Swiss Family Robinson me vêm à mente) também influenciaram.</li>
</p>
<p>
<li>A quantidade de dinheiro que você tem no jogo flutua. Eu pensei em fazer itens &#8220;compráveis&#8221; (como no Larry), mas o jeito com que o jogo lida com isso ficou bacana no final.</li>
</p>
<p>
<li>Quando o jogo estava em desenvolvimento, havia um jeito de se &#8220;teleportar&#8221; para qualquer local, digitando BEIJAR AKIRA (eu gostava muito de <a  href="http://en.wikipedia.org/wiki/Akira_%28manga%29">Akira</a>, era o gibi mais legal da galáxia para mim naquela época). Na versão final eu sumi com o AKIRA, impossibilitando esta brincadeira, mas se você tentar ele apenas vai dizer que ele não está ali (ou seja, a palavra AKIRA permaneceu no dicionário).</li>
</p>
<p>
<li>Por conta de limitações técnicas (vide seção seguinte para detalhes), o jogo usa o trema (¨) no lugar do til (~), e aspas simples (&#8217;) no lugar das duplas (&#8221;). No entanto, eu também eu colocava um espaço em branco entre o final da frase e o ponto de interrogação/exclamação, e <b>isso</b> não era limitação técnica, mas pessoal. Só parei com essa mania vários anos depois, ao perceber que não faz o menor sentido estético ou gramatical.</li>
</p>
<p>
<li>O jogo tem dois finais (dependendo de você ter encontrado ou não uma chave, escondida em  um lugar bem improvável).</li>
</ul>
<p>
<b>Curiosidades Técnicas</b></p>
<ul>
<li>O jogo é todo feito em Turbo Basic (uma tentativa da Borland de repetir o sucesso do Turbo Pascal nesta linguagem). Num dado momento, estourei o limite (32K ou 64K, não lembro) do editor, e não cosneguia mais dar andamento no jogo. Tentei migrar para o Microsoft QuickBasic (versão compilada do QBasic que vinha com o MS-DOS 5.0), mas ele era muito instável (mais que o Turbo Basic, que não era exatamente pacífico também).</p>
<p>A solução foi voltar para o Turbo Basic. Fiz um programinha que extraía as strings do código-fonte original para um arquivo à parte, e substituia elas por referências a um array, que eu carregava na inicialização do programa, o que me deu mais fôlego. Hoje fico pensando se o Turbo Basic não tinha algum sistema de múltiplos fontes (quase que certamente tinha), ou se poderia ter tentado um editor externo, mas na época foi a solução que eu consegui.</li>
</p>
<p>
<li>A abertura foi feita em C (não lembro em qual compilador). Eu cheguei a fazer ela quase toda em Turbo Basic também, mas não consegui resolver o lance do som sair junto com a animação, então apelei.</li>
</p>
<p>
<li>Eu desconhecia qualquer teoria sobre parsers, analisadores léxicos e afins. O processo de parse consistia em remover palavras não-relevantes (artigos, preposições), indexar o verbo e o objeto (recorrendo a um dicionário de sinônimos) e chamar a subrotina correspondente ao verbo, sem maiores sofisticações.</li>
</p>
<p>
<li>A programação teve forte influência do adventure da INPUT e de outras revistas e livros de programação da época.</li>
</p>
<p>
<li>O jogo foi desenvolvido num XT com monitor CGA monocromático. Quando tive acesso a uma máquina com monitor colorido (EGA), a primeira coisa que fiz (depois de rastejar e implorar por alguns minutinhos para o funcionário da <a href="http://www.educacao.sp.gov.br/">SEE/SP</a> que a ocupava) foi testar lá &#8211; onde vi que as cores eram absolutamente estapafúrdias e ilegíveis. Mudar para cores bacanas estragava o jogo no monitor de fósforo verde, então estabeleci um meio-termo, que é o que se vê hoje.</li>
</p>
<p>
<li>O uso do trema no lugar do til se deve ao fato de que a maioria (se não todas) das placas de vídeo CGA não permitia trocar a tabela de caracteres (vulgo &#8220;codepage&#8221;) padrão quando se estava em modo texto. Esta tabela, conhecida como <a href="http://en.wikipedia.org/wiki/Code_page_437" target="blank">CP437</a> associava aos códigos &#8220;00&#8243; e &#8220;01&#8243; os caracteres &#9786; e &#9787;, respectivamente &#8211; o que fazia com que as pessoas definissem arquivos executáveis e binários em geral (onde esses códigos de valor baixo aparecem bastante) como &#8220;aquelas bagunças cheias de carinhas&#8221;.</li>
</p>
<p>
<li>Já as aspas simples eram preferidas porque, em Basic, as aspas duplas são reservadas como delimitadores de strings, obrigando o uso de uma seqüência de escape (que nem sei se existia no Turbo Basic) ou de concatenação (que consumiria tempo de desenvolvimento e memória). Ao contrário da questão do til, essa até daria para contornar, mas seria trabalhoso.</li>
</p>
<p>
<li>Eu perdi o código fonte. Já na época não era exatamente um motivo de orgulho (ficou muito macarrônico no final, à medida em que eu me apressava pra terminar), mas hoje seria curios dar uma olhada. Não sei se o código é passível de compilação reversa (e vai demorar para que eu tenha tempo e saco de desassemblar e dar uma fuçada), mas um compilador reverso de Turbo Basic 1.0 me divertiria um bocado se revelasse esse ecodo passado.</li>
</ul>
<p>
<b>Dicas apelativas <font color="red">(SPOILER &#8211; vai estragar algumas surpresas)</font></b></p>
<p>Essas dicas não chegam a entregar a solução do jogo, mas sugerem o caminho. É mais para o caso de você realmente enroscar em algum ponto. Caso prefira, pode <a href="http://chester.blog.br/fale.html">me mandar um e-mail</a> falando de onde você enroscou, e eu tentarei ajudar da melhor forma possível.</p>
<p>Mapa 1 (Escritório):</p>
<p>A rua é a saída evidente aqui, mas é preciso achar algum meio de transporte. Além disso, é preciso saber para onde foi o ladrão &#8211; deve ser alguém do escritório, o que sugere procurar pistas por lá. Mas é preciso OLHAR com muita insistência. E não deixe a fase sem explorar tudo o que a biblioteca tem a oferecer &#8211; saiba a hora de CONVERSAR com as pessoas e a hora de ENTRAR direto nas coisas, e você sairá de lá mais iluminado.</p>
<p>Mapa 2 (Campus):</p>
<p>O seu meio de transporte não vai te levar muito longe. É preciso recorrer à agência de viagens &#8211; mas quem disse que você tem passagem? O jeito é procurar &#8211; mas a faculdade ao sul não aceita gente sem cultura (ou seria sem dinheiro?) como Epaminondas, e gangues de punks e carecas no norte podem causar problemas, sobretudo se uma achar que você pertence à outra.</p>
<p>Tente tirar proveito de uma delas (há males que vêm pra bem), e você conseguirá entrar na faculdade, sem nem prestar vestibular. Ali você verá que valeu a pena passar um tempo na biblioteca &#8211; especialmente quando for procurar em lugares mais escuros &#8211; mas ainda lhe falta algo. Talvez um passeio na quadra de esportes te ajude a relaxar e encontrar o que precisal.</p>
<p>Mapa 3 (Bairro):</p>
<p>&#8220;Aha &#8211; the plot thickens&#8230;&#8221; (vide Kill Bill, vol. 2). Logo ao leste você descobre alguém que pode te ajudar, mas nada nessa vida é grátis (e nesse caso, nem muito barato é). Dá pra suspeitar da atividade criminosa nessa cidade &#8211; tem grana alta escondida em algum lugar, mas pode ser preciso abrir o caminho na base da ignorância pra encontrar.</p>
<p>E pra isso é preciso uma ferramenta &#8211; que o velhinho pode te dar se você der a ele o que ele tanto quer (lembre-se sempre: dar é DEIXAR algo no local). Vasculhe teto por teto, chão por chão, parede por parede, até achar algo vulnerável.</p>
<p>Você verá nesta fase que a falta de mulher leva as pessoas a medidas desesperadas &#8211; mas a falta de recursos também é um problema sério, então aproveite a distração dessas pessoas e veja se pelo menos um convite pra uma balada legal você descola.</p>
<p>Mapa 4 (BucanoWare Inc):</p>
<p>Só o taxista pra te tirar daqui. E ele não fala a sua língua, então é preciso achar algo que faça sentido para ele (mesmo que não faça sentido para você). Revire cada canto, meta a mão no lixo se isso for preciso &#8211; mas não esqueça de procurar um lugar pra lavar a mão depois, pois você pode achar algo útil nessa busca. </p>
<p>Mapa 5: (Danceteria).</p>
<p>Bastante coisa pra explorar. O mair importante é tirar o DJ da mesa, atraindo-o para longe. O truque é achar algo que interesse a ele, mas não bastará entregar de mão beijada. Em seguida, segredos serão revelados, mas o desafio final dependerá apenas de você. Esteja em ponto de bala!</p>
]]></content:encoded>
			<wfw:commentRss>http://chester.blog.br/archives/2006/06/a_busca_de_epam.html/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>miniTruco: jogo para celular grátis, com opção multiplayer (via Bluetooth e GPRS)</title>
		<link>http://chester.blog.br/archives/2006/01/mt.html</link>
		<comments>http://chester.blog.br/archives/2006/01/mt.html#comments</comments>
		<pubDate>Wed, 11 Jan 2006 07:37:04 +0000</pubDate>
		<dc:creator>chester</dc:creator>
				<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://chester.blog.br/archives/2006/01/mt.html</guid>
		<description><![CDATA[O miniTruco é um jogo de cartas gratuito para telefones celulares e outros dispositivos móveis que suportem Java (J2ME), que pode ser jogado individualmente, ou em grupos de até 4 pessoas (via Bluetooth ou Internet/GPRS). Você também pode jogar direto...
]]></description>
			<content:encoded><![CDATA[<p>O miniTruco é um jogo de cartas gratuito para telefones celulares e outros dispositivos móveis que suportem Java (J2ME), que pode ser jogado individualmente, ou em grupos de até 4 pessoas (via Bluetooth ou Internet/GPRS).</p>
<p>Você também pode jogar direto nesta pagina, usando o <i>gadget</i> à direita. Também é possível adicioná-lo à sua página pessoal no Google (e, em breve, no Orkut). O código original é de minha autoria, mas está disponível como código livre (GPL), o que permitiu a diversos desenvolvedores adicionar estratégias e novas características.</p>
<p>O endereço oficial do jogo é <a href="http://chester.blog.br/minitruco">http://chester.blog.br/minitruco</a>. Este post foi atualizado em 10/11/2007.</p>
<p><span id="more-2343"></span></p>
<p>&nbsp;</p>
<p><b><a name="instalacao"></a>Download e Instalação</b><br />
<br/><br/></p>
<div style="min-width:150px;text-align:center; border-color:#FF0000;padding:4px;float:left;margin-right:6px;border-color:black;border-style:dashed"><span style="color:#FF0000; font-weight: bold;">Versão 3.17 &#8211; Ago/09</span><br/><br/><a href="http://chester.blog.br/m/deploy/miniTruco.jar">Baixar o miniTruco.jar</a><br/><a href="http://chester.blog.br/m/deploy/miniTruco.jad">Baixar o miniTruco.jad</a><br/><br/><br />
<a href="http://chester.blog.br/m/deploy/miniTrucoLight.jar">Versão <i>light</i> (.jar)</a><br/><a href="http://chester.blog.br/m/deploy/miniTrucoLight.jad">Versão <i>light</i> (.jad)</a><br/><br/>
</div>
<p>Se você consegue navegar na internet usando o celular, vá ao endereço <span style="font-family:  Courier, 'Courier New', monospace">m.chester.blog.br</span>. Gasta-se alguns centavos (as operadoras cobram pelo tráfego de dados) mas vale a pena.</p>
<p>Outra alternativa é baixar para o PC (e transferir via cabo ou Bluetooth, seguindo as instruções do fabricante do celular), usando um dos links ao lado.</p>
<p>O jogo possui uma versão <i>light</i>, que não inclui as opções de jogo multiplayer, mas exige menos memória (se você experimentar erros do tipo <i>OutOfMemory</i> com a versão completa, experimente esta).</p>
<p></p>
<p style="clear: left;"><br/><b>Instruções</b></p>
</p>
<p>O jogo é feito com duas duplas, e tanto seu parceiro quanto os adversários são controlados pelo celular (a não ser no jogo multiplayer, vide abaixo).</p>
<p>Mova o joystick do celular lateralmente para escolher a carta, e seleicone ou mova para cima para jogá-la.  O joystick para baixo joga ela virada (sem mostrar o valor).</p>
<p>Caso um jogador peça truco, os dois adversários irão decidir se querem entrar (&#8221;descer&#8221;) ou não (&#8221;correr&#8221;). Basta que um deles aceite para que o truco ocorra &#8211; se o seu parceiro for impulsivo e topar o truco, você não pode fazer nada a respeito. Truco é isso. </p>
<p>Na mão de 11, você poderá ver, por alguns segundos, as cartas do adversário, e vale o mesmo que no truco: se um dos dois aceitar, está aceito.</p>
<p>A maior diferença com relação ao jogo tradicional é que só é possível pedir truco na sua vez (o que não limita muito, já que é raro trucar fora da vez mesmo). Além disso, apenas um membro da dupla pode jogar carta fechada na segunda e terceira rodadas (na primeira não se joga fechada nunca).</p>
<p>Para jogar via Bluetooth, um dos celulares deverá acionar o menu Criar Jogo, e os outros entram no menu Procurar Jogo. Ambos estão dentro do menu Bluetooth &#8211; se não aparecer, seu celular não suporta o jogo neste modo). O celular que criar o jogo controla a disposição dos adversários e inicia a partida. Caso haja menos que quatro jogadores, as posições vazias são controladas pelo jogo.</p>
<p>Para jogar via Internet (GPRS), entre no menu Internet e selecione uma conexão que ofereça acesso completo (ex.: Claro Dados, Tim Web/Tim Connect). Conexões com proxy (ex.: Tim WAP, Claro WAPGPRS) não irão funcionar. Sua operadora irá cobrar pelos dados transferidos (uma partida transfere em torno de 1 ou 2KB). Escolha um apelido, entre numa sala (o usuário mais antigo da sala controla o funcionamento dela) e boa diversão.</p>
<p>O menu Ajuda oferece instruções para o jogo, explicação das regras do truco e créditos.</p>
<p>
<b>Críticas, Sugestões e Suporte</b></p>
<p>Os comentários neste post estão desabilitados, mas você pode participar do <a href="http://groups.google.com/group/minitruco">grupo Google de discussões gerais sobre o miniTruco</a>. É o melhor canal para esclarecer dúvidas sobre o jogo no seu celular em particular (de preferência pesquisando para ver se a sua dúvida já foi sanada lá antes de postar). Eu tenho acesso a poucos celulares, então é mais fácil alguém no grupo conseguir te ajudar nesse sentido do que eu.</p>
<p>
<b>Créditos / Agradecimentos</b></p>
<p>O desenvolvimento e o visual do jogo são de <a href="http://chester.blog.br/pessoal.html">minha</a> autoria. As estratégias da CPU (até o momento) foram desenvolvidas pelo <a href="http://www.linux.ime.usp.br/~willian/cc.html" >Willian Gigliotti</a> (<a href="http://www.orkut.com/Profile.aspx?uid=14594091544512270501" >Orkut</a>) e pelo Leonardo Sellani, e, mais recentemente, pelo Sandro Rodrigo Gasparoto (que também deu uma &#8220;animada&#8221; na gritaria &#8211; parte essencial de um jogo de truco &#8211; e desenvolveu o modo &#8220;confronto&#8221;, que testa uma estratégia contra a outra).</p>
<p>Gostaria de agradecer a todos os que colaboraram, incluindo o Cassiano (por hospedar o servidor), a Michelle pelas dicas visuais, e a minha esposa, por tolerar mais este projeto sem fins lucrativos.</p>
<p>
<b>Código-Fonte e Informações para Desenvolvedores</b></p>
<p>O código fonte fica hospedado no Google Code. Na <a href="http://code.google.com/p/minitruco/" >página do projeto</a> você pode examiná-lo no browser ou baixar usando um cliente Subversion. O uso é permitido dentro dos termos da <a href="http://www.gnu.org/copyleft/gpl.html" >licença de uso GPL</a>.</p>
<p>Recomendo a leitura do <a href="http://minitruco.googlecode.com/svn/trunk/miniTruco/docs/index.html">Guia para Desenvolvedores</a>, que ensina a configurar um ambiente de desenvolvimento, explica a arquitetura geral do jogo (com diagramas de classe e colaboração) e oferece dicas úteis.</p>
<p>Na <a href="http://groups.google.com/group/minitruco_desenv" >lista de discussão para desenvolvedores</a> você pode tirar dúvidas técnicas não respondidas nestes documentos ou quiser discutir assuntos relacionados ao desenvolvimento no miniTruco.</p>
<p>
<b>Screenshots (telas)</b></p>
<ul>
<li><a href="http://www.chester.blog.br/archives/img/minitruco_gde.png">Jogo em execução no emulador, em tela grande e pequena</a>.</li>
<li><a href="http://www.chester.blog.br/archives/img/mt_multi.png">Jogo multiplayer rodando em 4 emuladores (no fundo, o Eclipse e o código-fonte)</a>.</li>
</ul>
<p></p>
<p style="text-align:center"><a href="http://chester.blog.br/minitruco_en"><img border="0" alt="see this page in english" src="img/ukflag.gif"><br/>This page in English</a></a></p>
]]></content:encoded>
			<wfw:commentRss>http://chester.blog.br/archives/2006/01/mt.html/feed</wfw:commentRss>
		<slash:comments>356</slash:comments>
		</item>
		<item>
		<title>Truco para Windows/Linux</title>
		<link>http://chester.blog.br/archives/2002/03/procura-se-programador-para-jogo-de-truco.html</link>
		<comments>http://chester.blog.br/archives/2002/03/procura-se-programador-para-jogo-de-truco.html#comments</comments>
		<pubDate>Thu, 07 Mar 2002 17:15:00 +0000</pubDate>
		<dc:creator>chester</dc:creator>
				<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://chester.blog.br/archives/2002/03/procura-se-programador-para-jogo-de-truco.html</guid>
		<description><![CDATA[Há alguns anos eu comecei a desenvolver um jogo de Truco para Windows. O projeto caminhou bastante, mas nunca tive tempo de acabar.
Como falta pouca coisa, resolvi disponbilizar o código-fonte para que algum programador Delphi ou Kylix que se interesse complete o jogo. Alguém se habilita?
]]></description>
			<content:encoded><![CDATA[<p><img src="http://chester.blog.br/img/blig/truco.gif" border="0" alt="" hspace="4" width="100" height="106" align="left" />Há alguns anos eu comecei a desenvolver um jogo de Truco para Windows. O projeto caminhou bastante, mas nunca tive tempo de acabar.</p>
<p>Como falta pouca coisa, resolvi <a href="http://chester.blog.br/download/Truco0.3Alpha.zip">disponbilizar</a> o código-fonte para que algum programador Delphi ou Kylix que se interesse complete o jogo. Alguém se habilita?</p>
]]></content:encoded>
			<wfw:commentRss>http://chester.blog.br/archives/2002/03/procura-se-programador-para-jogo-de-truco.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
