<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-36179455</id><updated>2009-10-21T15:55:40.837+01:00</updated><title type='text'>Repeat Until Keypressed</title><subtitle type='html'>Repeat until you get it</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default?start-index=26&amp;max-results=25'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>213</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-36179455.post-333282859288593551</id><published>2008-02-16T19:46:00.000Z</published><updated>2008-02-16T19:46:17.006Z</updated><title type='text'>Mudança de Instalações</title><content type='html'>O &lt;a href="http://mlopes.online.co.pt/"&gt;Repeat Until Keypressed&lt;/a&gt; mudou de instalações. O &lt;a href="http://mlopes.online.co.pt/"&gt;novo endereço http://mlopes.online.co.pt&lt;/a&gt; substituiu a &lt;a href="http://repeatuntilkeypressed.blogspot.com/"&gt;versão antiga&lt;/a&gt; que estava alojada no blogger. &lt;br /&gt;&lt;br /&gt;Apesar de ter importado os posts, a &lt;a href="http://repeatuntilkeypressed.blogspot.com/"&gt;versão antiga do Repeat Until Keypressed&lt;/a&gt; vai-se manter online exclusivamente por motivos de histórico, com os comentários desactivados.&lt;br /&gt;&lt;br /&gt;Com a &lt;em&gt;nova casa&lt;/em&gt; vem uma tentativa de mudar o estilo de escrita.  Não, não me vou por a comentar as mamas novas da Floribela nem sequer falar do &lt;a href="http://bitaites.org/reedicoes/entender-particoes-com-o-rabo-da-jennifer-lopez"&gt;rabo da Jennifer Lopez&lt;/a&gt;. A ideia é tentar ter posts mais elaborados com algum conteúdo criado no próprio blog em vez do simples comentário a links interessantes encontrados noutros sítios. Alguns dos posts antigos eram de facto muito maus como por exemplo a versão antiga do post "&lt;a href="http://mlopes.online.co.pt/2008/02/11/alguns-bons-e-outros-maus-conselhos-para-programar-em-python/"&gt;Cada qual no seu lugar&lt;/a&gt;" que foi alterado entretanto ou como o "&lt;a href="http://mlopes.online.co.pt/2008/02/07/aqui-nao-ha-novidades/"&gt;Aqui não há novidades&lt;/a&gt;" que apesar de linkar para um artigo que acho interessante, não diz nada sobre o artigo para o qual link aponta, e já agora, também não diz nada sobre mais coisa nenhuma.A nova plataforma permite-me um controlo  mais apurado de todo o interface do blog bem como do seu próprio funcionamento, dando-me uma liberdade que o blogger não dava. Está portanto na altura de começar esta nova etapa.Boas leituras, desejem-me sorte!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-333282859288593551?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/333282859288593551/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=333282859288593551&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/333282859288593551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/333282859288593551'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2008/02/mudana-de-instalaes.html' title='Mudança de Instalações'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-8561810187274704953</id><published>2008-02-15T14:10:00.003Z</published><updated>2008-02-15T15:14:20.543Z</updated><title type='text'>Cada qual no seu lugar</title><content type='html'>Cada linguagem de programação tem a sua &lt;em&gt;personalidade&lt;/em&gt;, e as práticas de programação devem ser adequadas a cada uma delas. Algumas linguagens terão &lt;em&gt;personalidades&lt;/em&gt; mais semelhantes, outras mais distintas e quanto maior o distanciamento entre elas maior é a probabilidade da aproximação a um problema ser diferente.&lt;br /&gt;&lt;br /&gt;Utilizar uma aproximação errada a um problema numa linguagem é em muito semelhante a atribuir a tarefa errada a um trabalhador. Não se coloca um programador de C a cortar HTML e não se coloca um web-designer a programar em C pois isso leva a insatisfação profissional, atrasos e erros na tarefa, enfim, um sem fim de consequências negativas.&lt;br /&gt;&lt;h2&gt;Estruturado&lt;/h2&gt;&lt;br /&gt;A programação estruturada é aquela que mais "fora de moda" se encontra, apesar disso é a aquela que tem mais provas dadas. A grande maioria das aplicações que se vê por aí são feitas em C, praticamente tudo aquilo que utilizamos hoje em dia está assente em algo feito em C, como por exemplo muito do software que permite a existência da internet.&lt;br /&gt;&lt;br /&gt;Dentro da programação estruturada há claro linguagens diferentes e as aproximações deverão também ser diferentes. Existem paradigmas distintos, tais como o imperativo e o funcional, existem as linguagens compiladas e interpretadas (conhecidas como linguagens de script).&lt;br /&gt;&lt;br /&gt;Alguns do exemplos de linguagens estruturadas bastante populares são o C, o perl e o PHP. Logo aqui se nota a diferença entre as aproximações por linguagem. Não passa pela cabeça de ninguém resolver um problema da mesma maneira em PHP ou em C, a gestão de memória, o suporte para arrays dinâmicos, é tudo tão diferente que até sinto alguma dificuldade sequer em fazer uma comparação.&lt;br /&gt;&lt;h2&gt;Objectos&lt;/h2&gt;&lt;br /&gt;Aqui entram algumas linguagens como por exemplo o python, o ruby , o Smalltalk e o IO language. Este é um paradigma mais &lt;em&gt;geek&lt;/em&gt; e pouco utilizado, mesmo por alguns programadores de python e ruby que muitas vezes se desviam para a programação estruturada ou orientada a classes (muitas vezes chamada erradamente de orientada a objectos).&lt;br /&gt;&lt;br /&gt;Aqui existem dois tipos de aproximação, o IO language, por exemplo, é prototipado, todos os objectos são criados clonando um objecto base e alterando depois o novo objecto. Nesta situação nem sequer existem classes.&lt;br /&gt;&lt;br /&gt;Já em python por exemplo os objectos são criados a partir de classes, se bem que é possível criá-los copiando outros e depois alterando-os. Mas mesmo quando os objectos são criados a partir de classes na prática a diferença não é assim tão grande pois nas "&lt;em&gt;new style classes&lt;/em&gt;" os objectos herdam todos implicitamente de um objecto base &lt;em&gt;Object&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Neste tipo de linguagens a pureza de objectos da linguagem é um factor importante, pois é isso que permite a manipulação dos dados/código que caracterizam  a aproximação ao problema utilizado normalmente neste tipo de linguagens. &lt;a href="http://en.wikipedia.org/wiki/Closure_%28computer_science%29"&gt;Closures&lt;/a&gt; e as &lt;a href="http://en.wikipedia.org/wiki/First-class_function"&gt;funções e classes como &lt;em&gt;first class citizens&lt;/em&gt;&lt;/a&gt; são também elementos  importantes que condicionam a forma de utilizar a linguagem. É importante para quem não está familiarizado com o conceito de funções como &lt;em&gt;first class citizens&lt;/em&gt; que isto não é um exemplo de passar funções como parâmetro ou devolver funções (as duas linhas são dois exemplos independentes):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;func1(func2())&lt;br /&gt;return func()&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Este é o exemplo correcto:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;func1(func2)&lt;br /&gt;return func&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;No caso específico de python e ruby, quase tudo são objectos, mesmo as primitivas da linguagem, com excepção de  uma mão cheia de keywords. No caso do ruby alguns operadores não são objectos (o == é mas o != não é, não sei bem porquê).&lt;br /&gt;&lt;h2&gt;Classes&lt;/h2&gt;&lt;br /&gt;Neste tipo de linguagem inserem-se por exemplo o JAVA, o PHP e o C++, estes dois últimos só quando utilizados com classes em vez da forma estruturada. Este é actualmente o paradigma da moda. Regra geral as classes são utilizadas como contentores de funções que actuam sobre uma estrutura de dados comum. A diferença deste paradigma relativamente ao dos objectos é o facto de estas linguagens não serem puras de objectos, não terem closures nem funções e classes como &lt;em&gt;first class citizens&lt;/em&gt;. A consequência disto é que a manipulação de código é muito reduzida e reflecte-se na aproximação ao problema.&lt;br /&gt;&lt;h2&gt;Epilogo&lt;/h2&gt;&lt;br /&gt;Muitos dos programadores que experimentam uma linguagem com uma &lt;em&gt;personalidade&lt;/em&gt; muito diferente daquilo a que estão habituados caem nos erros de fazer as coisas da forma errada para a linguagem que estão a usar. Por exemplo no &lt;a href="http://eikke.com/how-not-to-write-python-code/"&gt;How not to write Python code&lt;/a&gt; o autor enumera uma lista de coisas que ele considera que se deve ou não fazer em python.&lt;br /&gt;Estranhamente o próprio autor cai num dos erros por ele referidos:&lt;br /&gt;&lt;blockquote&gt;Python is Python, don’t try to emulate bad coding patterns from other languages&lt;/blockquote&gt;&lt;br /&gt;Ao fazer o seguinte:&lt;br /&gt;&lt;blockquote&gt;A basic example: to check whether a function parameter is of a certain type, don’t use something like ‘arg.__class__ == MyClass’, use ‘isinstance(arg, MyClass)’.&lt;/blockquote&gt;&lt;br /&gt;Isto é claramente um erro pois o python é &lt;em&gt;weak typed&lt;/em&gt;, não faz sentido o programador verificar tipos, pois isso é para linguagens &lt;em&gt;strong typed&lt;/em&gt; e os compiladores/interpretadores serão com certeza mais eficientes a fazê-lo. No caso de haver de facto necessidade de verificar uma característica de um objecto, como por exemplo a existência de determinado método, vale mas verificar só mesmo essa característica. Ao fazer o que o autor diz no exemplo perdem-se as vantagens da pureza de objectos que permite fazer coisas como os &lt;a href="http://www.google.com/search?q=python+%22file+like+objects%22&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=com.ubuntu:en-GB:official&amp;amp;client=firefox-a"&gt;file like objects&lt;/a&gt;. Este é o tipo de código típico de uma linguagem como o JAVA, mas... o próprio JAVA já faz isto pelo programador.&lt;br /&gt;&lt;br /&gt;Outro exemplo que está bastante desviado da realidade do python é, ironicamente, o "&lt;em&gt;Use Pythonesque coding pattern&lt;/em&gt;" que apresenta uma alternativa ao facto do python (tal como perl 5 por exemplo) não ter cases. Neste exemplo o erro é gritante porque o autor cria um código complicado para emular uma funcionalidade de outras linguagens, o facto de ele próprio falar nisto como uma alternativa ao case que não existe em python mostra o erro de estar a utilizar paradigmas de outras linguagens. A verdade é que nos últimos anos tenho programado muito em perl e python e nunca o meu código chegou a um ponto onde precisasse de um case.&lt;br /&gt;O que me faz pensar que se estamos a tentar emular algo que não existe na linguagem... então estamos no caminho errado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-8561810187274704953?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/8561810187274704953/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=8561810187274704953&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/8561810187274704953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/8561810187274704953'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2008/02/alguns-bons-e-outros-maus-conselhos.html' title='Cada qual no seu lugar'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-681106519710962293</id><published>2008-02-11T12:07:00.000Z</published><updated>2008-02-11T12:12:49.355Z</updated><title type='text'>Um desvio à cultura vigente nas empresas</title><content type='html'>&lt;a href="http://archrecord.construction.com/practice/firmCulture/0802firm-1.asp"&gt;Este post&lt;/a&gt; fala de um estudo feio em 2001 sobre como a cultura de uma empresa pode influenciar a criatividade numa empresa como entidade.&lt;br /&gt;O princípio é bom, mas as ideias acabam por seguir o habitual dentro da cultura empresarial actual onde na prática nada é diferente do que era. Na prática o que sinto ao ler as conclusões é que não estaria satisfeito a trabalhar no tipo de ambiente descrito.&lt;br /&gt;Vale pelo estudo, as conclusões parecem-me muito fracas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-681106519710962293?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/681106519710962293/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=681106519710962293&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/681106519710962293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/681106519710962293'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2008/02/um-desvio-cultura-vigente-nas-empresas.html' title='Um desvio à cultura vigente nas empresas'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-6779093827664442650</id><published>2008-02-11T11:24:00.000Z</published><updated>2008-02-11T11:42:07.803Z</updated><title type='text'>Não te esqueças de fazer o TPC</title><content type='html'>&lt;a href="http://www.toddpinkerton.com/blog/2008/01/01/from-powerpoint-to-webapp/"&gt;Alguns conselhos&lt;/a&gt; sobre formas de melhor conhecer o produto que está a desenvolver, de forma a poder planear prazos mais realistas. A validade destes conselhos está como sempre sujeita a discussão.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-6779093827664442650?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/6779093827664442650/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=6779093827664442650&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/6779093827664442650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/6779093827664442650'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2008/02/no-te-esqueas-de-fazer-o-tpc.html' title='Não te esqueças de fazer o TPC'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-2130863557351983184</id><published>2008-02-07T12:27:00.000Z</published><updated>2008-02-07T12:28:29.420Z</updated><title type='text'>Aqui não há novidades</title><content type='html'>Só &lt;a href="http://www.codinghorror.com/blog/archives/000072.html"&gt;aquilo que já se sabia&lt;/a&gt;, uns são bons, outros são maus... e a experiência de facto não os ajuda.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-2130863557351983184?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/2130863557351983184/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=2130863557351983184&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/2130863557351983184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/2130863557351983184'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2008/02/aqui-no-h-novidades.html' title='Aqui não há novidades'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-180986728083202836</id><published>2008-02-07T11:59:00.000Z</published><updated>2008-02-07T12:00:01.988Z</updated><title type='text'>Não, não sou o único...</title><content type='html'>&lt;a href="http://wilshipley.com/blog/2008/01/macbook-air-haters-suck-my-dick.html"&gt;MacBook Air Haters Suck My Dick&lt;/a&gt;, apesar do título agressivo, o conteúdo não o é tanto. Mas aparentemente não sou o único a ficar farto de passar a vida a tropeçar em comentários idiotas sobre o MacBook Air.&lt;br /&gt;Já vi gente a queixar-se das coisas mais parvas, a reclamar que no MacBook Air não conseguem fazer &amp;lt;inserir coisa parva que nunca precisou de fazer&amp;gt;, a compará-lo com tijolos maiores que o meu desktop, etc...&lt;br /&gt;A minha sugestão: já chega, se não gostam não comam mas poupem-nos ao ruído de vos ouvir choramingar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-180986728083202836?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/180986728083202836/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=180986728083202836&amp;isPopup=true' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/180986728083202836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/180986728083202836'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2008/02/no-no-sou-o-nico.html' title='Não, não sou o único...'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-2893171565077020887</id><published>2008-02-07T11:47:00.000Z</published><updated>2008-02-07T11:49:09.060Z</updated><title type='text'>O perfil do "entrepeneur"</title><content type='html'>&lt;a href="http://www.doingbusiness.org/features/Research-Entrepreneurship.aspx"&gt;Um estudo&lt;/a&gt; chegou a algumas conclusões interessantes, mas não inesperadas, sobre o que leva alguém a ter um perfil de "entrepeneur" (e eu que não me lembro da palavra em português).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-2893171565077020887?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/2893171565077020887/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=2893171565077020887&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/2893171565077020887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/2893171565077020887'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2008/02/o-perfil-do-entrepeneur.html' title='O perfil do &quot;entrepeneur&quot;'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-1988122178280904394</id><published>2008-02-07T11:42:00.000Z</published><updated>2008-02-07T11:44:11.750Z</updated><title type='text'>O GIT é mesmo bom!</title><content type='html'>Há quem fique &lt;a href="http://www.advogato.org/person/apenwarr/diary/371.html"&gt;excessivamente fascinado com o git&lt;/a&gt;, mas de facto aquilo é bom. Eu só tenho pena de ainda não o dominar mais , mas já vou mexendo nuns repositórios e até tem corrido bem.&lt;br /&gt;Deixo aqui um &lt;a href="http://students.ceid.upatras.gr/~sxanth/ungit.html"&gt;link&lt;/a&gt; para quem se quiser iniciar (eu comecei pelos tutoriais que estão na página oficial).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-1988122178280904394?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/1988122178280904394/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=1988122178280904394&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/1988122178280904394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/1988122178280904394'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2008/02/o-git-mesmo-bom.html' title='O GIT é mesmo bom!'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-8390445465924029375</id><published>2008-02-01T14:07:00.002Z</published><updated>2009-02-10T16:50:55.287Z</updated><title type='text'>SDL para games.online</title><content type='html'>Quem leu o &lt;a href="http://repeatuntilkeypressed.blogspot.com/2008/01/first-time.html"&gt;post&lt;/a&gt; que aqui coloquei ontem e seguiu o link para o &lt;a href="http://games.online.co.pt/"&gt;blog do games.online&lt;/a&gt; possivelmente reparou que está iminente o arranque do desenvolvimento de um &lt;a href="http://games.online.co.pt/"&gt;jogo&lt;/a&gt; que ao contrário dos outros que lá estão não será online, mas sim para descarregar e instalar.&lt;br /&gt;Aproveitando as possibilidades que isso nos dá, optámos por fazer o desenvolvimento em C utilizando SDL.&lt;br /&gt;&lt;br /&gt;Assim chegamos ao objectivo deste post que é partilhar o link para o &lt;a href="http://sol.gfxile.net/gp/"&gt;excelente tutorial&lt;/a&gt; que me tem ajudado a &lt;a href="http://games.online.co.pt/"&gt;relembrar o C&lt;/a&gt; e a aprender a usar SDL. Sim, porque como diz no tutorial, eu ainda sou do tempo (e não fiz nada em C desde esses tempos) em que se fazia isto:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;_asm {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov ax, 13h&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int 10h&lt;br /&gt;}&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-8390445465924029375?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/8390445465924029375/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=8390445465924029375&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/8390445465924029375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/8390445465924029375'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2008/02/sdl-para-gamesonline.html' title='SDL para games.online'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-1140488817500356299</id><published>2008-01-31T15:13:00.001Z</published><updated>2009-02-10T16:52:13.643Z</updated><title type='text'>First time</title><content type='html'>Aí está a minha primeira experiência com o &lt;a href="http://games.online.co.pt"&gt;Wordpress&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-1140488817500356299?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/1140488817500356299/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=1140488817500356299&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/1140488817500356299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/1140488817500356299'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2008/01/first-time.html' title='First time'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-8928739821925748789</id><published>2008-01-24T13:06:00.000Z</published><updated>2008-01-24T16:06:08.603Z</updated><title type='text'>Cuidado com as linguagens</title><content type='html'>&lt;h2&gt;Sim, as linguagens são importantes &lt;/h2&gt;A propósito deste evento &lt;a href="http://abstractstuff.livejournal.com/37979.html"&gt;running a startup on Scheme&lt;/a&gt;, lembrei-me de algo que li há uns tempos (e que não deixo link porque já não sei dele) sobre os perigos de utilizar tecnologias que não sejam &lt;i&gt;mainstream&lt;/i&gt; numa empresa.&lt;br /&gt;Uma empresa que tenha a sua existência baseada em software e que desenvolva esse software em Lisp vai ter sempre um enorme problema quando precisar de aumentar o seu staff de programadores. Posso dizer por experiência própria que, num mercado pequeno como o português, e ajudado pelo &lt;a href="http://itmanagement.earthweb.com/career/article.php/3722876"&gt;sistema de ensino&lt;/a&gt;, até para arranjar programadores de python é difícil, imagine-se então Lisp.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Python &lt;/h2&gt;Apesar disso, a minha escolha continua a recair sobre o python porque sendo uma linguagem que segue os paradigmas a que a grande maioria dos programadores estão habituados permite "apanhar" bons programadores mesmo que estes não estejam familiarizados com a linguagem. Um bom programador consegue num período de uma ou duas semanas estar a produzir em python. O mesmo não acontece com Lisp onde um bom programador não habituado ao paradigma pode demorar meses a conseguir tornar-se produtivo.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Ruby &lt;/h2&gt;Uma linguagem que está com uma grande popularidade actualmente, embora já tenha tido mais popularidade (a verdade é que no último ano até perdeu utilizadores) é o ruby.&lt;br /&gt;Ao ruby aplica-se tudo o que foi dito sobre o python com duas desvantagens, a primeira o facto de não ser tão fácil de aprender como o python, e introduzir alguns conceitos "estranhos" para quem vem da programação estruturada (OO incluído). No caso do python, são raros os exemplos em que um programador, mesmo não familiarizado com a linguagem não consiga perceber. No ruby isto não acontece e mesmo já tendo algum conhecimento básico de ruby não é raro tropeçar em sintaxe que não faço ideia do que faça.&lt;br /&gt;A outra desvantagem é a maturidade da linguagem, não tive oportunidade (nem vontade) de ver como está a versão 1.9, mas até à versão 1.8 o interpretador era bastante ineficiente.&lt;br /&gt;Poderia ainda apontar a legibilidade como mais um &lt;a href="http://repeatuntilkeypressed.blogspot.com/2008/01/alhos-e-bugalhos.html"&gt;ponto contra&lt;/a&gt; o ruby, mas o JAVA e o PHP são o que são e continuam a ser as linguagens mais usadas&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-8928739821925748789?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/8928739821925748789/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=8928739821925748789&amp;isPopup=true' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/8928739821925748789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/8928739821925748789'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2008/01/cuidado-com-as-linguagens.html' title='Cuidado com as linguagens'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-8294725224593205024</id><published>2008-01-23T14:46:00.000Z</published><updated>2008-01-23T14:41:16.550Z</updated><title type='text'>Alhos e Bugalhos</title><content type='html'>Há quem ache que &lt;a href="http://www.knowing.net/PermaLink,guid,fde0f610-3773-47b8-9be6-d6e5a8a76858.aspx"&gt;que não há grandes programadores&lt;/a&gt;, outros acham que &lt;a href="http://www.valuedlessons.com/2008/01/garlic-programmers-for-silver-code.html"&gt;o código é que pode ser bom&lt;/a&gt;.&lt;br /&gt;Acredito que há bons e &lt;a href="http://www.absinto.org/?p=50"&gt;maus programadores&lt;/a&gt;, e pessoalmente já conheci uns poucos bons e muitos dos maus, alguns são piores do que maus. O número de maus programadores não pára de aumentar, e de quem é a culpa &lt;a href="http://itmanagement.earthweb.com/career/article.php/3722876"&gt;não restam muitas dúvidas&lt;/a&gt;.&lt;br /&gt;Também é verdade que o código, e até as próprias linguagens influenciam e muito a productividade dos programadores. Eu mesmo já passei por essa experiência, e o que retirei daí é que, não é só o próprio custo em termos do tempo perdido com mau código ou má arquitectura que retira a productividade ao programador. Aliás, este nem sequer me parece o factor mais importante. Na minha opinião o factor importante aqui é a moral, um bom programador perde motivação quando o trabalho que está a fazer é repetitivo e não tem inovação e por esse motivo dedica menos do seu tempo a fazer trabalho efectivo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-8294725224593205024?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/8294725224593205024/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=8294725224593205024&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/8294725224593205024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/8294725224593205024'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2008/01/alhos-e-bugalhos.html' title='Alhos e Bugalhos'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-3116359989630926628</id><published>2008-01-23T12:25:00.000Z</published><updated>2008-01-23T12:25:56.894Z</updated><title type='text'>A shift in the Schwartz</title><content type='html'>Ultimamente este blog tem estado um pouco "ensonado", consequência de várias coisas. Uma delas, como não podia deixar de ser, não fosse a minha nacionalidade Portuguesa, é a falta de tempo (leia-se o mau aproveitamento deste).&lt;br /&gt;A verdade é que analisando bem o motivo dessa inactividade no blog, ver-se-á que tem mais a ver com uma mudança de interesses em relação aos tempos em que o criei. O &lt;a href="http://repeatuntilkeypressed.blogspot.com/"&gt;Repeat Until Keypressed&lt;/a&gt; surgiu numa altura em que influênciado pelo uso do Mac OS X, pela leitura de sites como o 43folders, o Life Hacker, etc..., estava bastante interessado em organização pessoal, workflows, tudo o que me pudesse levar a produzir mais fazendo menos.&lt;br /&gt;Claro que estou e estarei sempre interessado nisso, mas a verdade é que actualmente tenho andado a ler mais sobre &lt;i&gt;startups&lt;/i&gt;, sobre gestão de projectos e sobre alguns conceitos de programação mais invulgares.&lt;br /&gt;Ao fazer o post anterior, onde publico um comentário meu a um artigo no blog do Mário Gamito, sobre um assunto que é bastante debatido por quem está envolvido na criação de &lt;i&gt;startups&lt;/i&gt;, como encontrar a pessoa certa para uma determinada vaga e não um "falso programador" (programador no caso específico do post do Mário Gamito), percebi que se calhar a forma de não deixar morrer o blog será passar a falar mais sobre o que vou aprendendo sobre estes temas.&lt;br /&gt;Olhando para os últimos posts publicados neste blog, vai-se de facto notando o afastamento do tema original, há meses que não há um link para o 43folders ou lifehackers, uma referência ao GTD, etc..., por esse motivo, espera-se nos próximos tempos, novos posts, falando sobre "algo completamente diferente".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-3116359989630926628?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/3116359989630926628/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=3116359989630926628&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/3116359989630926628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/3116359989630926628'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2008/01/shift-in-schwartz.html' title='A shift in the Schwartz'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-6102472193721330873</id><published>2008-01-23T12:01:00.000Z</published><updated>2008-01-23T12:03:49.487Z</updated><title type='text'>1 shot de absinto</title><content type='html'>Deixei &lt;a href="http://www.absinto.org/?p=50"&gt;1 shot de absinto&lt;/a&gt; no blog do &lt;a href="http://www.absinto.org/"&gt;Mário Gamito&lt;/a&gt; que me pareceu pertinente colocar aqui:&lt;br /&gt;&lt;blockquote&gt;Este é um dos motivos porque é tão importante perceber o que um candidato a um determinado cargo realmente sabe, não basta olhar para os cursos que o candidato têm.&lt;br /&gt;Este é um dos problemas que aflige e prejudica bastante algumas empresas, especialmente as grandes empresas onde os departamentos de RH regra geral não têm capacidade para confirmar se determinada entrada no curriculum corresponde a conhecimentos reais.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-6102472193721330873?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/6102472193721330873/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=6102472193721330873&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/6102472193721330873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/6102472193721330873'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2008/01/1-shot-de-absinto.html' title='1 shot de absinto'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-1059246176671555053</id><published>2008-01-22T11:27:00.000Z</published><updated>2008-01-22T11:23:41.328Z</updated><title type='text'>Hate is int the Air</title><content type='html'>Aparentemente um sinal da crescente popularidade da Apple, é o facto de esta cada vez ter mais &lt;i&gt;haters&lt;/i&gt;, algo que até aqui era quase um exclusivo da Microsoft.&lt;br /&gt;Um dos alvos preferidos desta nova espécie tem sido o Macbook Air que, a fazer lembrar a indignação dos utilizadores de PC quando a Apple deixou de colocar leitores de disquete nos computadores novos, aponta agora o desaparecimento da drive óptica mas desta vez com extra-raiva.&lt;br /&gt;&lt;br /&gt;A questão que se coloca aqui é que o facto de o Air só suportar leitores ópticos externos não é grande novidade, já vários computadores portáteis fizeram o mesmo, alguns já há muitos anos como por exemplo a Toshiba com o portegé. Não podia, claro está, deixar passar esta oportunidade de dizer as esses novos &lt;i&gt;Apple haters&lt;/i&gt;, vamos lá todos então odiar a Toshiba.&lt;br /&gt;&lt;br /&gt;Em relação à possibilidade de desaparecimento das drives ópticas dos computadores num futuro próximo, só tenho a dizer que já é raro usar qualquer das minhas. No caso específico da Apple cada vez faz mais sentido poupar o espaço e o custo desse tipo de drives já que a própria Apple Store disponibiliza músicas, séries televisivas e filmes para venda e aluguer. Só sobra assim o software para ser transportado em meios ópticos. Nada que não se resolva! Eu próprio já comprei softwares que são descarregados da internet e que nunca chegam a passar por nenhum meio físico entretanto.&lt;br /&gt;Para juntar à festa, as flash memory estão cada vez maiores, mais baratas e são mais fáceis de gravar e regravar do que os suportes ópticos.&lt;br /&gt;E tendo em conta que até o SO eu já instalei a partir de um iPod (quem diz iPod pode dizer uma flash com uns quantos gigabytes) só tenho a dizer que não me parece que vá sentir muita falta das drives ópticas... especialmente quanto for pagar menos €500 para não ter blue ray.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-1059246176671555053?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/1059246176671555053/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=1059246176671555053&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/1059246176671555053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/1059246176671555053'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2008/01/hate-is-int-air.html' title='Hate is int the Air'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-3026955302038746418</id><published>2008-01-10T15:56:00.000Z</published><updated>2008-01-11T10:42:36.659Z</updated><title type='text'>Onde está o gil? [actualizado]</title><content type='html'>Afinal ainda não foi desta, foi só um downtime, aparentemente ainda há alguém a cuidar do gildot.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hoje lembrei-me de verificar o estado do gildot e dei com ele em baixo.&lt;br /&gt;&lt;code&gt;Connection to 194.38.131.34 Failed&lt;/code&gt;&lt;br /&gt;É sabido que o gildot estava mais para lá do que para cá, mas será que acabou de vez?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-3026955302038746418?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/3026955302038746418/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=3026955302038746418&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/3026955302038746418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/3026955302038746418'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2008/01/onde-est-o-gil.html' title='Onde está o gil? [actualizado]'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-888580984176823001</id><published>2008-01-03T11:40:00.000Z</published><updated>2008-01-03T11:56:38.349Z</updated><title type='text'>Repetição!?!? Qual repetição?</title><content type='html'>Segundo o mais futebol, Carlos paredes &lt;a href="http://www.maisfutebol.iol.pt/noticia.php?id=898017&amp;div_id=1457"&gt;não apareceu&lt;/a&gt;, &lt;a href="http://www.maisfutebol.iol.pt/noticia.php?id=898064&amp;div_id=1457"&gt;não apareceu&lt;/a&gt;, &lt;a href="http://www.maisfutebol.iol.pt/noticia.php?id=898219&amp;div_id=1457"&gt;não apareceu&lt;/a&gt;, &lt;a href="http://www.maisfutebol.iol.pt/noticia.php?id=898324&amp;div_id=1457"&gt;não apareceu&lt;/a&gt;, &lt;a href="http://www.maisfutebol.iol.pt/noticia.php?id=898498&amp;div_id=1457"&gt;não apareceu&lt;/a&gt;, &lt;a href="http://www.maisfutebol.iol.pt/noticia.php?id=898698&amp;div_id=1457"&gt;não apareceu&lt;/a&gt;, &lt;a href="http://www.maisfutebol.iol.pt/noticia.php?div_id=1498&amp;id=898597"&gt;não apareceu&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-888580984176823001?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/888580984176823001/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=888580984176823001&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/888580984176823001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/888580984176823001'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2008/01/repetio-qual-repetio.html' title='Repetição!?!? Qual repetição?'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-2198236034674984814</id><published>2007-12-29T16:22:00.000Z</published><updated>2007-12-29T16:28:59.169Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Tamanho vs Complexidade</title><content type='html'>Dei recentemente com este post:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://weblog.raganwald.com/2007/07/abbreviation-accidental-complexity-and.html"&gt;Abbreviation, Accidental Complexity, and Abstraction&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Que me levou a estes:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://weblog.raganwald.com/2006/12/economizing-can-be-penny-wise-and.html"&gt;Economizing can be penny-wise and pound foolish&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblog.raganwald.com/2006/01/finding-signal-to-noise-ratio-in-never.html"&gt;Finding the Signal-to-Noise Ratio in the Never-Ending Language Debate&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblog.raganwald.com/2006/10/are-we-blub-programmers.html"&gt;Are we Blub programmers?&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Este último sobre um dos ensaios do Paul Graham.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-2198236034674984814?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/2198236034674984814/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=2198236034674984814&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/2198236034674984814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/2198236034674984814'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2007/12/tamanho-vs-complexidade.html' title='Tamanho vs Complexidade'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-4463686642549508332</id><published>2007-12-19T11:02:00.000Z</published><updated>2007-12-19T12:39:19.224Z</updated><title type='text'>Still a git...</title><content type='html'>Continuo com o git, andei a ver várias páginas no site do &lt;a href="http://bazaar-vcs.org/"&gt;bazaar&lt;/a&gt; que não conhecia (o mercurial já conhecia) e tomei conhecimento a partir de um comentário no post anterior sobre o &lt;a href="http://repeatuntilkeypressed.blogspot.com/2007/12/your-git.html"&gt;git&lt;/a&gt;, houve coisas que me afastaram do bazaar, por exemplo na página de comparação com o git diz "Directories are branches, not branch containers", uma das coisas que me agrada muito no git, o facto do bazaar ser feito em python que apesar de ser uma linguagem que me agrada bastante e que lhe permite um crescimento rápido em comparação com o git (se bem que pelos vistos numa direcção que não é a que mais me agrada) mas que digam o que disserem não terá a performance de uma aplicação em C.&lt;br /&gt;&lt;br /&gt;Nos servidores como uso o gentoo basta fazer o emerge para ter uma versão 1.5.3.x do git, mas no meu desktop ubuntu ainda só está disponível a versão 1.5.2.x, como o git é uma aplicação em forte desenvolvimento, existem algumas features importantes na versão 1.5.3 que não estão disponíveis na 1.5.2, e como a documentação está bastante actualizada ao contrário do que pensei inicialmente (regra geral a documentação anda sempre umas versões atrás) estava sempre a esbarram em coisas que não funcionavam como descrito. Quando me apercebi do motivo fui tentar ver o que encontrava para ter a versão 1.5.3 no ubuntu e descobri &lt;a href="http://saimonmoore.net/2007/11/7/gitting-git-1-5-3-x-installed-in-ubuntu"&gt;esta página&lt;/a&gt; que explica como o fazer. No entanto a versão que é usada já não se encontra no servidor (http://ftp.debian.org/debian/pool/main/g/git-core/git-core_1.5.3.5-1.dsc). Por isso fui à &lt;a href="http://ftp.debian.org/debian/pool/main/g/git-core/"&gt;directoria&lt;/a&gt; confirmar as versões disponíveis e descobri que a mais recente é a git-core_1.5.4~rc0-1.dsc mas esta falhou a compilação porque parece que necessita de um patch para conseguir passar um dos testes. Depois tentei a versão git-core_1.5.3.7-1.dsc que também falhou com um erro pouco explícito e sobre o qual não consegui descobrir muita coisa. Finalmente acabei por conseguir com a versão git-core_1.5.3.6-1.1.dsc, para aqueles que não precisem de integração com o SVN aconselho a usar a flag  NO_SVN_TESTS pois estes testes demoram algum tempo (e num dos computadores onde compilei falhou um destes testes):&lt;br /&gt;&lt;code&gt;&lt;br /&gt;NO_SVN_TESTS=1 sudo dpkg-buildpackage -rfakeroot -us -uc&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Já agora relembro que apesar de nos exemplos não haver "sudo"s pelo menos os passos 1, 4 e 5 precisam dele (no meu caso o passo 2 precisou pois estava a escrever em /usr/local/src).&lt;br /&gt;No final é só instalar os .deb que são gerados.&lt;br /&gt;&lt;br /&gt;Já agora aqui fica o vídeo da palestra que o Linus deu no google tech talk sobre o git:&lt;br /&gt;&lt;br /&gt;&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;object height='350' width='425'&gt;&lt;param value='http://youtube.com/v/4XpnKHJAok8' name='movie'/&gt;&lt;embed height='350' width='425' type='application/x-shockwave-flash' src='http://youtube.com/v/4XpnKHJAok8' /&gt;&lt;/object&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-4463686642549508332?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/4463686642549508332/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=4463686642549508332&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/4463686642549508332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/4463686642549508332'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2007/12/still-git.html' title='Still a git...'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-6970924553493483252</id><published>2007-12-16T11:54:00.000Z</published><updated>2007-12-16T12:16:42.803Z</updated><title type='text'>You'r a... git</title><content type='html'>Já tentei várias vezes, todas elas sem grande sucesso utilizar algum sistema de controlo de versões. Existem vários motivos que levaram a que essas tentativas não tenham tido sucesso. &lt;br /&gt;Primeiro tentei implementar o CVS, não só os meus conhecimentos do CVS contribuiram para que nunca chegasse a bom porto, como a resistência daqueles que "não têm tempo" acabou por enterrar de vez a ideia.&lt;br /&gt;Mais tarde, quando ouvi falar pela primeira vez de um fork do CVS chamado Subversion voltei à carga, de novo foi um falhanço pelos mesmos motivos do anterior.&lt;br /&gt;Desta vez estou a tentar o git, já consegui com algum sucesso colocar um repositório em funcionamento, para a minha maneira de ver as coisas, parece-me mais intuitivo e foi mais fácil perceber a lógica por trás daquilo. Já consegui colocar isto em andamento num dos projectos em que estou envolvido, vamos a ver se nos outros a tal "resistência" não leva a melhor.&lt;br /&gt;&lt;br /&gt;Para compreender e conhecer este git, alguma documentação deu uma grande ajuda, por exemplo este &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/tutorial.html"&gt;tutorial&lt;/a&gt; muito sucinto e &lt;i&gt;straight to the point&lt;/i&gt;. O &lt;a href="http://jonas.iki.fi/git_guides/HTML/git_guide/"&gt;Git in a Nutshell&lt;/a&gt; é um pouco mais extenso mas também deu uma grande ajuda.&lt;br /&gt;Agora vou ver como é que o emacs se porta com o &lt;a href="http://www.emacswiki.org/cgi-bin/emacs-en/Git"&gt;git mode&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-6970924553493483252?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/6970924553493483252/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=6970924553493483252&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/6970924553493483252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/6970924553493483252'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2007/12/your-git.html' title='You&apos;r a... git'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-5172133710977042611</id><published>2007-12-09T12:55:00.000Z</published><updated>2007-12-09T13:31:40.438Z</updated><title type='text'>mod_python</title><content type='html'>Tenho estado a fazer experiências com o mod_python e uma das dificuldades com que me deparei foi em apanhar raw posts. O problema no mod_python começa por aquilo não ter como objectivo criar uma maneira simples de programar para web mas sim integrar o interpretador no apache e assim não ter as perdas de tempo do system call que é o cgi.&lt;br /&gt;Inicialmente é uma confusão de handlers e formas diferentes de o utilizar, o que afasta os mais fracos e explica a fraca aderência.&lt;br /&gt;O grande mal do mod_python é exactamente não ter sido feito exclusivamente para programadores, para usar mod_python é preciso saber mexer nas configurações do apache e mais especificamente aquelas que o próprio mod_python implementa, e exige portanto conhecimentos de administração de sistemas.&lt;br /&gt;&lt;br /&gt;Quanto ao problema que tive era o seguinte: quando chegava ao meu script e fazia um req.read() que é suposto devolver o raw post, este devolvia uma string vazia. O req.form trazia o POST e o GET processados (o POST todo mal processado já que o POST não vinha num formato que podesse ser decomposto em variáveis) o que dava a ideia que o próprio mod_python já tinha consumido o que havia para ler. A configuração que estava a utilizar era a seguinte:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;  &amp;lt;Directory /var/www/test&amp;gt;&lt;br /&gt;            AllowOverride AuthConfig&lt;br /&gt;            Order allow,deny&lt;br /&gt;            Allow from all&lt;br /&gt;&lt;br /&gt;            DirectoryIndex index.py&lt;br /&gt;            SetHandler mod_python&lt;br /&gt;            PythonHandler mod_python.publisher&lt;br /&gt;            PythonDebug On&lt;br /&gt;    &amp;lt;/Directory&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Tentei ainda a seguinte configuração sem resultados:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    &amp;lt;Directory /var/www/test&amp;gt;&lt;br /&gt;            AllowOverride AuthConfig&lt;br /&gt;            Order allow,deny&lt;br /&gt;            Allow from all&lt;br /&gt;&lt;br /&gt;            AddHandler mod_python .py&lt;br /&gt;            PythonHandler mod_python.publisher&lt;br /&gt;            PythonDebug On&lt;br /&gt;    &amp;lt;/Directory&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Depois de enviar um mail para a mailling list do mod_python fiquei a saber que utilizando o publisher handler não é possível apanhar raw posts e que devia definir para os ficheiros que precisem de o fazer um handler básico de mod_python, no meu caso isto não ajuda muito pois tenho um index.py que faz a gestão dos pedidos e não um ficheiro por página por isso criei uma subdirectoria chamada "comm", permiti o override na configuração do apache:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    AllowOverride AuthConfig FileInfo&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Dentro da directoria coloquei um ficheiro .htaccess com o seguinte:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SetHandler mod_python&lt;br /&gt;PythonHandler index&lt;br /&gt;PythonDebug On&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Assim tenho um ficheiro index.py que controla todos os pedidos para esta directoria e no qual já consegui apanhar o raw post, este handler básico deixa uma série de coisas à responsabilidade do programador, tais como o content-type e o código de resposta.&lt;br /&gt;Desta forma consegui construir uma estrutura onde um handler mais avançado controla as páginas mais básicas e um handler mais básico controla as páginas que precisem de comunicar com o exterior através da recepção de dados por POST, como por exemplo SOAP ou a recepção de um binário por POST (não confundir com o upload de um ficheiro num form).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-5172133710977042611?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/5172133710977042611/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=5172133710977042611&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/5172133710977042611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/5172133710977042611'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2007/12/modpython.html' title='mod_python'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-6581025836836000764</id><published>2007-11-08T19:21:00.000Z</published><updated>2007-11-08T20:03:36.437Z</updated><title type='text'>Gutsy</title><content type='html'>Já o tinha instalado no computador do trabalho, mas por upgrade ao 7.4, ontem instalei em casa, mas de raiz. O gutsy gibbon parece-me a melhor versão do ubuntu até agora. O CD de arranque é rápido e a instalação durou a 2ª parte do jogo do Sporting. As aplicações que tive oportunidade de experimentar, como por exemplo o firefox e o totem, este último normalmente identificado como "movie player", têm uma excelente integração com o sistema, utilizando inclusive o synaptic para instalar coisas como o plugin de flash ou codecs em falta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-6581025836836000764?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/6581025836836000764/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=6581025836836000764&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/6581025836836000764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/6581025836836000764'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2007/11/gutsy.html' title='Gutsy'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-8140720421055158695</id><published>2007-10-27T11:15:00.000+01:00</published><updated>2007-10-27T11:15:04.766+01:00</updated><title type='text'>Everybody Else Is Doing It, So Why Can't We?</title><content type='html'>E é assim que começo a falar também do google pagerank. Em junho deste ano, coloquei online um site para um cliente (&lt;a href="http://www.pharmastore.co.pt/"&gt;Pharmastore&lt;/a&gt;), cerca de um mês depois de registado o domínio e no dia seguinte ao ser ter sido colocado online, resolvi verificar o PR da homepage deste site. Qual não é a minha surpresa ao descobrir que esta tinha PR 5. Como o site não tinha conteúdos relevantes, era só um catálogo de produtos, contactei o dono do site para tentar perceber o que tinha acontecido. A conclusão a que chegamos é que provavelmente teria sido por ele ter começado uma campanha no AdWords.&lt;br /&gt;Para tornar mais enigmática esta situação, um mês mais tarde coloquei online outro site, muito no mesmo género. Desta vez o &lt;a href="http://estetica.online.co.pt/"&gt;Estética Online&lt;/a&gt;, este com um pouco mais de conteúdos mas também ele principalmente um catálogo online. O tempo ia passando e o site continuava sem PR atribuído. Para piorar as proporções da minha teoria da conspiração este não tinha feito campanhas no AdWords.&lt;br /&gt;&lt;br /&gt;Agora com estas alterações estou convencido que o PR exagerado do primeiro site terá sido um bug do algoritmo de PR do google e que a demora de atribuição de PR ao &lt;a href="http://estetica.online.co.pt/"&gt;Estética Online&lt;/a&gt;, bem como a outros sites que coloquei online depois, se deveu à actualização que o google estaria já a preparar.&lt;br /&gt;Actualmente ambos os sites têm PR 3, e o &lt;a hre="http://repeatuntilkeypressed.blogspot.com/"&gt;Repeat Until Keypressed&lt;/a&gt; que tinha um PR 4 também baixou para 3.&lt;br /&gt;O &lt;a href="http://games.online.co.pt"&gt;Games Online&lt;/a&gt; continua sem PR atribuído, o que acaba por ser positivo já que o site ainda está muito &lt;i&gt;nu&lt;/i&gt; de conteúdos e se o PR demorar quase seis meses a actualizar como parece ter acontecido desta vez mais vale não estar classificado do que ter um 0, digo eu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-8140720421055158695?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/8140720421055158695/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=8140720421055158695&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/8140720421055158695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/8140720421055158695'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2007/10/everybody-else-is-doing-it-so-why-cant.html' title='Everybody Else Is Doing It, So Why Can&apos;t We?'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-3856055966465651064</id><published>2007-10-16T10:29:00.000+01:00</published><updated>2007-10-16T10:27:36.230+01:00</updated><title type='text'>O baldinho</title><content type='html'>Foi, é ou vai ser uma iniciativa que incita a que os blogs escrevem um post relacionado com ecologia, pelo menos parece porque tenho visto vários blogs a falar do tema com um bannerzinho a dizer "blog action day" no final do post.&lt;br /&gt;&lt;br /&gt;Por isso mesmo aproveito e falo de uma coisa que faço e que me parece ter uns resultados interessantes. Actualmente utilizo um balde onde recolho a água que sai do chuveiro antes de esta aquecer. Num dia, guardando essa água que sai fria antes de começar a tomar banho, em minha casa, duas pessoas, conseguimos recolher cerca de 10 litros de água. Essa água pode ser utilizada para regar plantas, descarregar autoclismos, lavar embalagens de iogurte para reciclar, ser colocada no recipiente de água para limpar os vidros do carro, etc...&lt;br /&gt;Ao fim de um ano conseguiremos gastar menos cerca de 3600 litros de água, e junta-se o útil ao agradável poupa-se os € que iriam para a companhia das águas em troca de ter água a escorrer para o ralo enquanto olhamos para ela à espera que aqueça.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-3856055966465651064?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/3856055966465651064/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=3856055966465651064&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/3856055966465651064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/3856055966465651064'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2007/10/o-baldinho.html' title='O baldinho'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36179455.post-5220423741307556922</id><published>2007-10-13T12:40:00.000+01:00</published><updated>2007-10-13T12:40:02.532+01:00</updated><title type='text'>Questão aos leitores</title><content type='html'>O &lt;a href="http://games.online.co.pt/java/memomemo/"&gt;jogo&lt;/a&gt; que desenvolvi em forma de applet JAVA terá alguns bugs que conheço e outros que não conheço e na sua maioria tenho uma ideia do que fazer para os corrigir, sendo que alguns são mesmo só questões de usabilidade ou coisas que não foram ainda implementadas por opção (como por exemplo os highscores).&lt;br /&gt;&lt;br /&gt;Mas...há um "bug" que já testei em 3 computadores diferentes e browsers diferentes e que acontece sempre e que não tenho a certeza se será meu ou da própria classe Applet. Este tipo de coisas costuma ser culpa do programador, mas o código em questão é tão simples que até fico em dúvida.&lt;br /&gt;&lt;br /&gt;A questão é a seguinte, se eu colocar o seguinte código na minha aplicação:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;private Font myfont;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;myfont = new Font("Arial",Font.BOLD, 22);&lt;br /&gt;gBuffer.setFont(myfont);&lt;br /&gt;gBuffer.drawString("Hello World", 10, 10);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;A primeira vez que executar este código a applet fica cerca de 20 segundos parada e só depois faz alguma coisa. Isto pode ser visto se depois de iniciar o &lt;a href="http://games.online.co.pt/java/memomemo/"&gt;jogo&lt;/a&gt; se entrar nos créditos (estes são feitos com um drawString) ou na área de jogo (os pontos e o tempo são feitos com drawString).&lt;br /&gt;Já experimentei mudar a fonte e o resultado é o mesmo.&lt;br /&gt;&lt;br /&gt;Será que alguém já se deparou com esta situação e tem alguma dica que possa partilhar?&lt;br /&gt;Desde já agradeço.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36179455-5220423741307556922?l=repeatuntilkeypressed.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://repeatuntilkeypressed.blogspot.com/feeds/5220423741307556922/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=36179455&amp;postID=5220423741307556922&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/5220423741307556922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36179455/posts/default/5220423741307556922'/><link rel='alternate' type='text/html' href='http://repeatuntilkeypressed.blogspot.com/2007/10/questo-aos-leitores.html' title='Questão aos leitores'/><author><name>Marco Lopes</name><uri>http://www.blogger.com/profile/01582515706654046160</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05757979128464333142'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>