<?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:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2886092969087352834</id><updated>2015-09-16T14:21:04.745-03:00</updated><category term="programação"/><category term="Delphi"/><category term="video"/><category term="symbian"/><category term="java"/><category term="subversion"/><category term="atalhos"/><category term="backup"/><category term="banco de dados"/><category term="controle de versão"/><category term="firebird"/><category term="freeware"/><category term="jsf"/><category term="keyboard"/><category term="shortcuts"/><category term="svn"/><category term="testes"/><category term="trailer"/><category term="técnica"/><category term="AS/400"/><category term="Delphi Programming"/><category term="Dispositivos"/><category term="Firefox"/><category term="IBM"/><category term="Linguagens"/><category term="Revista"/><category term="TIOBE"/><category term="Tirinha"/><category term="agilidade"/><category term="armazenagem"/><category term="arquitetura"/><category term="bde"/><category term="blog"/><category term="boas práticas"/><category term="branches"/><category term="design"/><category term="download"/><category term="estatistica"/><category term="google"/><category term="hack"/><category term="html"/><category term="ide"/><category term="interessante"/><category term="interface"/><category term="interwiki"/><category term="jogos"/><category term="melhor"/><category term="metricas"/><category term="microsoft"/><category term="mobile"/><category term="mock"/><category term="mozy"/><category term="mssql"/><category term="nokia"/><category term="os"/><category term="pascal"/><category term="php"/><category term="portable"/><category term="qualidade de software"/><category term="reuso"/><category term="ruby"/><category term="sql server"/><category term="star trek"/><category term="storage"/><category term="teclado"/><category term="tetris"/><category term="tortoise"/><category term="tortoisesvn"/><category term="trac"/><category term="transaction"/><category term="trigger"/><category term="vmware"/><category term="widgets"/><category term="wifi"/><title type='text'>Tiago Moraes</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>60</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-72093975590765361</id><published>2009-05-14T11:34:00.003-03:00</published><updated>2009-05-14T11:45:52.799-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linguagens"/><category scheme="http://www.blogger.com/atom/ns#" term="programação"/><title type='text'>Computadores ruins em matemática</title><content type='html'>Faz tempo que não atualizo o blog, mas hoje lendo o &lt;a href=&quot;http://www.codinghorror.com&quot;&gt;Coding Horror&lt;/a&gt; achei um post interessante para compartilhar: &lt;a href=&quot;http://www.codinghorror.com/blog/archives/001266.html&quot;&gt;Why Do Computers Suck at Math?&lt;/a&gt; neste post Jeff Atwood explica um pouco do comportamento dos &lt;a href=&quot;http://pt.wikipedia.org/wiki/V%C3%ADrgula_flutuante&quot;&gt;números em ponto flutuante&lt;/a&gt; mostrando que mesmo sendo bem precisos a forma com que são utilizados pode causar &lt;a href=&quot;http://www.google.com/search?&amp;amp;q=399999999999999-399999999999998&quot;&gt;erros banais&lt;/a&gt; e até mesmo &lt;a href=&quot;http://www.maa.org/mathland/mathland_5_12.html&quot;&gt;perigosos&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;E no final podemos perceber que não são os computadores que são ruins em matemática mas sim os programadores que desconhecem ou ignoram como funciona o sistema de tipos da linguagem.&lt;br /&gt;&lt;br /&gt;Portanto cuidado com as conversões automáticas e os &lt;span style=&quot;font-style: italic;&quot;&gt;overflows&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Você conhece mais algum exemplo de problemas matemáticos na computação?</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/72093975590765361/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=72093975590765361' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/72093975590765361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/72093975590765361'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2009/05/computadores-ruins-em-matematica.html' title='Computadores ruins em matemática'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-6510277898034489509</id><published>2009-02-09T10:33:00.002-03:00</published><updated>2009-02-09T11:56:19.787-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="testes"/><title type='text'>Como não escrever testes unitários</title><content type='html'>&lt;div&gt;Hoje me deparei um tópico no The Daily WTF que mostra claramente como &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;não&lt;/span&gt; devemos escrever testes unitários, chamou minha atenção pois já vi código de testes parecido.&lt;/div&gt;&lt;div&gt;O título do tópico é &lt;a href=&quot;http://forums.thedailywtf.com/forums/p/6869/129673.aspx&quot;&gt;We have automated tests so our code is reliable(nós temos testes automatizados então nosso código é confiável)&lt;/a&gt;, apesar do título quando lemos o exemplo de código de testes utilizado no sistema percebemos que apesar dos testes existirem sua qualidade não torna o código confiável.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Portanto ao escrever testes unitários faça com que estes garantam o que o método sendo testado faz ao invés de simplesmente ignorar as &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;exceptions&lt;/span&gt; que ocorrem.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/6510277898034489509/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=6510277898034489509' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/6510277898034489509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/6510277898034489509'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2009/02/como-nao-escrever-testes-unitarios.html' title='Como não escrever testes unitários'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-1545871777592033878</id><published>2009-02-04T09:18:00.002-03:00</published><updated>2009-02-04T09:51:53.765-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="boas práticas"/><category scheme="http://www.blogger.com/atom/ns#" term="programação"/><category scheme="http://www.blogger.com/atom/ns#" term="reuso"/><title type='text'>Os perigos do reuso (indevido) de código</title><content type='html'>Para diminuir o trabalho como desenvolvedores utilizamos algumas técnicas para reutilizar código e lógica já existente, seja usando boas práticas de Orientação a Objetos ou o velho e bom Ctrl+C e Ctrl+V. &lt;div&gt;Quem já (re)usou estas técnicas sabe que sem o devido cuidado é possível introduzir bugs horríveis e difíceis de serem corrigidos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Um exemplo disso é esta história sobre &lt;a href=&quot;http://www.snopes.com/humor/nonsense/kangaroo.asp&quot;&gt;cangurus atiradores.&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A história não é nova, já tinha me deparado com ela a um bom tempo mas hoje a encontrei de novo no &lt;a href=&quot;http://stackoverflow.com/questions/355796/how-do-you-explain-oo-to-new-programmers/355886#355886&quot;&gt;stackoverflow&lt;/a&gt;, e apesar de ter sido adaptada para causar mais impacto no leitor é um bom aviso para termos cuidado ao reutilizar código.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/1545871777592033878/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=1545871777592033878' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/1545871777592033878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/1545871777592033878'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2009/02/os-perigos-do-reuso-indevido-de-codigo.html' title='Os perigos do reuso (indevido) de código'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-7707645271910250834</id><published>2009-02-03T22:31:00.002-03:00</published><updated>2009-02-03T23:01:05.043-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="armazenagem"/><category scheme="http://www.blogger.com/atom/ns#" term="backup"/><category scheme="http://www.blogger.com/atom/ns#" term="storage"/><title type='text'>Dropbox: sincronize arquivos em diversos computadores</title><content type='html'>Para iniciar 2009 vou falar um serviço/ferramenta para manter sincronizados arquivos em diversos computadores estejam eles rodando windows, mac ou linux. &lt;div&gt;Chamado de &lt;a href=&quot;http://www.getdropbox.com/&quot;&gt;Dropbox&lt;/a&gt; ele funciona com a instalação de um aplicativo e criação de uma pasta que será sincronizada.&lt;/div&gt;&lt;div&gt;É possível colocar fotos, documentos e qualquer outro arquivo. Os arquivos podem ser compartilhados e públicos (&lt;a href=&quot;http://dl.getdropbox.com/u/571442/teste.html&quot;&gt;exemplo&lt;/a&gt;) além é claro de privados.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A velocidade de upload é boa e extremamente transparente, com isso rapidamente é possível disponibilizar algum arquivo para download. E também é feito upload apenas do que mudou no arquivo assim mudanças em arquivos grandes também são enviadas de forma rápida.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Possui uma interface web que permite visualizar a diferença entre as versões dos arquivos e a recuperação de arquivos apagados.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A versão gratuita permite o armazenamento de 2GB e por $99,00 por ano é possível ter 50GB a disposição.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;E você utiliza algum serviço de armazenagem / backup / sincronia de arquivos?&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/7707645271910250834/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=7707645271910250834' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/7707645271910250834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/7707645271910250834'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2009/02/dropbox-sincronize-arquivos-em-diversos.html' title='Dropbox: sincronize arquivos em diversos computadores'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-3872080877829656512</id><published>2008-11-03T09:22:00.004-03:00</published><updated>2008-11-03T10:19:19.910-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="backup"/><category scheme="http://www.blogger.com/atom/ns#" term="freeware"/><category scheme="http://www.blogger.com/atom/ns#" term="mozy"/><title type='text'>Gerencie o backup de seus computadores de forma fácil e gratuita</title><content type='html'>Há dois anos que já conheço o &lt;a href=&quot;https://mozy.com/?code=3G2JR1&quot;&gt;Mozy&lt;/a&gt; mas só nos últimos dias resolvi testá-lo, e me surpreendi com a facilidade de configurar e realizar os backups de vários computadores.&lt;br /&gt;&lt;br /&gt;Com uma interface extremamente amigável em minutos é possível configurar o backup dos emails, contatos, imagens, fotos ou mesmo de qualquer arquivo em seu computador.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_q5FQSDPC214/SQ7u6DR2n6I/AAAAAAAAAF0/uMHpbY3SW3g/s1600-h/Mozy1.PNG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 248px;&quot; src=&quot;http://3.bp.blogspot.com/_q5FQSDPC214/SQ7u6DR2n6I/AAAAAAAAAF0/uMHpbY3SW3g/s400/Mozy1.PNG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5264407695522701218&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Seu aplicativo pode ser instalado em Windows ou Mac e gerencia o inicio do backup, criptografia e envio para os servidores &lt;a href=&quot;https://mozy.com/?code=3G2JR1&quot;&gt;Mozy&lt;/a&gt;, backup que pode ser configurado para acontecer periodicamente ou quando o computador não está em uso para não degradar a performance de outras aplicações. Outra configuração importante é a limitação da banda para upload para não atrapalhar na navegação pela web.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_q5FQSDPC214/SQ76IR_XCBI/AAAAAAAAAF8/o5IQS43lZY4/s1600-h/Mozy2.PNG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 171px;&quot; src=&quot;http://1.bp.blogspot.com/_q5FQSDPC214/SQ76IR_XCBI/AAAAAAAAAF8/o5IQS43lZY4/s400/Mozy2.PNG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5264420034617739282&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Tela com o histórico dos backups.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Com uma versão gratuita começando com 2GB de armazenamento (pode aumentar indicando amigos para usar o &lt;a href=&quot;https://mozy.com/?code=3G2JR1&quot;&gt;Mozy&lt;/a&gt;) ou a versão ilimitada por $4.95 ao mês.&lt;br /&gt;&lt;br /&gt;Existem outros serviços que oferecem espaço online como &lt;a href=&quot;http://mail.google.com+/&quot;&gt;Gmail&lt;/a&gt; e &lt;a href=&quot;http://skydrive.live.com/&quot;&gt;SkyDrive&lt;/a&gt; que oferecem até mais espaço (~7GB e 5GB), a diferença é que um é email, o outro disco virtual e o &lt;a href=&quot;https://mozy.com/?code=3G2JR1&quot;&gt;Mozy&lt;/a&gt; realiza Backups que podem ser restaurados facilmente, ou seja cada um destes serviços tem propósitos diferentes.&lt;br /&gt;&lt;br /&gt;Aprovite e &lt;a href=&quot;https://mozy.com/?code=3G2JR1&quot;&gt;cadastre-se&lt;/a&gt; hoje mesmo e receba gratuitamente mais 512MB (ou seja 2,5GB).&lt;br /&gt;&lt;br /&gt;Você conhece algum outro serviço interessante? Deixe seu comentário.</content><link rel="related" href="https://mozy.com/?code=3G2JR1" title="Gerencie o backup de seus computadores de forma fácil e gratuita"/><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/3872080877829656512/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=3872080877829656512' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/3872080877829656512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/3872080877829656512'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/11/gerencie-o-backup-de-seus-computadores.html' title='Gerencie o backup de seus computadores de forma fácil e gratuita'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_q5FQSDPC214/SQ7u6DR2n6I/AAAAAAAAAF0/uMHpbY3SW3g/s72-c/Mozy1.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-860506493055558431</id><published>2008-06-13T08:34:00.002-03:00</published><updated>2008-06-13T08:39:55.292-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Tirinha"/><title type='text'>Os nerds também amam</title><content type='html'>Para quem é nerd e/ou gosta de Legião Urbana vale apena conferir a tirinha &lt;a href=&quot;http://nerdson.com/blog/os-nerds-tambem-amam-4/&quot;&gt;Os nerds também amam(4)&lt;/a&gt; do Nerdson.&lt;br /&gt;&lt;br /&gt;Parabéns ao(s) autor(es)  destas tirinhas (não pude rapidamente identificá-lo(s), tem várias outras bem interessantes.</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/860506493055558431/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=860506493055558431' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/860506493055558431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/860506493055558431'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/06/os-nerds-tambm-amam.html' title='Os nerds também amam'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-5526730270559061518</id><published>2008-04-29T11:11:00.001-03:00</published><updated>2008-04-29T11:13:22.415-03:00</updated><title type='text'>Ganhe um notebook Dell</title><content type='html'>Concorra a uma viagem para Costão do  Santinho/SC e notebooks Dell.&lt;br /&gt;Cadastre-se e participe&lt;br /&gt;&lt;a href=&quot;http://brazil.winwithdell.com/index.php?Plink=L1209478008881128502&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://brazil.winwithdell.com/banners/banner.gif&quot; alt=&quot;Concorra a uma viagem e mais notebooks Dell.&quot; border=&quot;0&quot; height=&quot;94&quot; width=&quot;215&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/5526730270559061518/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=5526730270559061518' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/5526730270559061518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/5526730270559061518'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/04/ganhe-um-notebook-dell.html' title='Ganhe um notebook Dell'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-6026112559035198063</id><published>2008-04-28T18:44:00.001-03:00</published><updated>2008-04-29T11:14:58.266-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="estatistica"/><category scheme="http://www.blogger.com/atom/ns#" term="star trek"/><title type='text'>Entendendo estatística com Star Trek</title><content type='html'>Para quem é trekker ou quer aprender estatística o artigo &lt;a href=&quot;http://www.clicktracks.com/insidetrack/articles/kirk_analytics.php&quot;&gt;Analytics According to Captain Kirk&lt;/a&gt; será uma leitura muito interessante.&lt;br /&gt;&lt;br /&gt;O autor mostrará com a ajuda de diversos gráficos e números o &quot;Fenômeno camisa vermelha&quot; (Red-Shirt Phenomenon), que teve menção em um episódio da série Lost.</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/6026112559035198063/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=6026112559035198063' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/6026112559035198063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/6026112559035198063'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/04/entendendo-estatstica-com-star-trek.html' title='Entendendo estatística com Star Trek'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-949462289562831580</id><published>2008-04-28T11:58:00.003-03:00</published><updated>2008-12-05T10:17:28.988-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Delphi Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="pascal"/><category scheme="http://www.blogger.com/atom/ns#" term="TIOBE"/><title type='text'>Popularidade de Delphi e Pascal sobe</title><content type='html'>De acordo com o &lt;a href=&quot;http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html&quot;&gt;TIOBE Programming Community Index for April 2008&lt;/a&gt; a popularidade de Delphi Programming e Pascal subiu.</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/949462289562831580/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=949462289562831580' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/949462289562831580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/949462289562831580'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/04/popularidade-de-delphi-e-pascal-sobe.html' title='Popularidade de Delphi e Pascal sobe'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-5573405456778059190</id><published>2008-04-28T11:01:00.004-03:00</published><updated>2008-04-28T11:28:53.716-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="blog"/><category scheme="http://www.blogger.com/atom/ns#" term="html"/><title type='text'>Como destacar informações de arquivos em HTML</title><content type='html'>&lt;fieldset style=&quot;padding: 15px; text-align: left;&quot;&gt;&lt;legend&gt;Trecho do arquivo teste.html&lt;/legend&gt;&lt;code&gt;&amp;lt;fieldset style=&quot;padding: 15px; text-align: left;&quot;&gt;&amp;lt;legend&gt;Trecho do arquivo teste.html&amp;lt;/legend&gt;&lt;br /&gt;Quine?&lt;br /&gt;&amp;lt;/fieldset&gt;&lt;/code&gt;&lt;br /&gt;&lt;/fieldset&gt;&lt;br /&gt;O código e a visualização estão acima, utilizando as tags &lt;a href=&quot;http://www.w3schools.com/tags/tag_fieldset.asp&quot;&gt;fieldset&lt;/a&gt; e &lt;a href=&quot;http://www.w3schools.com/tags/tag_legend.asp&quot;&gt;legend&lt;/a&gt;.&lt;br /&gt;Ainda não tenho uma maneira rápida para &quot;colorir&quot; (sintax highlight) o código, se você souber deixe um comentário.</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/5573405456778059190/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=5573405456778059190' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/5573405456778059190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/5573405456778059190'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/04/como-destacar-informaes-de-arquivos-em.html' title='Como destacar informações de arquivos em HTML'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-2711787501699619887</id><published>2008-04-23T17:00:00.005-03:00</published><updated>2008-12-11T08:51:37.839-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="agilidade"/><category scheme="http://www.blogger.com/atom/ns#" term="atalhos"/><category scheme="http://www.blogger.com/atom/ns#" term="keyboard"/><category scheme="http://www.blogger.com/atom/ns#" term="shortcuts"/><title type='text'>KeyJedi: Compartilhando os atalhos no uso de IDEs</title><content type='html'>Este utilitário é para quem faz apresentações, grava tutoriais em vídeo ou trabalha em par e fica perdido quando que está &quot;dirigindo&quot; utiliza muitas teclas de atalho(shortcuts) para agilizar o desenvolvimento.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_q5FQSDPC214/SA-Wc_3m_uI/AAAAAAAAAEk/XFS_sZqfUWA/s1600-h/keyjedi.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;&quot; src=&quot;http://3.bp.blogspot.com/_q5FQSDPC214/SA-Wc_3m_uI/AAAAAAAAAEk/XFS_sZqfUWA/s400/keyjedi.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5192534320306650850&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://weblogs.asp.net/rosherove/archive/2007/06/03/train-to-be-a-keyboard-master-with-keyboard-jedi.aspx&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;a&gt;KeyJedi&lt;/a&gt;&lt;/span&gt; permite a visualização da combinação de teclas digitadas para facilitar o acompanhamento por outras pessoas que não o digitador. Tem também um modo de travar o mouse para que quem tem costume de utilizar o mouse e quer aprender a utilizar atalhos possa policiar-se.&lt;br /&gt;&lt;br /&gt;Como trabalha como um global keyboard hook pode ser utilizado por qualquer aplicação ou IDE seja Delphi, Eclipse, NetBeans, Visual Studio e até mesmo o Paint ou Notepad.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tiagomoraes.blogspot.com/2008/01/atalhos-para-navegar-mais-rpido.html&quot;&gt;Gosto muito de utilizar atalhos&lt;/a&gt; e sempre que programo em par escuto comentários de que &quot;faço mágicas&quot; com o teclado, agora vai ficar mais fácil revelar o segredo da mágica, o que será algo muito bom para toda a equipe.&lt;br /&gt;&lt;br /&gt;Faça o &lt;a href=&quot;http://files.osherove.com/downloads/keyjedi.zip&quot;&gt;download&lt;/a&gt; e diga como você utiliza está tão simples mas importante ferramenta.</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/2711787501699619887/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=2711787501699619887' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/2711787501699619887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/2711787501699619887'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/04/keyjedi-compartilhando-os-atalhos-no.html' title='KeyJedi: Compartilhando os atalhos no uso de IDEs'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_q5FQSDPC214/SA-Wc_3m_uI/AAAAAAAAAEk/XFS_sZqfUWA/s72-c/keyjedi.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-5038772290961244133</id><published>2008-04-23T08:52:00.002-03:00</published><updated>2008-04-23T08:59:44.772-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="banco de dados"/><category scheme="http://www.blogger.com/atom/ns#" term="download"/><category scheme="http://www.blogger.com/atom/ns#" term="firebird"/><title type='text'>Firebird 2.1 traz muitas novidades</title><content type='html'>Foi lançada a &lt;a href=&quot;http://www.firebirdsql.org/index.php?op=devel&amp;amp;sub=engine&amp;amp;id=fb210_release&quot;&gt;versão 2.1&lt;/a&gt; do Banco de dados open source &lt;a href=&quot;http://www.firebirdsql.org&quot;&gt;Firebird&lt;/a&gt; que traz muitas funcionalidades interessantes. Vale a pena estudar.&lt;br /&gt;&lt;br /&gt;Veja algumas das novas funcionalidades disponíveis no Firebird:&lt;br /&gt;&lt;blockquote&gt;                                 &lt;table cellpadding=&quot;3&quot;&gt;&lt;tbody&gt;&lt;tr&gt;           &lt;td valign=&quot;top&quot; width=&quot;30%&quot;&gt;&lt;b&gt;Database Triggers&lt;/b&gt;&lt;/td&gt;           &lt;td valign=&quot;top&quot;&gt;User-defined PSQL modules that can be designed to fire in various connection-level and  transaction-level events.           &lt;/td&gt;         &lt;/tr&gt;           &lt;tr&gt;           &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Global Temporary Tables&lt;/b&gt;&lt;/td&gt;           &lt;td valign=&quot;top&quot;&gt;SQL standards-compliant global temporary tables have been implemented. These pre-defined tables are instantiated on request for connection-specific or transaction-specific use with non-persistent data, which the Firebird engine stores in temporary files.           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Common Table Expressions (CTEs)&lt;/b&gt;           &lt;/td&gt;           &lt;td valign=&quot;top&quot;&gt;Standards-compliant common table expressions, which make dynamic recursive queries possible.           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;RETURNING Clause&lt;/b&gt;           &lt;/td&gt;           &lt;td valign=&quot;top&quot;&gt;Optional RETURNING clause for all singleton operations, update, insert and delete operations.           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;UPDATE OR INSERT Statement&lt;/b&gt;           &lt;/td&gt;           &lt;td valign=&quot;top&quot;&gt;New UPDATE OR INSERT for MERGE functionality: now you can write a statement that is capable of performing either an update to an existing record or an insert, depending on whether the targeted record exists. &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;LIST() function&lt;/b&gt;           &lt;/td&gt;           &lt;td valign=&quot;top&quot;&gt; A new aggregate function LIST(&lt;something&gt;) retrieves all of the SOMETHINGs in a group and aggregates them into a comma-separated list.           &lt;/something&gt;&lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;New Built-in Functions&lt;/b&gt;           &lt;/td&gt;           &lt;td valign=&quot;top&quot;&gt;Dozens of built-in functions replacing many of the UDFs from the Firebird-distributed UDF libraries.            &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Text BLOBs Can Masquerade as Long VARCHARs&lt;/b&gt;           &lt;/td&gt;           &lt;td valign=&quot;top&quot;&gt;At various levels of evaluation, the engine now treats text BLOBs that are within the 32,765-byte size limit as though they were varchars. String functions like cast, lower, upper, trim and substring will work with these BLOBs, as well as concatenation and assignment to string types. &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Define PSQL Variables and Arguments using Domains&lt;/b&gt;           &lt;/td&gt;           &lt;td valign=&quot;top&quot;&gt;PSQL local variables and input and output arguments for stored procedures can now be declared using domains in lieu of canonical data types.           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;COLLATE in PSQL&lt;/b&gt;           &lt;/td&gt;           &lt;td valign=&quot;top&quot;&gt;Collations can now be applied to PSQL variables and arguments.           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Windows Security to Authenticate Users&lt;/b&gt;           &lt;/td&gt;           &lt;td valign=&quot;top&quot;&gt;Windows &quot;Trusted User&quot; security can be applied for authenticating Firebird users on a Windows server platform host.           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;CREATE COLLATION Command&lt;/b&gt;           &lt;/td&gt;           &lt;td valign=&quot;top&quot;&gt;The DDL command CREATE COLLATION has been introduced for implementing a collation, obviating the need to use the script for it.           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Unicode Collations Anywhere&lt;/b&gt;           &lt;/td&gt;           &lt;td valign=&quot;top&quot;&gt;Two new Unicode collations can be applied to any character set using a new mechanism.           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;New Platform Ports&lt;/b&gt;           &lt;/td&gt;           &lt;td valign=&quot;top&quot;&gt;Ports to Windows 2003 64-bit (AMD64 and Intel EM64T) Classic, Superserver and Embedded models; PowerPC, 32-bit and 64-bit Intel Classic and SS ports for MacOSX. &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Database Monitoring via SQL&lt;/b&gt;           &lt;/td&gt;           &lt;td valign=&quot;top&quot;&gt;Run-time database snapshot monitoring (transactions, tables, etc.) via SQL over some new virtualized system tables. Included in the set of tables is one named MON$DATABASE that provides a lot of the database header information that could not be obtained previously via SQL: such details as the on-disk structure (ODS) version, SQL dialect, sweep interval, OIT and OAT and so on. It is possible to use the information from the monitoring tables to cancel a rogue query. &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Remote Interface&lt;/b&gt;           &lt;/td&gt;           &lt;td valign=&quot;top&quot;&gt;The remote protocol has been slightly improved to perform better in slow networks once drivers are updated to utilise the changes. Testing showed that API round trips were reduced by about 50 percent, resulting in about 40 per cent fewer TCP round trips.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/blockquote&gt;&lt;br /&gt;Faça o &lt;a href=&quot;http://www.firebirdsql.org/index.php?op=files&amp;amp;id=engine_210&quot;&gt;download&lt;/a&gt; e teste com seu projeto.</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/5038772290961244133/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=5038772290961244133' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/5038772290961244133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/5038772290961244133'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/04/firebird-21-traz-muitas-novidades.html' title='Firebird 2.1 traz muitas novidades'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-3801430203926182551</id><published>2008-04-18T08:16:00.007-03:00</published><updated>2008-12-11T08:51:38.256-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Delphi"/><category scheme="http://www.blogger.com/atom/ns#" term="metricas"/><category scheme="http://www.blogger.com/atom/ns#" term="qualidade de software"/><title type='text'>Utilizando Métricas de software com Delphi</title><content type='html'>Lendo o artigo &lt;span style=&quot;font-weight: bold;&quot;&gt;Utilizando métricas de código para melhoria no design de software&lt;/span&gt; de &lt;a href=&quot;http://www.phidelis.com.br/blogs/alissonvale&quot;&gt;Alisson Vale&lt;/a&gt; na &lt;a href=&quot;http://www.mundodotnet.com.br/7conteudo.shtml&quot;&gt;edição 7&lt;/a&gt; da revista &lt;a href=&quot;http://www.mundodotnet.com.br/&quot;&gt;Mundo .Net&lt;/a&gt; fiquei me perguntando se seria fácil encontrar ferramentas semelhantes que funcionassem também em &lt;a href=&quot;http://www.codegear.com/products/delphi&quot;&gt;Delphi&lt;/a&gt; e qual não foi minha surpresa ao acessar o site das duas ferramentas utilizadas no artigo (&lt;a href=&quot;http://www.redhillconsulting.com.au/products/simian/&quot;&gt;Simian&lt;/a&gt; e &lt;a href=&quot;http://www.campwoodsw.com/sourcemonitor.html&quot;&gt;SourceMonitor&lt;/a&gt;) e ver que ambas podem analisar código Delphi.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Simian - Similarity Analyser&lt;/span&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_q5FQSDPC214/SA-ECv3m_sI/AAAAAAAAAEU/Vbo2hg8wvpg/s1600-h/simian.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 72px; height: 85px;&quot; src=&quot;http://2.bp.blogspot.com/_q5FQSDPC214/SA-ECv3m_sI/AAAAAAAAAEU/Vbo2hg8wvpg/s200/simian.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5192514078125784770&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Escrito em java identifica duplicação em código Delphi, Pascal, Java, C#, C, C++, COBOL, Ruby, JSP, ASP, HTML, XML,         Visual Basic, Groovy, PHP enfim qualquer arquivo texto incluindo arquivos ini, xml, arquivos de configuração.&lt;br /&gt;  É gratuito para sistemas não comerciais.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Source Monitor&lt;br /&gt;  &lt;/span&gt;Escrito em C++ analisa 10.000 linhas de código, &lt;span style=&quot;font-family:Georgia, Times New Roman, Times, serif;font-size:100%;&quot;&gt;C++, C, C#, VB.NET, Java, Delphi, Visual Basic (VB6) ou HTML, por segundo e oferece diversas métricas de software que podem ser exportadas para xml ou csv.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_q5FQSDPC214/SA-EQf3m_tI/AAAAAAAAAEc/uTEotLCaKVU/s1600-h/sourcemonitor.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;http://1.bp.blogspot.com/_q5FQSDPC214/SA-EQf3m_tI/AAAAAAAAAEc/uTEotLCaKVU/s400/sourcemonitor.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5192514314348986066&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-family:Georgia, Times New Roman, Times, serif;font-size:100%;&quot;&gt;Fiz algumas outras pesquisas e encontrei alguns outros projetos e produtos que realizam métricas de software também, compartilho aqui para quem tiver interesse:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;img src=&quot;http://www.peganza.com/images/PAL_16.gif&quot; border=&quot;0&quot; height=&quot;16&quot; width=&quot;16&quot; /&gt; &lt;a href=&quot;http://www.peganza.com/products_pal.htm&quot;&gt;Pascal Analyzer&lt;/a&gt; - ferramenta comercial que calcula diversas métricas em projetos Delphi.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Pascal Analyzer&lt;/b&gt; parses Delphi or Borland     Pascal source code. It builds large internal tables of identifiers, and collects other     information such as calls between subprograms. When the parsing is completed, extensive     reports are produced. These reports contain a great deal of important information about     the source code. This information will help you understand your source code better, and     assist you in producing code of higher quality and reliability.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://sourceforge.net/projects/dca/&quot;&gt;Delphi Code Analyser&lt;/a&gt; - opensource,  exporta as métricas para um xls.&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Delphi Code Analyser&lt;/span&gt; calculates some metrics for Delphi source code and verifies the implementation against a logical architectural description of the project.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://sourceforge.net/projects/codelens&quot;&gt;CodeLens&lt;/a&gt; - opensource faz o parse do projeto delphi.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://sourceforge.net/projects/codewrench&quot;&gt;CodeWrench&lt;/a&gt; - um branch do CodeLens incluiu algumas ferramentas como possibilidade de refactoring.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=&quot;font-family:Georgia, Times New Roman, Times, serif;font-size:100%;&quot;&gt;Faça o download: &lt;a href=&quot;http://www.redhillconsulting.com.au/products/simian/&quot;&gt;simian&lt;/a&gt;, &lt;a href=&quot;http://www.campwoodsw.com/sourcemonitor.html&quot;&gt;source monitor&lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/3801430203926182551/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=3801430203926182551' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/3801430203926182551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/3801430203926182551'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/04/utilizando-mtricas-de-software-com.html' title='Utilizando Métricas de software com Delphi'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_q5FQSDPC214/SA-ECv3m_sI/AAAAAAAAAEU/Vbo2hg8wvpg/s72-c/simian.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-6339218079848909963</id><published>2008-04-17T16:11:00.002-03:00</published><updated>2008-04-17T16:20:20.462-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Delphi"/><category scheme="http://www.blogger.com/atom/ns#" term="ide"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><title type='text'>Delphi for PHP 2.0 lançado</title><content type='html'>A versão 2.0 do &lt;a href=&quot;http://www.codegear.com/products/delphi/php&quot;&gt;Delphi for PHP&lt;/a&gt; foi lançada inclusive com tradução da IDE para o português como anunciado por &lt;a href=&quot;http://blogs.codegear.com/nickhodges/2008/04/16/39048/&quot;&gt;Nick Hodges&lt;/a&gt;. PHP está &lt;a href=&quot;http://www.codinghorror.com/blog/archives/001097.html&quot;&gt;crescendo muito em popularidade&lt;/a&gt; e é muito bom ter uma IDE para auxiliar o desenvolvimento em qualquer linguagem.&lt;br /&gt;&lt;br /&gt;Vale a pena conferir.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://update.codegear.com/forms/DelphiPHP2Notify&quot;&gt;Download Delphi for PHP 2.0&lt;/a&gt; (apenas cadastro para ser notificado depois).</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/6339218079848909963/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=6339218079848909963' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/6339218079848909963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/6339218079848909963'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/04/delphi-for-php-20-lanado.html' title='Delphi for PHP 2.0 lançado'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-7160945995443288551</id><published>2008-04-16T14:46:00.003-03:00</published><updated>2008-04-16T15:04:25.526-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="branches"/><category scheme="http://www.blogger.com/atom/ns#" term="controle de versão"/><category scheme="http://www.blogger.com/atom/ns#" term="subversion"/><category scheme="http://www.blogger.com/atom/ns#" term="svn"/><title type='text'>Entendendo branches e merges</title><content type='html'>Em uma &lt;a href=&quot;http://www.codinghorror.com/blog/archives/000968.html&quot;&gt;comparação entre branches e universos paralelos&lt;/a&gt; &lt;span class=&quot;posted&quot;&gt;Jeff Atwood ensina um pouco sobre esta utilidade de sistemas de controle de versão complicada porém de grande utilidade para o desenvolvimento de software.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Já utilizei branches e apesar da insegurança pela inexperiência tudo correu tranquilamente.</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/7160945995443288551/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=7160945995443288551' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/7160945995443288551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/7160945995443288551'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/04/entendendo-branches-e-merges.html' title='Entendendo branches e merges'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-1537885274197970133</id><published>2008-04-15T17:21:00.002-03:00</published><updated>2008-04-15T17:51:03.669-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="banco de dados"/><category scheme="http://www.blogger.com/atom/ns#" term="testes"/><category scheme="http://www.blogger.com/atom/ns#" term="técnica"/><title type='text'>7 maneiras de testar unitariamente código que acessa banco de dados</title><content type='html'>Neste &lt;a href=&quot;http://www.bennorthrop.com/Home/Blog/unit_testing_daos_and_database_code.php&quot;&gt;post&lt;/a&gt; Ben Northrop mostra 7 maneiras de como testar código que faz acesso a banco de dados, como já passei por esta dificuldade e quase diariamente trabalho escrevendo testes desta natureza vou analisar algumas destas maneiras e registrar a forma com que mais trabalho.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;1) Mocks and Stubs &lt;/span&gt;&lt;br /&gt;  A maioria do desenvolvimento que faço é em Delphi e utilizo muito descendentes de TDataset pela facilidade para programar,  então quando vou escrever o teste para um método que não carrega os dados mas apenas os processa posso utilizar mocks ou stubs facilmente passando um Dataset temporário (TClientDataSet) previamente populado.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;2) Development Database e &lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;3) Unit Test Database&lt;/span&gt;&lt;br /&gt;  Desde o princípio foi rejeitado pelos problemas de sincronização da estrutura e dados do banco com o código que cada desenvolvedor está trabalhando.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;4) Local Database&lt;br /&gt;&lt;/span&gt; é realizada por toda a equipe de   Este é o modelo como trabalho, utilizo Firebird para o desenvolvimento e como a tarefa de DBAdesenvolvedores o script de criação do banco e outro script para alimentar o banco com alguns dados de teste faz parte do repositório, assim com algumas tarefas no &lt;a href=&quot;http://sourceforge.net/projects/want/&quot;&gt;want&lt;/a&gt; permitem que cada desenvolvedor esteja com um banco pessoal atualizado com todas as alterações das outras duplas com o &quot;clique de um botão&quot;. E também é fácil testar a criação do banco e rodar todos os testes a qualquer instante. Alguns softwares também são homologados para MSSQL por isto existe um script específico e com as versões gratuitas é barato e relativamente facil cada desenvolvedor ter seu próprio banco de dados.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;5) In-memory Database&lt;/span&gt;&lt;br /&gt;  Nunca trabalhei desta forma.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;6) Data-independent Tests&lt;br /&gt;&lt;/span&gt;  Normalmente a qualidade de testes assim é baixa e eles podem facilmente dar a informação errada por exemplo se no banco existir um registro que satisfaça a condição do teste mas o método que está sendo testado for alterado e retirada dele o código que inseria no banco.&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;7) Non-durable Tests&lt;br /&gt;&lt;/span&gt;  Não é muito vantajoso ter testes que possam quebrar tão facilmente, porém como alguns testes dependem de um script que popule o banco com certos dados as vezes isto pode ocorrer. Por isto prefiro inserir os dados no banco durante o próprio teste e rodar os testes que vão consultar ou alterar estes dados tudo dentro de uma transação iniciada no SetUp e no TearDown cancelada com um rollback.&lt;br /&gt;&lt;br /&gt;Por isto recomento bancos de dados locais sempre que possível pois é muito mais fácil e flexivel principalmente quando utilizamos metodologias ágeis.&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/1537885274197970133/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=1537885274197970133' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/1537885274197970133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/1537885274197970133'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/04/7-maneiras-de-testar-unitariamente.html' title='7 maneiras de testar unitariamente código que acessa banco de dados'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-6021866499498572799</id><published>2008-04-15T16:52:00.002-03:00</published><updated>2008-12-11T08:51:38.512-03:00</updated><title type='text'>Excelente métrica para qualidade de código</title><content type='html'>Como este assunto está na &quot;moda&quot; aqui está a &quot;única métrica válida para qualidade de código&quot;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_q5FQSDPC214/SAUID9f8UJI/AAAAAAAAAEM/YR-6hiqZ58k/s1600-h/wtfm.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;http://3.bp.blogspot.com/_q5FQSDPC214/SAUID9f8UJI/AAAAAAAAAEM/YR-6hiqZ58k/s400/wtfm.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5189563009755533458&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Fonte: http://www.osnews.com/story/19266/WTFs_m</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/6021866499498572799/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=6021866499498572799' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/6021866499498572799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/6021866499498572799'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/04/excelente-mtrica-para-qualidade-de.html' title='Excelente métrica para qualidade de código'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_q5FQSDPC214/SAUID9f8UJI/AAAAAAAAAEM/YR-6hiqZ58k/s72-c/wtfm.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-3885593868736364838</id><published>2008-04-10T08:20:00.004-03:00</published><updated>2008-04-15T16:32:29.082-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Delphi"/><category scheme="http://www.blogger.com/atom/ns#" term="Revista"/><title type='text'>Nova revista gratuita sobre Delphi</title><content type='html'>Assim como &lt;a href=&quot;http://www.ericksasse.com.br/blaise-pascal-magazine/&quot;&gt;Erick Sasse&lt;/a&gt; e &lt;a href=&quot;http://www.bobswart.nl/weblog/Blog.aspx?RootId=5:2108&quot;&gt;Dr. Bob&lt;/a&gt; já noticiaram a &lt;a href=&quot;http://www.blaisepascal.eu/&quot;&gt;Blaise Pascal&lt;/a&gt; é uma nova revista mundial direcionada a linguagem pascal e as diversas ferramentas existentes hoje em dia tais como Delphi, Free Pascal, Kylix, Chrome.&lt;br /&gt;&lt;br /&gt;É possível fazer o download gratuitamente bastando para isso cadastrar-se no site.&lt;br /&gt;&lt;br /&gt;Já baixei e realmente conta com artigos muito bons:&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span onmouseover=&quot;&quot;&gt;&lt;span&gt;Articles&lt;br /&gt;• Representing graphics for math functions / by Peter Bijlsma page 6&lt;br /&gt;• Client Dataset Toolkit / by Detlef Overbeek page 8&lt;br /&gt;• Website name checking / by Henk Schreij page 9&lt;br /&gt;• Database normalisation / by Herman Peeren page 11&lt;br /&gt;• Delphi 2007 and VCL component building / by Bob Swart page 13&lt;br /&gt;• Wallpaper / by Detlef Overbeek page 16&lt;br /&gt;• Coding for two or more types / by Henk Schreij page 17&lt;br /&gt;• Recipe for creating a cookbook / by Tim Opsteeg page 21&lt;br /&gt;• Exploring Rave Reports / by Rik Smit page 25&lt;br /&gt;• Cover story: / Drawing on a changing background&lt;br /&gt;   by David Dirkse page 33&lt;br /&gt;• Mini application: Opening files / by Detlef Overbeek page 35&lt;br /&gt;• Rotating images / by Detlef Overbeek page 36&lt;br /&gt;&lt;br /&gt;Columns&lt;br /&gt;• Why Blaise Pascal / by Detlef Overbeek page 3&lt;br /&gt;• Books etc. / by Frans Doove page 4&lt;br /&gt;&lt;br /&gt;Reminder&lt;br /&gt;• Pointers – how do they work? / by Detlef Overbeek page 24 &lt;span style=&quot;font-style: italic;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span onmouseover=&quot;MM_swapImage(&#39;Page_1_Front_BP1&#39;,&#39;&#39;,&#39;images/jpg/blaiseuk_pag_24_50_proc.jpg&#39;,1)&quot; onmouseout=&quot;MM_swapImgRestore()&quot;&gt;&lt;em&gt;&lt;/em&gt;     &lt;/span&gt;&lt;/blockquote&gt;Assim que ler e achar algum artigo que mereça comentários o farei aqui...&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/3885593868736364838/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=3885593868736364838' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/3885593868736364838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/3885593868736364838'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/04/nova-revista-gratuita-sobre-delphi.html' title='Nova revista gratuita sobre Delphi'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-6297769128612794270</id><published>2008-03-27T08:16:00.008-03:00</published><updated>2008-03-27T13:27:49.640-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="interwiki"/><category scheme="http://www.blogger.com/atom/ns#" term="subversion"/><category scheme="http://www.blogger.com/atom/ns#" term="svn"/><category scheme="http://www.blogger.com/atom/ns#" term="tortoise"/><category scheme="http://www.blogger.com/atom/ns#" term="tortoisesvn"/><category scheme="http://www.blogger.com/atom/ns#" term="trac"/><title type='text'>InterMapTxt: Configurando o Trac para criar links para o TortoiseSVN</title><content type='html'>Mesmo sendo bastante simples a configuração necessária pelo &lt;a href=&quot;http://trac.edgewall.org/&quot;&gt;Trac &lt;/a&gt;para acessar links no estilo &lt;span style=&quot;font-weight: bold;&quot;&gt;tsvn:http://anonsvn.jboss.org/repos/hibernate/core/trunk&lt;/span&gt;, que servem &lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;para o &lt;a href=&quot;http://tortoisesvn.tigris.org&quot;&gt;TortoiseSVN&lt;/a&gt; abrir a tela de checkout do projeto, procurei bastante antes de conseguir e vou compartilhar para que tiver interesse.&lt;br /&gt;&lt;br /&gt;O &lt;a href=&quot;http://trac.edgewall.org/ticket/2989&quot;&gt;ticket#2989&lt;/a&gt; do próprio trac ajudou bastante o caminho que deveria ser seguido. Resumindo a funcionalidade que estamos procurando é chamada de &lt;a href=&quot;http://trac.edgewall.org/wiki/InterWiki&quot;&gt;InterWiki&lt;/a&gt; e para configurá-lo temos que editar a página &lt;a href=&quot;http://trac.edgewall.org/wiki/InterMapTxt&quot;&gt;InterMapTxt &lt;/a&gt;do wiki do trac do projeto em questão que pode ser acessada com uma url mais ou menos assim &lt;span style=&quot;font-weight: bold;&quot;&gt;https://192.0.0.10/trac/projeto/wiki/InterMapTxt,&lt;/span&gt; adaptando a sua realidade óbvio, esta página do wiki é tratada de forma especial pelo trac que interpreta o block de código depois do primeiro separador de linhas &quot;----&quot; como uma lista de entradas InterWiki. O bloco tem esta sintaxe:&lt;br /&gt;&lt;blockquote&gt;{{{&lt;br /&gt;prefix &lt;space&gt; URL [&lt;space&gt; # comment]&lt;br /&gt;}}}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;No nosso caso queremos poder criar links para o protocolo &lt;span style=&quot;font-weight: bold;&quot;&gt;tsvn&lt;/span&gt; então colocaremos a seguinte linha no bloco:&lt;br /&gt;&lt;blockquote&gt;{{{&lt;br /&gt;tsvn       tsvn:&lt;br /&gt;}}}&lt;br /&gt;&lt;/blockquote&gt;Após salvar podemos ver que nosso item já consta na lista de prefixos ativos (List of Active Prefixes).&lt;br /&gt;E já podemos criar links em qualquer página do wiki utilizando a seguinte sintaxe &lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;tsvn:http://anonsvn.jboss.org/repos/hibernate/core/trunk&lt;/span&gt; que cria um link como o seguinte para o&lt;br /&gt;repositório do hibernate: &lt;a href=&quot;tsvn:http://anonsvn.jboss.org/repos/hibernate/core/trunk&quot;&gt;Hibernate Code Trunk&lt;/a&gt; (quem tem o TortoiseSVN instalado pode testar e verificar que abre o diálogo de Checkout)&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;br /&gt;Algo mais avançado que pode ser feito são prefixos com mais informações, por exemplo a url do repositório, facilitando então a criação dos links.&lt;br /&gt;no InterMapTxt colocamos o seguinte item de prefixo:&lt;br /&gt;&lt;blockquote&gt;{{{&lt;br /&gt;tsvn-projeto tsvn:https://192.0.0.10/svn/projeto/  # Tortoise link para o repositóro do &quot;projeto&quot;&lt;br /&gt;}}}&lt;/blockquote&gt;&lt;br /&gt;e podemos utilizar links com o formato &lt;tt style=&quot;font-weight: bold;&quot;&gt;&lt;span class=&quot;searchword1&quot;&gt;tsvn&lt;/span&gt;-projeto:trunk&lt;/tt&gt; e &lt;tt style=&quot;font-weight: bold;&quot;&gt;[&lt;span class=&quot;searchword1&quot;&gt;tsvn&lt;/span&gt;-projeto:trunk último código do projeto]&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;Esta configuração funciona para um projeto no trac, não encontrei como criar uma configuração global para que todos os projetos compartilhem prefixos, se você sabe como fazer me avise e compartilhe.</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/6297769128612794270/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=6297769128612794270' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/6297769128612794270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/6297769128612794270'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/03/intermaptxt-configurando-o-trac-para.html' title='InterMapTxt: Configurando o Trac para criar links para o TortoiseSVN'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-5936157897371682498</id><published>2008-03-11T13:41:00.004-03:00</published><updated>2008-03-11T13:54:05.189-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AS/400"/><category scheme="http://www.blogger.com/atom/ns#" term="Delphi"/><category scheme="http://www.blogger.com/atom/ns#" term="IBM"/><title type='text'>Delphi/400 e Delphi/400 for PHP</title><content type='html'>Se você trabalha dando manutenção em aplicações desenvolvidas para máquinas &lt;a href=&quot;http://search400.techtarget.com/sDefinition/0,,sid3_gci211599,00.html&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;AS/400&lt;/span&gt;&lt;/a&gt; ou &lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/AS/400&quot;&gt;System i&lt;/a&gt; &lt;/span&gt;da IBM agora pode melhorar a interação dos usuários e o desenvolvimento destas aplicações utilizando o &lt;a href=&quot;http://www.codegear.com/products/delphi/400&quot;&gt;Delphi/400 e o Delphi/400 for PHP &lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Veja a descrição do Site da Codegear:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Rapidly build Web, AJAX, PHP and Windows interfaces visually using drag-and-drop components with little or no coding required  &lt;/li&gt;&lt;li&gt;Develop System i database applications visually and connect to all your enterprise data  &lt;/li&gt;&lt;li&gt;Execute SQL requests and display the results in a grid without any need to write a line of code  &lt;/li&gt;&lt;li&gt;Use all the System i services including DataAreas and Data-Queues  &lt;/li&gt;&lt;li&gt;Call existing programs coded in RPG, COBOL, ILE or CLP  &lt;/li&gt;&lt;li&gt;Use all the OS/400 (i5/OS) system commands  &lt;/li&gt;&lt;li&gt;Work with any OS/400 or i5/OS version &lt;/li&gt;&lt;/ul&gt;Eu nunca cheguei perto de uma máquina destas nem das linguagens de programação em que é possivel programar para elas, mas com certeza está integração com o Delphi trará muitas melhorias.&lt;br /&gt;&lt;br /&gt;E você programa para esta plataforma? Então faça o download da &lt;a href=&quot;http://cc.codegear.com/free/delphi400&quot;&gt;versão trial&lt;/a&gt; e de sua opinião sobre está nova ferramenta da CodeGear.</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/5936157897371682498/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=5936157897371682498' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/5936157897371682498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/5936157897371682498'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/03/delphi400-e-delphi400-for-php.html' title='Delphi/400 e Delphi/400 for PHP'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-4395344834430612934</id><published>2008-03-10T13:51:00.009-03:00</published><updated>2008-03-10T14:10:18.444-03:00</updated><title type='text'>O que é produtividade?</title><content type='html'>Pergunta interessante que com certeza tem várias respostas, mas qual é a &quot;melhor&quot; resposta?&lt;br /&gt;Produzir mais em menos tempo com mais qualidade? E como medir a produtividade (quantidade, tempo e qualidade) quando fazemos sempre coisas diferentes (diferente de uma linha de produção) apesar de parecidas, principalmente na indústria de software, são precisas métricas para acompanharmos a produtividade, e isto demanda muito esforço e acaba sendo complicado de fazer.&lt;br /&gt;&lt;br /&gt;Lendo um artigo de &lt;a href=&quot;http://www.xprogramming.com/xpmag/aokoProductivity.htm&quot;&gt;Kate Oneal sobre Produtividade&lt;/a&gt; percebi que podemos mudar um pouco a pergunta. Ao invés de &quot;Como aumentar a produtividade?&quot; podemos perguntar &quot;Como ser mais produtivo?&quot; ou até &quot;O que fazer para produzir mais?&quot;. Está última pode ser respondida não utilizando métricas mas sim gastando-se mais tempo com o que deve ser produzido. Exemplo: gastar mais tempo produzindo casos de uso, histórias, cartões, e etc do que com tarefas auxiliares como erros do sistema de integração, do repositório de arquivos ou com o deploy do sistema, tarefas que devem ser automatizadas para acontecerem rápidamente.&lt;br /&gt;&lt;br /&gt;Resumindo: devemos gastar mais tempo na &quot;atividade fim&quot; que desempenhamos do que nas &quot;atividades meio&quot; que dependemos para trabalhar.</content><link rel="related" href="http://www.xprogramming.com/xpmag/aokoProductivity.htm" title="O que é produtividade?"/><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/4395344834430612934/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=4395344834430612934' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/4395344834430612934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/4395344834430612934'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/03/o-que-produtividade.html' title='O que é produtividade?'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-2514504365704734380</id><published>2008-02-25T08:11:00.002-03:00</published><updated>2008-02-25T08:14:44.995-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="firebird"/><title type='text'>Firebird: Ativando todos os indíces</title><content type='html'>&lt;span class=&quot;ccode&quot;&gt;Para ativar (ou desativar) todos os indices do Firebird basta utilizar um dos comandos abaixo, dependendo da sua versão do &lt;a href=&quot;http://www.firebirdsql.org/&quot;&gt;Firebird&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Firebird 2.x&lt;br /&gt;&lt;blockquote&gt; SET TERM !! ;&lt;br /&gt;&lt;br /&gt;EXECUTE BLOCK AS&lt;br /&gt;DECLARE VARIABLE stmt VARCHAR(1000);&lt;br /&gt;BEGIN&lt;br /&gt;for select &#39;ALTER INDEX &#39;||rdb$index_name ||&#39; ACTIVE;&#39;&lt;br /&gt;from rdb$indices&lt;br /&gt;where rdb$system_flag is not null and rdb$system_flag = 0&lt;br /&gt;into :stmt&lt;br /&gt;do EXECUTE STATEMENT :stmt;&lt;br /&gt;END!!&lt;br /&gt;&lt;br /&gt;SET TERM ; !!&lt;/blockquote&gt;&lt;/span&gt;Firebird 1.x que não tem o comando &quot;&lt;span&gt;&lt;span class=&quot;ccode&quot;&gt;EXECUTE BLOCK&lt;/span&gt;&lt;/span&gt;&quot;:&lt;br /&gt;&lt;span class=&quot;ccode&quot;&gt;&lt;blockquote&gt;select &#39;ALTER INDEX &#39;||rdb$index_name ||&#39; ACTIVE;&#39;&lt;br /&gt;from rdb$indices&lt;br /&gt;where rdb$system_flag is not null and rdb$system_flag = 0&lt;/blockquote&gt;depois copie o resultado e rode novamente como um comando sql&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fonte: &lt;a href=&quot;http://www.firebirdfaq.org/faq274/&quot;&gt;Firebird FAQ&lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/2514504365704734380/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=2514504365704734380' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/2514504365704734380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/2514504365704734380'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/02/firebird-ativando-todos-os-indces.html' title='Firebird: Ativando todos os indíces'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-2389269001739063874</id><published>2008-02-21T13:21:00.006-03:00</published><updated>2008-12-11T08:51:38.733-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="google"/><category scheme="http://www.blogger.com/atom/ns#" term="os"/><category scheme="http://www.blogger.com/atom/ns#" term="vmware"/><title type='text'>gOS: Sistema operacional Google?</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_q5FQSDPC214/R72ldf5UVYI/AAAAAAAAAEE/0GJE2waCRzo/s1600-h/gos.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 539px; height: 413px;&quot; src=&quot;http://1.bp.blogspot.com/_q5FQSDPC214/R72ldf5UVYI/AAAAAAAAAEE/0GJE2waCRzo/s400/gos.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5169469873487893890&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Para que já ouviu falar dos boatos do &lt;a href=&quot;http://wendelbsilva.blogspot.com/2008/01/sistema-operacional-distribuido-da.html&quot;&gt;Sistema Operacional do Google&lt;/a&gt; agora pode fazer o download de um que tem o mesmo propósito.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.thinkgos.com/&quot;&gt;gOS&lt;/a&gt; uma versão modificada do &lt;a href=&quot;http://www.ubuntu.com&quot;&gt;Ubuntu&lt;/a&gt; que tem integração com diversos sites.&lt;br /&gt;&lt;br /&gt;Faça o &lt;a href=&quot;http://www.thinkgos.com/downloads.php&quot;&gt;download&lt;/a&gt;.&lt;br /&gt;Já tem inclusive uma máquina virtual para o &lt;a href=&quot;http://www.vmware.com&quot;&gt;Vmware.&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/2389269001739063874/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=2389269001739063874' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/2389269001739063874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/2389269001739063874'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/02/gos-sistema-operacional-google.html' title='gOS: Sistema operacional Google?'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_q5FQSDPC214/R72ldf5UVYI/AAAAAAAAAEE/0GJE2waCRzo/s72-c/gos.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-413101661412133532</id><published>2008-02-21T08:35:00.004-03:00</published><updated>2008-02-21T08:59:29.685-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="melhor"/><category scheme="http://www.blogger.com/atom/ns#" term="tetris"/><title type='text'>5 motivos para jogar tetris</title><content type='html'>Em&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;a href=&quot;http://io9.com/353746/i-was-programmed-by-tetris-to-be-a-better-person&quot;&gt;I Was Programmed by Tetris to be a Better Person&lt;/a&gt; &lt;/span&gt;  &lt;a href=&quot;http://io9.com/posts/LISA_K/&quot;&gt;Lisa Katayama&lt;/a&gt; conta como se tornou uma pessoa melhor por ter jogado tetris quando era uma criança.&lt;br /&gt;Ela enfatiza alguns pontos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Take calculated risks.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Keep things simple.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Whatever you do, do it with dignity.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;The nail that sticks out should be hammered down.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Get perspective.&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;When faced with adversity, practice humility.&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;E explica que nem seus pais e nenhuma religião poderia ter ensinado tais princípios.&lt;br /&gt;&lt;blockquote&gt;Here&#39;s how a simple video game taught me things that neither my parents, teachers, nor any religion could have ever ingrained in my stubborn-ass pre-pubescent head.&lt;br /&gt;&lt;/blockquote&gt;Também joguei muito tetris quando era criança e diversos outros jogos que se não tivesse jogado com certeza não seria a mesma pessoa. E você, quais jogos influênciaram na sua vida?</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/413101661412133532/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=413101661412133532' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/413101661412133532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/413101661412133532'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/02/5-motivos-para-jogar-tetris.html' title='5 motivos para jogar tetris'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2886092969087352834.post-4661078827515832194</id><published>2008-02-16T08:33:00.002-03:00</published><updated>2008-02-16T08:41:48.395-03:00</updated><title type='text'>Mozilla Prism: torne qualquer site em uma &quot;aplicação&quot;</title><content type='html'>O &lt;a href=&quot;http://labs.mozilla.com/2007/10/prism/&quot;&gt;Mozilla Prism&lt;/a&gt; permite que você crie atalhos no seu computador para qualquer página web, tornando assim a utilização de serviços de forma mais transparente.&lt;br /&gt;&lt;br /&gt;Basta configurar uma nova aplicação apontando para um endereço web.&lt;br /&gt;&lt;br /&gt;Qual a vantagem de colocar um atalho para o endereço? O Prism utiliza o kernel do firefox mas não carrega nem temas nem plugins para acelerar e minimizar o uso da memória.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://labs.mozilla.com/featured-projects/&quot;&gt;Download Mozilla Prism&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Para configurar com proxy no windows altere o arquivo &quot;C:\Arquivos de programas\Prism\defaults\preferences\webrunner-prefs.js&quot; e adicione as linhas seguintes configurando para o seu proxy.&lt;br /&gt;&lt;blockquote&gt;pref(&quot;network.proxy.type&quot;, 1);&lt;br /&gt;pref(&quot;network.proxy.http&quot;, &quot;proxy.site.com&quot;);&lt;br /&gt;pref(&quot;network.proxy.http_port&quot;, 8080);&lt;br /&gt;pref(&quot;network.proxy.no_proxies_on&quot;, &quot;localhost, 127.0.0.1&quot;);&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;a href=&quot;http://kb.mozillazine.org/Network.proxy.type&quot;&gt;Mais configurações.&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://tiagomoraes.blogspot.com/feeds/4661078827515832194/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2886092969087352834&amp;postID=4661078827515832194' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/4661078827515832194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2886092969087352834/posts/default/4661078827515832194'/><link rel='alternate' type='text/html' href='http://tiagomoraes.blogspot.com/2008/02/mozilla-prism-torne-qualquer-site-em.html' title='Mozilla Prism: torne qualquer site em uma &quot;aplicação&quot;'/><author><name>Tiago Moraes</name><uri>http://www.blogger.com/profile/01684154523342255757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>