<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;A0ABQn8-eyp7ImA9WxNUF00.&quot;"><id>tag:blogger.com,1999:blog-17631874</id><updated>2009-11-08T17:49:13.153-02:00</updated><title>Blog do Mitre</title><subtitle type="html">Blog de informações e dicas sobre linux, internet, softwares opensource, programação e cultura.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://jfmitre.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://jfmitre.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>261</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/jfmitre" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;CkMMQXs_eip7ImA9WxNUEUU.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-2467531894525277240</id><published>2009-11-02T14:48:00.000-02:00</published><updated>2009-11-02T14:48:00.542-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-02T14:48:00.542-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="internet" /><category scheme="http://www.blogger.com/atom/ns#" term="googlereader" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>Compartilhando informação com o Google Reader</title><content type="html">Já faz muito tempo que deixei de compartilhar itens que leio no Google Reader nesse blog. Não sei se vou retornar esse hábito, mas seja como for, por causa de um comentário de um amigo, eu fui dar uma olhada a quantas andava a evolução do "share" do Google Reader e me impressionei.&lt;br /&gt;&lt;br /&gt;Há muitas modificações que foram feitas ao longo do tempo que eu não dava mais a mínima por não usar o recurso, mas somente a pouco eu vi todas as modificações juntas e o resultado é que podemos compartilhar textos com notas, comentar sobre documentos compartilhados por terceiros ou mesmo sem compartilhar, localizar pessoas utilizando ferramentas de busca por nome e/ou interesse, usar o recurso "Like" para marcar textos que tenha gostado e usar esse recursos para ver quem gostou daquele item (talvez seja alguém que valha apenas seguir). Você pode tornar o seu perfil público, mas impedir que alguém te siga (eu acho que fiz isso uma vez sem saber do que se tratava, desculpas aí, ok ?) ou torna ele privado e determinar com quem você quer compartilhar.&lt;br /&gt;&lt;br /&gt;Mas recentemente, a região de "Explore" que permite você explorar (e se perder explorando) novos itens, acrescentou o "Popular items" (não sei como foi feita a tradução, "Itens populares" ou "Tópicos populares" ?) que permite visualizar tópicos que possuem um número muito alto de "pessoas que gostaram do tópico" (recursos "Like").&lt;br /&gt;&lt;br /&gt;Enfim, compartilhar e receber informação com o Google Reader ganhou recursos realmente interessantes. A ponto de que voltei a usar essa parte do sistema.&lt;br /&gt;&lt;br /&gt;Quem quiser seguir os meu itens compartilhados pode acessar a informação dessa &lt;a href="http://www.google.com/reader/shared/16455361511155010358"&gt;página&lt;/a&gt;. É, entretanto, necessário notar que não há um botão "Follow" nessa página. Se assinar essa página ela entra no Google reader como um feed RSS qualquer e não no sistema interno do Google Reader. Eu tentei me localizar pela busca existente no "sharing settings" mas não me achei (será quer é para que eu não me ache mesmo ?). Então, caso isso não dê certo, use o e-mail que publico no blog para colocá-lo nos seus contatos. Isso deve permitir que você me encontre.  Se isso também não der certo (?) e você ainda não desistiu de me seguir, você pode assinar um dos feeds que eu compartilhei na página pública, buscar por algo que eu tenha marcado com o "Like" (quase tudo que compartilho eu marco com o "Like") o que permitirá ter acesso ao meus itens compartilhados em uma página que terá o botão "Follow" para você clicar. Essa última idéia dá trabalho, mas funciona sempre.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Por que seguir alguém ?&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Alguém se deu ao trabalho de filtrar a informação para você separando o que realmente é bom do que não é bom, supondo que escolheu seguir uma pessoa com o perfil que te agrade, claro. Você economiza tempo e trabalho. E também não precisa seguir todos os RSS do mundo.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Precisa de mais de um motivo ? Bom, você pode manter uma conversação inteligente longe do blog original que pode não estar com comentário tão inteligentes assim.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;E o lado ruim ?&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Você segue 10 indivíduos com mesmo perfil ? Você terá 10 vezes o mesmo tópico compartilhado.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Encontrar pessoas que te agradem seguir nem sempre é tarefa tão fácil quanto parece.&lt;/li&gt;&lt;li&gt;Têm gente que simplesmente marca todos os tópicos de um certo RSS para compartilhar. Fuja disso, a menos que seja algo necessário para ter diálogos em torno daquela fonte que não permite comentários - ou não aceita seus comentários e de seus pares (?) -, mas se não for o caso, assine o feed original.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-2467531894525277240?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/2467531894525277240/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/11/compartilhando-informacao-com-o-google.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/2467531894525277240?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/2467531894525277240?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/11/compartilhando-informacao-com-o-google.html" title="Compartilhando informação com o Google Reader" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;CUUGSX8_fCp7ImA9WxNWFkk.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-5610512813048862917</id><published>2009-10-15T17:40:00.003-03:00</published><updated>2009-10-15T18:47:08.144-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-15T18:47:08.144-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="livro" /><category scheme="http://www.blogger.com/atom/ns#" term="blog" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="notebook" /><category scheme="http://www.blogger.com/atom/ns#" term="notas" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><title>Rapidinhas, não tão rápidas</title><content type="html">Desde de julho eu não escrevo. Basicamente eu estou com a corda no pescoço e com o carrasco puxando ...&lt;br /&gt;&lt;br /&gt;Somente consegui um tempo para escrever no blog apenas porque torci o pé e o analgésico/anti-inflamatório é forte.&lt;br /&gt;&lt;br /&gt;O último tópico "&lt;a href="http://jfmitre.com/2009/07/descobrindo-o-seu-ip-real.html"&gt;Descobrindo o seu ip real&lt;/a&gt;" está desatualizado.&lt;br /&gt;Por conta disso, eu sugiro o uso de&lt;br /&gt;&lt;pre&gt;alias myip="links -dump &lt;a class="linkification-ext" href="http://jfmitre.googlepages.com/ipsimple" title="Linkification: http://jfmitre.googlepages.com/ipsimple"&gt;http://jfmitre.googlepages.com/ipsimple&lt;/a&gt;|head -1|cut -d',' -f 1"&lt;/pre&gt;no lugar do comando previamente comentado. O comando ficou um pouco mais complicado, mas é mais provável que esse serviço &lt;b&gt;não&lt;/b&gt; sai do ar. Eu não vou atualizar o outro tópico...&lt;br /&gt;&lt;br /&gt;Não pude deixar de notar esse &lt;a href="http://andregondim.eti.br/?p=1096" target="_blank"&gt;tópico&lt;/a&gt; de hoje. Fiquei impressionado com o unp. Ele resolve 70 % das dúvidas que eu tenho que responder sobre descompactar no terminal e ainda elimina uns 10 atalhos que possuo para descompactação em lote de arquivos.&lt;br /&gt;&lt;br /&gt;Vejamos a configuração de notebook &lt;b&gt;Acer Aspire 5738-6922&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;Processador &amp;amp; Chipset&lt;br /&gt;Intel Core 2 Duo T6400 - 2.0GHz, Cache L2: 2MB, FSB: 800MHz.&lt;br /&gt;Memória&lt;br /&gt;3GB DDR3 1066MHz.&lt;br /&gt;Expansível até 4GB.&lt;br /&gt;Armazenamento&lt;br /&gt;HD de 320GB - SATA II, Buffer de 8MB, 5400rpm.&lt;br /&gt;Drive DVDRW - lê mídias double layer.&lt;br /&gt;Tela&lt;br /&gt;Tela de 15.6" com tecnologia Acer Cinecrystal.&lt;br /&gt;Resolução nativa: 1366 x 768 pixels.&lt;br /&gt;Gráficos&lt;br /&gt;Intel GMA 4500MHD ( 128MB dedicado ).&lt;br /&gt;Multimídia&lt;br /&gt;WebCam de 1.3 megapixels.&lt;br /&gt;Interface I/O ( entradas e saídas )&lt;br /&gt;4 USB.&lt;br /&gt;1 RJ-11 ( modem ).&lt;br /&gt;1 RJ-45 ( rede Ethernet ).&lt;br /&gt;1 saída de áudio para fones de ouvidos ou lato-falantes externos.&lt;br /&gt;1 entrada para microfone externo.&lt;br /&gt;1 saída VGA para monitores externos.&lt;br /&gt;1 HDMI.&lt;br /&gt;1 leitor de cartões de memória 5 em 1: SD, MMC, MS, MS PRO e xD.&lt;br /&gt;Comunicação&lt;br /&gt;modem 56Kbps.&lt;br /&gt;rede Gigabit 10/100/1000Mbps.&lt;br /&gt;rede Wireless: Wi-Fi 802.11a/b/g/n.&lt;br /&gt;Interface do usuário&lt;br /&gt;Gabinete azul onix, teclado preto.&lt;br /&gt;Teclado com Ç.&lt;br /&gt;Dimensões e peso&lt;br /&gt;peso: 2.8kg.&lt;br /&gt;&lt;/pre&gt;Sucesso quase absoluto em instalar o Ubuntu. Problema apenas com o microfone interno, ao qual eu nem sei se existe mesmo, e com o headfone, que eu não tentei configurar. O resto, perfeito. Mais ou menos 1100 frames por segundo de vídeo (suficiente para programas 3D que não sejam jogos atuais). Ótima qualidade de som, saída HDMI e memória DDR3.&lt;br /&gt;&lt;br /&gt;Esse notebook foi comprado para o laboratório e ficou sob minha guarda por eu ser o primeiro que irá utilizá-lo. Me ordenaram instalar o Windows XP e o Linux que desejasse. E quem foi que disse que o notebook reconheceu o Windows XP ? Eu sei que tem suporte porque há uns 40 drivers (sem brincadeiras) para instalar posteriormente ao OS. Mas eu não consegui passar das primeiras telas do instalador (E é o Windows XP original, ok ? E eu usei duas mídias distintas de CD !). Não imagina minha &lt;del&gt;alegria&lt;/del&gt; tristeza com a ausência do Windows &lt;del&gt;, especialmente quando eu abri uma garrafa de vinho para comemorar&lt;/del&gt;&lt;br /&gt;&lt;br /&gt;Mas o que me deixou chateado nesse notebook foi o Linux original do sistema (sim, o notebook veio com um GNU/Linux). Além do patético particionamento do sistema, ao qual 10 GB era tudo de Linux e o restante FAT32, o sistema iniciava no terminal (e se tinha um X funcional, não funcionou comigo) e não tinha toda configuração instalada. Quando eu vi o particionamento eu nem me dei ao trabalho de ver outras coisas. Ah ! O&lt;pre&gt;shutdown -r now&lt;/pre&gt;também não funcionou e eu não faço idéia do motivo. Mas como ele travou ao desmontar o HD, eu suponho que algum serviço teimoso não foi corretamente desativado ou que os scripts estavam corrompidos. Seja como for, se fosse meu primeiro contato eu poderia nunca mais querer ouvir falar de Linux na vida e com justa causa.&lt;br /&gt;&lt;br /&gt;O &lt;a href="http://code.google.com/p/introducaoaognulinux/" target="_blank"&gt;livro&lt;/a&gt; não está abandonado, apenas não esperem uma nova versão esse ano (especialmente porque desejo manter em PDF apenas versões estáveis e redondinhas do código que qualquer um pode acessar a qualquer hora - e que também anda parado a um bom tempo). As coisas estão realmente muito apertadas para mim e eu não vi muitas modificações no ubuntu 9.10 que justifiquem um esforço concentrado nesse momento.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;[esqueci]&lt;/b&gt;&lt;br /&gt;Experimente o&lt;a href="http://htop.sourceforge.net/"&gt; htop&lt;/a&gt;. E se desejar, para não ter que reaprender a digitar htop no lugar de top, sugiro adicionar as linhas abaixo ao ~/.bashrc&lt;br /&gt;&lt;pre&gt;# Use o htop no lugar do top, se existir htop&lt;br /&gt;alias top='[ -f /usr/bin/htop ] &amp;amp;&amp;amp; htop || /usr/bin/top'&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;[/esqueci]&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Se tiver algum erro grave de português nesse texto, favor, ignore. Analgésicos não ajudam em nada na concentração.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-5610512813048862917?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/5610512813048862917/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/10/rapidinhas-nao-tao-rapidas.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/5610512813048862917?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/5610512813048862917?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/10/rapidinhas-nao-tao-rapidas.html" title="Rapidinhas, não tão rápidas" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;D0UCQX48eyp7ImA9WxJbEk0.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-7409417116369679127</id><published>2009-07-21T16:40:00.001-03:00</published><updated>2009-07-21T16:41:00.073-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-21T16:41:00.073-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="bash" /><category scheme="http://www.blogger.com/atom/ns#" term="internet" /><title>Descobrindo o seu ip real</title><content type="html">Dica especial para quem não se conecta diretamente na internet e usa um roteador para intermediar a conexão (característica típica de quem está conectado a partir de uma rede interna).&lt;br /&gt;&lt;br /&gt;Para descobrir o seu ip real, normalmente uma busca na internet retorna sites como &lt;a href="http://www.showmyip.com/" target="_blank"&gt;ShowMyIP&lt;/a&gt;. Para quem não sabe, existem milhares de sites com essa capacidade, pois isso não é nenhum recurso extraordinário. &lt;br /&gt;&lt;br /&gt;Mas mais fácil ainda é adicionar as linha&lt;br /&gt;&lt;br /&gt;&lt;i&gt;alias myip='lynx -dump http://www.showmyip.com/simple/'&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;no ~/.bashrc. &lt;br /&gt;&lt;br /&gt;Assim, quando quiser saber o seu ip real, basta digitar &lt;b&gt;myip&lt;/b&gt; no terminal.&lt;br /&gt;Nesse caso, é necessário ter o lynx instalado no computador. Para quem prefere o links, pode-se usar a linha&lt;br /&gt;&lt;br /&gt;&lt;i&gt;alias myip='links -dump http://www.showmyip.com/simple/'&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;no lugar da linha original.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-7409417116369679127?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/7409417116369679127/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/07/descobrindo-o-seu-ip-real.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/7409417116369679127?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/7409417116369679127?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/07/descobrindo-o-seu-ip-real.html" title="Descobrindo o seu ip real" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry gd:etag="W/&quot;AkcGRX47eyp7ImA9WxJbEE4.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-3062753787897259422</id><published>2009-07-19T18:13:00.000-03:00</published><updated>2009-07-19T18:13:44.003-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-19T18:13:44.003-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="configuração" /><category scheme="http://www.blogger.com/atom/ns#" term="dica" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="bash" /><category scheme="http://www.blogger.com/atom/ns#" term="terminal" /><title>Dicas de Juliet Kemp</title><content type="html">O &lt;a href="http://blog.linuxtoday.com/blog/2009/07/a-collection-of.html" target="_blank"&gt;Linux Today&lt;/a&gt; resumiu uma coleção de dicas de Juliet Kemp do &lt;a href="http://www.serverwatch.com/tutorials/" target="_blank"&gt;Server Watch&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Quem não viu, vale apena ver. Algumas coisas, &lt;a href="http://www.serverwatch.com/tutorials/article.php/3821966"  target="_blank"&gt;como as dicas para configurar o PS2, PS3 e PS4&lt;/a&gt; são como descobrir algo que está diante dos seus olhos todos os dias e nem ao menos se importou em olhar para saber do que se trata. Afinal, "todo mundo configura" o PS1, mas quantos sabem o que é o PS2 ou o PS4 ? É claro que algumas dicas são mais do mesmo para alguns, mas para outros ...&lt;br /&gt;&lt;br /&gt;Não se contente com a seleção do Linux Today e verifique as publicações não selecionadas. Aposto que vai descobrir alguma coisa interessante.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-3062753787897259422?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/3062753787897259422/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/07/dicas-de-juliet-kemp.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/3062753787897259422?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/3062753787897259422?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/07/dicas-de-juliet-kemp.html" title="Dicas de Juliet Kemp" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DE8MQH46fSp7ImA9WxJVGUQ.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-2756578965282355882</id><published>2009-07-07T17:00:00.001-03:00</published><updated>2009-07-07T17:01:21.015-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-07T17:01:21.015-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="notas" /><category scheme="http://www.blogger.com/atom/ns#" term="internet" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>Gmail não é mais um aplicativo beta e hoje não é primeiro de abril.</title><content type="html">Essa mensagem é um daqueles ecos da internet que vale apena repetir. &lt;a href="http://gmailblog.blogspot.com/2009/07/gmail-leaves-beta-launches-back-to-beta.html" target="_blank"&gt;O Gmail não é mais um aplicativo beta&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Já acreditei que esse dia nunca chegaria. Já até critiquei o Google por redefinir o conceito de &lt;a href="http://pt.wikipedia.org/wiki/Vers%C3%A3o_beta" target="_blank"&gt;aplicativo beta&lt;/a&gt; sem ter o direito disso. Mas o dia chegou... merece um: &lt;b&gt;Uau !!!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;E para não dizer que não falei dos demais, parece que o Google Docs e o Google Calendar também deixaram de ser beta... &lt;br /&gt;&lt;br /&gt;Vale lembrar aos saudosistas (?) de plantão que o Gmail permite que você volte a usar o logo com o nome beta escrito...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-2756578965282355882?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/2756578965282355882/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/07/gmail-nao-e-mais-um-aplicativo-beta-e.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/2756578965282355882?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/2756578965282355882?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/07/gmail-nao-e-mais-um-aplicativo-beta-e.html" title="Gmail não é mais um aplicativo beta e hoje não é primeiro de abril." /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DE8ERHo9fCp7ImA9WxJVGU0.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-4306368066447689252</id><published>2009-07-06T16:00:00.003-03:00</published><updated>2009-07-06T16:00:05.464-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-06T16:00:05.464-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="archlinux" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><title>ArchLinux: Um mês depois...</title><content type="html">&lt;a href="http://jfmitre.com/2009/06/mudando-radicalmente-distribuicao.html"&gt;A exatamente 1 mês atrás&lt;/a&gt; eu migrei para o &lt;a href="http://www.archlinux.org/" target="_blank"&gt;ArchLinux&lt;/a&gt;. Eu normalmente escrevo o relato "uma semana depois", mas eu queria adquirir mais experiência com o sistema para ter o que falar dele.&lt;br /&gt;&lt;br /&gt;Primeiro ponto: o &lt;a href="http://aur.archlinux.org/" target="_blank"&gt;AUR&lt;/a&gt;. Se quando eu instalei o sistema eu somente senti falta de 1 (um) aplicativo, hoje eu tenho 20 aplicativos do AUR instalados. Me parece que a química, física e matemática não conta com um número muito grande de votos... pacote excelentes, como o &lt;a href="http://aur.archlinux.org/packages.php?ID=10591" target="_blank"&gt;gElemental&lt;/a&gt;*, estão com pouquíssimos votos.&lt;br /&gt;&lt;br /&gt;Até me inscrevi e fiz uns comentários pelo AUR até perceber que não me lembro onde fiz os comentários, ou seja, ainda preciso me adaptar melhor com o sistema da comunidade.&lt;br /&gt;&lt;br /&gt;Por falar nisso, eu "&lt;a href="http://profs.if.uff.br/tjpp/blog/entradas/firefox-3.5-no-arch-linux" target="_blank"&gt;acidentalmente&lt;/a&gt;" conheci um aplicativo chamado &lt;a href="http://aur.archlinux.org/packages.php?ID=5863" target="_blank"&gt;yaourt&lt;/a&gt; que ajuda muito a baixar um aplicativo do AUR. Entre outras coisas, ele permite atualizar pacotes do AUR. Ainda não experimentei esse ponto (instalei o aplicativo a 2 dias) e não posso opinar quanto a eficácia da solução, mas dada a popularidade dela, deve funcionar muito bem.&lt;br /&gt;&lt;br /&gt;A estabilidade é excepcional. Tenho até medo de falar de futuro, mas posso falar de passado. Não houve erros. Não houve problemas. E o sistema de gerenciamento de pacotes é muito robusto.&lt;br /&gt;&lt;br /&gt;Para dizer que eu não vi nada de diferente, o camarada de gerencia o virtualbox-ose (que não é o virtualbox_bin) alterou a versão do módulo do kernel dois dias antes do kernel ser atualizado no repositório do core. Isso me confundiu um pouco, por que o pacman não funcionava com a filosofia que eu conheço. Isso fez que eu pensasse que ele tinha feito uma coisa, mas ele fez outra...&lt;br /&gt;&lt;br /&gt;Inclusive, isso lembra que o kernel foi atualizado nesse meio tempo. E quando digo isso, eu lembro do drive NVIDIA. Pois... não foi observado qualquer problema nesse ponto. O kernel e o módulo foram atualizados no mesmo momento (e eu não vi como).&lt;br /&gt;&lt;br /&gt;Ainda sobre a atualizações de pacotes, duas coisas comuns me chamaram a atenção. NÃO DEVE-SE ignorar mensagens durante a atualização dos pacotes. LER essas mensagens e AGIR (ainda que depois) evita problemas desnecessários. Felizmente, o administradores devem conhecer um pouco a cabeça de usuário (bom, eles são usuários !!!), porque &lt;a href="http://www.archlinux.org/news/450/" target="_blank"&gt;a mensagem&lt;/a&gt; que eu devia ter lido estava no portal... (e isso parece ser um fato comum).&lt;br /&gt;&lt;br /&gt;Lembra que eu &lt;a href="http://jfmitre.com/2009/06/mudando-radicalmente-distribuicao.html"&gt;mencionei&lt;/a&gt; o &lt;a href="http://notasemcfd.blogspot.com/2009/05/desenvolvimento-no-openfoam.html" target="_blank"&gt;OpenFOAM&lt;/a&gt; (que era o motivo de eu ter migrado para o openSUSE), pois é... está compilado e rodando no ArchLinux. Ok ... eu precisei trapacear. Eu compilei a primeiro em outro sistema e depois recompilei com o gcc do ArchLinux, sem fazer um "wcleanAll". Existe algum problema de biblioteca/include que não permite que eu compile o sistema inteiro do zero dentro do ArchLinux (acredito que a versão do binutils seja &lt;b&gt;nova&lt;/b&gt; demais e eu optei por não resolver isso da forma correta - seguindo filosofia do OpenFOAM), acredite em mim quando digo que isso não é um problema. De forma que o mais importante é que até o OpenFOAM está funcionando.&lt;br /&gt;&lt;br /&gt;Bom, o resumo geral dessa história é que eu tive o mês mais produtivo do ano. Eu realmente espero que essa "lua de mel" dure muito.&lt;br /&gt;&lt;br /&gt;* O gElemental não vai instalar fácil no sistema. É necessário editar um arquivo do source, que está dentro do tar.bz2 com uma dica que está nos comentários. Depois modificar o md5sum dentro do PKGBUILD para então conseguir instalar. Mas é a melhor a mais bonita tabela periódica que eu conheço para o GNU/Linux&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-4306368066447689252?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/4306368066447689252/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/07/archlinux-um-mes-depois.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/4306368066447689252?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/4306368066447689252?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/07/archlinux-um-mes-depois.html" title="ArchLinux: Um mês depois..." /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total></entry><entry gd:etag="W/&quot;C0ECSHg_fyp7ImA9WxJVFko.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-5318689098705733496</id><published>2009-07-03T22:40:00.003-03:00</published><updated>2009-07-03T22:41:09.647-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-03T22:41:09.647-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="computador" /><category scheme="http://www.blogger.com/atom/ns#" term="hardware" /><category scheme="http://www.blogger.com/atom/ns#" term="hábitos" /><title>Os bons hábitos do usuário do computador</title><content type="html">Há recomendações que deviam ser seguidas por todos nós, usuários.&lt;br /&gt;&lt;br /&gt;Infelizmente, como toda recomendação ou regra, elas são questionadas por alguns e não são seguidas por muitos.&lt;br /&gt;&lt;br /&gt;Da série de tópicos: &lt;i&gt;faça o que eu escrevo, mas não faça o que eu faço&lt;/i&gt;, proponho relembrar alguns desses bons hábitos, que como já induzi a crer, não são completamente seguidos por mim, mas não deixam de ser bons hábitos.&lt;br /&gt;&lt;br /&gt;A maior parte dessas dicas são aplicáveis em qualquer sistema operacional.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Use boas senhas&lt;/b&gt;. Nada de 123456, ou password, ou data de aniversário, etc.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Modifique as senhas padrões dos seus aplicativos&lt;/b&gt;. Se usa aplicativos ou hardwares com senhas padrões, modifique-os.  Você pode não ser dono de uma grande rede, mas não quer dor de cabeça do mesmo jeito.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Não use espaços e/ou caracteres especiais nos nomes dos arquivos&lt;/b&gt;. Prefira letras minúsculas separadas por &lt;i&gt;underlines&lt;/i&gt; ou notação estilo "WikiPage" (desse jeito que escrevi). Nada de apóstrofo, aspas, ponto de exclamação ou interrogação, nem símbolos como dóllar, hash, arroba, etc. O dóllar ($), por sinal, é um terror, pois $nome é variável, assim, um arquivo que se chame "algo$nome" somente é "protegido" com aspas simples ou usando barra invertida. Esse tipo de caractere trás muitos problemas.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Registre os nomes dos aplicativos que possui e usa&lt;/b&gt;. Qualquer gerenciador de programas descente possui esse tipo de habilidade. Não confie na memória. Muito embora, seja interessante fazer uma limpeza no arquivo eliminando aqueles aplicativos que não te foram úteis durante as atividades.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Faça backup&lt;/b&gt;. Preferencialmente do sistema inteiro, mas impreterivelmente dos arquivos pessoais em mais de uma mídia/tecnologia (se possível). Um gravador de DVD custa muito pouco hoje em dia, a mídia também é barata. &lt;/li&gt;&lt;li&gt;&lt;b&gt;Faça backup dos seus aplicativos online&lt;/b&gt;. E não adianta cobrir o sol com a peneira. Se suas notas estão no evernote e os seus e-mails no gmail, faça backup disso também. Não ignore essa necessidade.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Anote e guarde suas configurações mais usuais&lt;/b&gt;.  Parece que é a mesma coisa que um backup, e até é, se for para restaurar as configurações no mesmo ambiente. Mas aqui eu estou falando de manter um registro de todas aquelas configurações que de tão intuitivas você nem lembra que são uma alteração que você mesmo induziu ao sistema. Se um dia precisar de usar esses recursos em outro sistema, não tem jeito do backup ser tão eficiente assim.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Não tenha receio de danificar o sistema&lt;/b&gt;. Não é a mesma coisa de "pode meter o martelo". O que quero dizer é que há pessoas que não fazem testes porque temem pelas conseqüências da estabilidade (eu mesmo faço isso, e em muitas ocasiões, com boas justificativas técnicas e morais). Mas esse temor pode lhe custar um grande benefício. Vide minha transição para o &lt;a href="http://jfmitre.com/2009/06/mudando-radicalmente-distribuicao.html"&gt;Arch Linux&lt;/a&gt;, eu ganhei muito, perdi nada e não tinha feito isso antes por receio de ficar improdutivo por muito tempo.&lt;/li&gt;&lt;li&gt;&lt;b&gt;O melhor programa é aquele que você sabe usar e que faz o que você quer fazer&lt;/b&gt;. Por até haver um programa que seja tecnicamente melhor que outro, mas as vezes, mudar é como utilizar uma bomba para quebrar um vaso de vidro. Use a melhor ferramenta para o seu objetivo e ponto final.&lt;/li&gt;&lt;li&gt;&lt;b&gt;O programa que você não usa, evolui. Mude quando o novo programa for a escolha certa&lt;/b&gt;. Completando o item anterior, a melhor ferramente pode ser outra no futuro. Não deixe de mudar. O equilíbrio entre o item anterior e esse é o que estimula a produtividade. A falta de equilíbrio gera problemas de diversos níveis. E lembre-se do item 8.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;O computador é uma ferramenta para um objetivo&lt;/b&gt;. Não se esqueça disso.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Crie uma metodologia para gerenciar os seus arquivos&lt;/b&gt;. E não se acomode. Deixar muitos arquivos bagunçados no computador é algo fatal. Preferencialmente, essa metodologia deve ser tão simples quanto possível, mas não mais simples do que o necessário, intuitiva, fácil de executar e adapatável a evolução usual das idéias, ou seja, que seja facilmente gerenciável.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Leia os manuais&lt;/b&gt;. Certo que há manuais mais extensos do que o tempo disponível para lê-los. Certo também que há manuais menos úteis do que devia. Mas eles existem. Se não quer ler o manual de um programa que não sabe usar, considere usar outro programa. &lt;b&gt;Nota:&lt;/b&gt; Tutorias e exemplos ajudam muito, mas não são os bons manuais fontes de tutoriais e exemplos ?&lt;/li&gt;&lt;li&gt;&lt;b&gt;As atividade administrativas são executadas pelo administrador, as de usuário comum, pelo usuário comum&lt;/b&gt;. Isso é regra básica para gerenciamento de sistemas.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Mantenha o registro do seu hardware&lt;/b&gt;. Colete todas as informações possíveis sobre o seu hardware  e guarde em algum lugar seguro. Pode até ser em mídia eletrônica, mas lembre-se de não usar apenas no próprio computador. &lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-5318689098705733496?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/5318689098705733496/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/07/os-bons-habitos-do-usuario-do.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/5318689098705733496?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/5318689098705733496?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/07/os-bons-habitos-do-usuario-do.html" title="Os bons hábitos do usuário do computador" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CEAARnw5fSp7ImA9WxJWEE0.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-8353378631698845936</id><published>2009-06-14T15:00:00.000-03:00</published><updated>2009-06-14T15:05:47.225-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-14T15:05:47.225-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="latex" /><category scheme="http://www.blogger.com/atom/ns#" term="makefile" /><category scheme="http://www.blogger.com/atom/ns#" term="make" /><title>Apresentando um Makefile em detalhes</title><content type="html">Não tem muito tem e fiz uma &lt;a href="http://jfmitre.com/2009/06/uma-introducao-ao-comando-make.html"&gt;introdução ao comando make&lt;/a&gt;. Como mencionado, a forma mais simples quanto possível de apresentar essa questão  é utilizando um exemplo que seja tão simples quanto possível e que não seja simples demais para não ficar algo muito superficial. Por isso, escolhi o meu próprio &lt;a href="http://sites.google.com/site/bemylifeeasy/Home/makefilelatex" target="_blank"&gt;Makefile&lt;/a&gt;, criado para gerar um dvi/pdf de um código LaTeX. Portanto, eu vou colocar esse código aqui conforme eu for citando, mas se quiser, baixe o mesmo para acompanhar localmente e fazer suas próprias anotações nele. Eu não vou modificar o Makefile hoje, mas eu posso vir a atualizar/modificar ele no futuro (até irei comentar sobre pontos falhos do mesmo durante a exposição).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Primeiro passo&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O primeiro passo é definir o objetivo.&lt;br /&gt;&lt;br /&gt;No nosso exemplo: &lt;i&gt;Compilar um código LaTeX, considerando a possibilidade de existir uma bibliografia, um índice remissivo, nomenclatura e glossário.&lt;/i&gt; Isso é o mais completo que eu conheço. Além disso, &lt;i&gt;o Makefile deve sempre gerar um PDF e gerar um DVI quando possível. Para gerar o PDF, eu quero que o usuário possa escolher entre gerar primeiro um DVI e depois converter para o PDF ou gerar direto o PDF. Eu também quero que o Makefile facilite o meu trabalho para visualizar o documento e que seja possível eliminar o resultado e o lixo intermediário gerado facilmente&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Esse era o meu objetivo nesse caso. E entenda que eu sei como fazer essas coisas no terminal (o make não faz mágica)...&lt;br /&gt;&lt;br /&gt;Em outros casos, pode ser: &lt;i&gt;gerar o programa helloworld a partir do código fonte main.c, incluindo uma forma de eliminar o resultado final e os arquivos intermediários&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Lembrando regras básicas de programação.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Recomendações que não são utilizadas por quem recomenda não são, necessariamente, recomendações ruins....&lt;br /&gt;&lt;br /&gt;Comente sempre que achar necessidade e quando não achar também, seja sucinto, mas não omita informações. Entretanto, não se culpe se depois alguém disser que não entendeu o que você queria ter dito. Como senhores do programa, naquele momento parece muito claro o que estamos escrevendo. Depois de um certo tempo, isso tornar menos claro. Então, se possível, reveja suas anotações depois de um certo tempo.&lt;br /&gt;&lt;br /&gt;O alinhamento do código é muito importante, mas não precisa ser de 8 espaços, pode ser 1 ou 2. Eu gosto de 2, mas nesse caso do meu Makefile eu utilizei apenas 1 espaço. Dizem por aí que o recomendado é 3.&lt;br /&gt;&lt;br /&gt;Sempre que possível, faça a tarefa automaticamente. Não peça ao usuário informações que não sejam necessárias, automatize sempre que possível, sem perder a generalidade.&lt;br /&gt;&lt;br /&gt;Por fim, porém não menos importante... escreva como usar o seu código. Isso é para você mesmo se lembrar depois...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;O Makefile.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O Makefile começa com um cabeçalho.&lt;br /&gt;Informe o que achar necessário.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:monospace;"&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#  File: Makefile&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#  Author: J. F. Mitre &lt;&lt;a href="http://jfmitre.com/" rel="nofollow"&gt;http://jfmitre.com&lt;/a&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#  Created: Sex 29 Mai 2009 10:14:33 BRT&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#  Last Update: Qui 04 Jun 2009 21:30:21 BRT&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#  Notes: Arquivo Makefile para compilar códigos em LaTeX&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#         Execute "make help" para ajuda&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;###############################################################################&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;É educado guardar um CHANGELOG. Eu escrevi o programa em uma tacada só na quinta do dia 04.  Na sexta anterior tinha sido o dia que eu decidi fazer o arquivo e escrever as idéias. Então meu CHANGELOG é pequeno. Ainda assim, eu não o divulguei...&lt;br /&gt;&lt;br /&gt;Teria sido legal colocar uma nota sobre licença. Eu esqueci desse detalhe...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Definições de variáveis&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A primeira parte do Makefile é composta por definições de variáveis.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:monospace;"&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Programas Selecionados {{{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;########################## PROGRAMAS SELECIONADOS #############################&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Comando que gera compila o código LaTeX. Escolha entre: latex ou pdflatex&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;TEX &lt;/span&gt;= latex&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Comando que visualiza o arquivo .dvi&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;DVIVIEW &lt;/span&gt;= kdvi&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Comando que visualiza o arquivo .pdf&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;PDFVIEW &lt;/span&gt;= evince&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Comando que converte o arquivo .dvi em .ps&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;DVIPS &lt;/span&gt;= dvips&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# }}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esse bloco acima define quais são os valores das variáveis TEX, DVIVIEW, PDFVIEW e DVIPS.  São aplicativos do sistema que fazem aquilo o comentário indica.  Esse são os comandos que serão utilizados pelo make ao executar um certa tarefa. Esses comandos foram colocados no primeiro bloco, porque podem ser modificados pelo usuário.&lt;br /&gt;&lt;br /&gt;Veja como exemplo a variável TEX. Eu posso usar latex ou pdflatex. O primeiro comando gera um arquivo .dvi enquanto o segundo gera diretamente um arquivo .pdf. Eu também posso usar o visualizador que eu quiser para ver um certo formato de arquivo. Ao invés de kdvi, eu poderia especificar okular ou mesmo o evince (embora ele não inclua as imagens na visualização). E assim por diante. São variáveis para o usuário definir...&lt;br /&gt;&lt;br /&gt;Que fique claro que um Makefile mais sofisticado teria colocar essas opções como argumentos, mas como eu disse, esse Makefile que eu escolhi é mais complexo que o básico e mais simples que o completo.&lt;br /&gt;&lt;br /&gt;O bloco seguinte são as opções do programas&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:monospace;"&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Opções dos comandos {{{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;############################ OPÇÕES DOS COMANDOS ##############################&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Opções do comando TEX especificado acima&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;OPTDVI &lt;/span&gt;=  -halt-on-error&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Opções do comando dvips, que converte o arquivo .dvi para o .ps&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;OPTPS &lt;/span&gt;= -Z&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Opções do comando comando "pdflatex"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;OPTPDF &lt;/span&gt;=&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Formato de conversão utilizado pelo ps2pdf (necessário especificar)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;FORMATO &lt;/span&gt;= a4&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Estilos dos glossários, nomenclaturas, etc. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;STYLENLS &lt;/span&gt;= nomencl.ist&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;STYLEGLS &lt;/span&gt;= nomencl.ist&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Opções do comando make&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;OPTMAKE &lt;/span&gt;= -s&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# }}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Se o usuário não conhece o comando, fica muito difícil dar palpites aqui.  É necessário olhar o man de cada aplicativo para saber porque coloquei certas opções e para escolher outras. Afirmo que essas opções são agradáveis para 99 % dos usuários. Dois únicos cuidados são: definir o tamanho do papel para o ps2pdf e definir o estilo para o glossário e nomenclaturas. Note que eu usei o mesmo, mas há casos onde existe um estilo pré-definido e casos onde são diferentes os estilos.&lt;br /&gt;&lt;br /&gt;Novamente, as opções padrões ficam no interior do Makefile, as alternativas deviam ser passadas por linha de comando, algo que eu não fiz intencionalmente... (quem sabe em uma versão futura)&lt;br /&gt;&lt;br /&gt;Seguindo, encontramos mais variáveis.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:monospace;"&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Outros programas {{{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;############################# OUTROS PROGRAMAS ################################&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Comando que gera o índice, a nomenclatura, etc. Não existe outro atualmente&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;MAKEINDEX &lt;/span&gt;= makeindex&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Comando que gera a bibliografia, não existe outro atualmente&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;BIB &lt;/span&gt;= bibtex&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Conversão entre arquivo .ps e arquivo .pdf, existem outros, mas esse é o&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# melhor para o GNU/Linux.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;PSPDF &lt;/span&gt;= ps2pdf&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Eliminar arquivo. Não é razoável fazer de outra forma.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;RM &lt;/span&gt;= rm -fv&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Comando make (até existem outros, mas não para esse Makefile).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;MAKE &lt;/span&gt;= make&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# }}}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Essas variáveis, são os outros comandos. Comandos no sistema que eu NÃO quero que sejam modificados. Quem gera o índice, e o makeindex, não existe outro. Quem gera a bibliografia é o bibtex, não existe outro.&lt;br /&gt;Quem deleta arquivos é o rm. Bom, até existem outras formas de usá-lo, mas você quer mesmo modificar isso?&lt;br /&gt;&lt;br /&gt;Da mesma forma, o make é o make. Até existem outros, como o colormake, mas fracamente, se é para usar um comando, use o mesmo que foi digitado, ou seja, se eu digito cmake, ele compilaria com o cmake, se eu digito make, ele compila com o make. Se entendeu a minha lógica, é melhor não modificar nesse comando até que consiga fazer o sincronismo entre o digitado pelo usuário e essa variável sem que o usuário deva especificar no interior.&lt;br /&gt;&lt;br /&gt;Embora o autor (eu) não recomende modificá-las, essas variáveis são como quaisquer outras. Podem, sim, ser modificadas. O maior exemplo disso é o ps2pdf. Existem inúmeras formas de converter um arquivo .ps em um arquivo .pdf, mas apenas uma foi disponibilizada por mim, porque assim eu defini.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Execução&lt;/b&gt;&lt;br /&gt;Passada a parte de configuração, vem  a parte de execução.&lt;br /&gt;&lt;br /&gt;Os primeiros comandos são preparações, eventualmente necessárias.&lt;br /&gt;&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Indentificação do nome do arquivo&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;DOC   &lt;/span&gt;:= &lt;span style="color: rgb(0, 139, 139);"&gt;$(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;&lt;b&gt;shell&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; egrep -l &lt;/span&gt;&lt;span style="color: rgb(0, 100, 0);"&gt;'^[^&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;%&lt;/span&gt;&lt;span style="color: rgb(0, 100, 0);"&gt;]*\\begin\{document\}'&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; *.tex |rev|cut -b5- |rev)&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;br /&gt;# Verificando se existe bibliografia&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;BIBFILE &lt;/span&gt;:= &lt;span style="color: rgb(0, 139, 139);"&gt;$(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;&lt;b&gt;shell&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; egrep -l &lt;/span&gt;&lt;span style="color: rgb(0, 100, 0);"&gt;'^[^&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;%&lt;/span&gt;&lt;span style="color: rgb(0, 100, 0);"&gt;]*\\bibliography\{'&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; $(DOC).tex)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Verifica se é uma apresentação do prosper&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;PROSPER   &lt;/span&gt;:= &lt;span style="color: rgb(0, 139, 139);"&gt;$(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;&lt;b&gt;shell&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; egrep -l &lt;/span&gt;&lt;span style="color: rgb(0, 100, 0);"&gt;'^[^&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;%&lt;/span&gt;&lt;span style="color: rgb(0, 100, 0);"&gt;]*\\documentclass\[.*\]\{prosper\}'&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; *.tex)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O primeiro comando define qual é o arquivo principal dentro do diretório em que ele é executado.&lt;br /&gt;É um comando no shell. Ele gera a variável DOC, essa variável é utilizada como $(DOC) (se fosse um shellscript, seria $DOC, mas não é um shellscript, é um Makefile). De forma que $(DOC).tex é o arquivo principal da estrutra LaTeX (que pode conter vários documentos independentes).&lt;br /&gt;&lt;br /&gt;Nesse ponto, vemos a primeira falha do autor. Ele não deixou claro, mas se existirem dois arquivo .tex com nomes diferentes contem um \begin{document} &lt;b&gt;NÃO COMENTADO&lt;/b&gt; no mesmo diretório, haverá erro de compilação.&lt;br /&gt;&lt;br /&gt;Porque o comando seguinte, verifica o arquivo $(DOC).tex procurando pela existência do comando que define se existe ou não uma bibliografia.&lt;br /&gt;&lt;br /&gt;O terceiro comando é um daqueles casos de automação úteis. Oras, se o documento .tex for um código do &lt;a href="http://amath.colorado.edu/documentation/LaTeX/prosper/" target="_blank"&gt;prosper&lt;/a&gt;, então o DVI não faz sentido... logo, eu posso identificar esses casos e resolver o problema dele gerando sempre um PDF no final.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Relembrando as ações básicas&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Gerar um $(DOC).dvi, gerar um $(DOC).pdf, limpar os arquivos intermediários, eliminar tudo que foi gerado pelo Makefile, inclusive o produto final e mostrar o resultado, tanto do dvi, quanto do pdf.&lt;br /&gt;&lt;br /&gt;A ordem dos blocos não importa, exceto pelo primeiro bloco.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Bloco  $(DOC).dvi, o primeiro bloco&lt;br /&gt;&lt;/b&gt;&lt;pre&gt;&lt;b&gt;&lt;/b&gt;&lt;span style="font-family:monospace;"&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Gerando o "arquivo" DVI ...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;.dvi:&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# mas ele é esperto o bastando para saber que não gera-se DVI com o pdflatex.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# E também gerará o PDF caso seja o proper seja utilizado.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;if [ ! -z &lt;span style="color: rgb(0, 139, 139);"&gt;$(PROSPER)&lt;/span&gt; ]; then &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt; dvi; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DVIPS)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(OPTPS)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.dvi; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:monospace;"&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(PSPDF)&lt;/span&gt; -sPAPERSIZE=&lt;span style="color: rgb(0, 139, 139);"&gt;$(FORMATO)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.ps &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.pdf; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:monospace;"&gt;elif [ &lt;span style="color: rgb(0, 139, 139);"&gt;$(TEX)&lt;/span&gt; == latex ]; then &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:monospace;"&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt; dvi; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:monospace;"&gt;elif [ &lt;span style="color: rgb(0, 139, 139);"&gt;$(TEX)&lt;/span&gt; == pdflatex ]; then &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:monospace;"&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.pdf; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:monospace;"&gt;fi&lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;/pre&gt;Em teoria, esse bloco gera um arquivo DVI, mas ele DEVE ser esperto o bastante para saber que não se gera um DVI quando utiliza-se o pdflatex, e o serviço NUNCA para no DVI quando se está utilizando o prosper.&lt;br /&gt;&lt;br /&gt;Mas o primeiro detalhe é o nome do bloco: $(DOC).dvi.  O nome do bloco é o nome do suposto produto final. Isso  é MUITO importante, porque evita que você compile novamente aquilo que já foi compilado, ou seja, se ao digitar "make $(DOC).dvi" no terminal o make encontrar o arquivo $(DOC).dvi, então ele para ali mesmo.&lt;br /&gt;&lt;br /&gt;O segundo detalhe é posição do bloco dentro do código. Ele é o primeiro bloco, logo, ao digitar "make" sem argumentos, será ele que será executado.&lt;br /&gt;&lt;br /&gt;Todos os comandos que compõem esse bloco estão afastados de um tab da margem esquerda.&lt;br /&gt;&lt;br /&gt;O algorítimo é outro assunto, mas para melhor entendimento do Makefile, eu vou passar por esse bloco mais detalhadamente.&lt;br /&gt;&lt;br /&gt;A primeira linha verifica se a variável $(PROSPER) não está vazia. Por que ela não está vazia, deve-se criar o DVI, converter esse DVI para o formato PS e depois converter o PS para o PDF. Porque não converter direto do DVI para o PDF ? Porque fica muito melhor assim &lt;b&gt;de acordo com minha opinião&lt;/b&gt;. Um Makefile mais completo devia dar margem a outras opiniões. Caso $(TEX) seja igual a "latex" e não seja um arquivo prosper, então, eu quero gerar um dvi. Se $(TEX) for igual a pdflatex, então eu quero gerar um pdf diretamente. Por que isso foi feito ? Caso eu digite make no terminal, não é esse o bloco que será executado ? Então, se eu tiver selecionado pdflatex, eu certamente quero um pdf, eu não quero o DVI (porque o pdflatex não gera dvi :-0 ), logo crie o pdf. Melhor que uma mensagem de "erro" antipática (criada porquem escreveu o Makefile) que não lhe permita usar o make  sem argumento diretamente no terminal.&lt;br /&gt;&lt;br /&gt;O arroba na frente do if significa que eu não quero que o comando ecoe pelo terminal. Por padrão, o comando make funciona como se estivesse em permanente modo de debug. Mostrando quais são os comando que serão executados e executando-os. Eu não quero que ele escreva o comando na tela ? Então coloco o arroba na frente. O arroba na frente do if serve para todo o grupo de "uma única linha" do if.&lt;br /&gt;&lt;br /&gt;Digo uma única linha, porque a barra invertida no final de cada linha significa que o comando continua na linha seguinte. O motivo pelo qual fiz isso no arquivo, é porque é mais fácil lidar com erros de formatos quando se utiliza a barra invertida (que deve ser o último caractere de uma certa linha).&lt;br /&gt;&lt;br /&gt;Note os comandos no interior das condições.&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;pre&gt;    &lt;span style="font-family:monospace;"&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt; dvi; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;b&gt;&lt;/b&gt;ou então,&lt;b&gt;&lt;/b&gt;&lt;pre&gt;    &lt;span style="font-family:monospace;"&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.pdf; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;Esse comandos estão invocando o próprio make, que invoca um bloco dentro do Makefile. Um dos blocos chama-se "dvi" e o outro "$(DOC).pdf". Por similaridade com o "$(DOC).dvi", acredito que todos imagem o que seja o "$(DOC).pdf". Por sua vez, o bloco "dvi". É quem faz o serviço sujo. É ele quem de fato realiza o trabalho de compilar os código fonte gerando o resultado. Eu poderia dispensar esse bloco adicional, contudo, o código fica mais legível com ele, que faz um papel de subrotina ou função (como preferir).&lt;br /&gt;&lt;br /&gt;Antes olhar o bloco que faz o serviço sujo. Vamos observar o bloco $(DOC).pdf&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Bloco $(DOC).pdf&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;pre&gt;&lt;b&gt;&lt;/b&gt;&lt;span style="font-family:monospace;"&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Gera o arquivo PDF...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;.pdf:&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# de um arquivo DVI, convertendo-o para PS e em seguida para PDF caso&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# o comando padrão seja o latex ou diretamente, caso o comando padrão seja &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# o pdflatex.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Também diminuimos o esforço caso o prosper esteja sendo usado.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;if [ ! -z &lt;span style="color: rgb(0, 139, 139);"&gt;$(PROSPER)&lt;/span&gt; ]; then &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.dvi; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;elif [ &lt;span style="color: rgb(0, 139, 139);"&gt;$(TEX)&lt;/span&gt; = latex ]; then &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.dvi; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DVIPS)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(OPTPS)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.dvi; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(PSPDF)&lt;/span&gt; -sPAPERSIZE=&lt;span style="color: rgb(0, 139, 139);"&gt;$(FORMATO)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.ps &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.pdf; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;elif [ &lt;span style="color: rgb(0, 139, 139);"&gt;$(TEX)&lt;/span&gt; = pdflatex ]; then &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt; pdflatex; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;fi&lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;/pre&gt;Primeiro, ele verifica se é um arquivo prosper e caso seja, passa ao bloco $(DOC).dvi o dever de cuidar desse caso. Se $(TEX) for igual a "latex", então primeiro deve-se gerar um DVI e sem seguida converter para ps e por fim, converter para pdf. Nesse ponto nota-se claramente a vantagem de ter o bloco com o nome $(DOC).dvi. Caso o DVI exista, ele não será recriado.  Caso $(TEX) seja pdflatex, então chame o comando "$(MAKE) pdflatex", ou seja, o originalíssimo nome de bloco igual a "pdflatex" para a criar um pdf com o "pdflatex".&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Bloco dvi&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Aquele que faz o serviço sujo. Ele é idêntico ao bloco "pdflatex". O único motivo para os dois blocos existirem é porque assim eu defini. Até as opções, que são diferentes variáveis para cada comando, não justifica tal escolha. Primeiro porque eu poderia usar um if para gerar diferentes opções para cada comando, segundo porque as opções do comando latex são iguais as do comando pdflatex.&lt;br /&gt;&lt;br /&gt;E porque defini dois blocos ? Porque eu estava com pressa para assistir uma defesa de tese nesse dia e não percebi o que tinha escrito até que era tarde demais. Aí tive pouco tempo para modificar.&lt;br /&gt;&lt;br /&gt;Reconheço e reafirmo a utilidade de existir o bloco dvi e o bloco pdflatex, assim como devia existir o bloco pdf. porque a intuição humana fará o usuário digitar "make dvi" ou "make pdflatex" ou "make pdf" e assim é muito bom sincronizar o código a intuição humana.  Mas definitivamente, não precisa ser dois blocos grandes e idênticos.&lt;br /&gt;&lt;br /&gt;Bom, o bloco dvi é dado abaixo&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;pre&gt;&lt;b&gt;&lt;/b&gt;&lt;span style="font-family:monospace;"&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Gerando o arquivo DVI com o latex&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;dvi: &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Compliação inicial do arquivo tex&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(TEX)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(OPTDVI)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.tex&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Se existe bibliografia ...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;if [ ! -z &lt;span style="color: rgb(0, 139, 139);"&gt;$(BIBFILE)&lt;/span&gt; ]; then&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(BIB)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.aux; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(TEX)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(OPTDVI)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.tex; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(BIB)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.aux; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(TEX)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(OPTDVI)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.tex; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;fi&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Se existe glossário, nomenclatura ou indice...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;if [ -f &lt;span style="color: rgb(0, 100, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="color: rgb(0, 100, 0);"&gt;.nlo"&lt;/span&gt; ]; then &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKEINDEX)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.nlo &lt;span style="color: rgb(0, 139, 139);"&gt;$(STYLENLS)&lt;/span&gt; -o &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.nls; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(TEX)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(OPTDVI)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.tex; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;fi&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;if [ -f &lt;span style="color: rgb(0, 100, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="color: rgb(0, 100, 0);"&gt;.glo"&lt;/span&gt; ]; then &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKEINDEX)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.glo -s &lt;span style="color: rgb(0, 139, 139);"&gt;$(STYLEGLS)&lt;/span&gt; -o &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.gls; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(TEX)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(OPTDVI)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.tex; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;fi&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;if [ -f &lt;span style="color: rgb(0, 100, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="color: rgb(0, 100, 0);"&gt;.nlo"&lt;/span&gt; ]; then &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKEINDEX)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.nlo &lt;span style="color: rgb(0, 139, 139);"&gt;$(STYLENLS)&lt;/span&gt; -o &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.nls; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(TEX)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(OPTDVI)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.tex; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;fi&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;if [ -f &lt;span style="color: rgb(0, 100, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="color: rgb(0, 100, 0);"&gt;.glo"&lt;/span&gt; ]; then &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKEINDEX)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.glo -s &lt;span style="color: rgb(0, 139, 139);"&gt;$(STYLEGLS)&lt;/span&gt; -o &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.gls; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(TEX)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(OPTDVI)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.tex; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;fi&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;if [ -f &lt;span style="color: rgb(0, 100, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="color: rgb(0, 100, 0);"&gt;.idx"&lt;/span&gt; ]; then &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKEINDEX)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.idx; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(TEX)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(OPTDVI)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.tex; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKEINDEX)&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;.idx; &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(TEX)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(OPTDVI)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;.tex; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   fi &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Uma última vez apenas para confirmar que tudo está ok...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(TEX)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(OPTDVI)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;.tex&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;/pre&gt;&lt;b&gt;&lt;/b&gt;Observe que ele não passa de um bloco de comandos em lista para os quais são efetuadas operações adicionais caso exista bibliografia, glossário, nomenclatura e índice. Nada diferente do que faria se estivesse escrevendo um shellscript, ou seja, nada diferente do que faria se estivesse digitando tudo no terminal. Todos os comandos são repetidos pelo menos duas vezes para assegurar o sucesso de qualquer projeto, não importa o tamanho. Mas esse tipo de dica é latex/terminal/linux não Makefile. Caso venha a compilar o código fonte em c, teriamos algo como "$(GCC) $(GCC_FLAGS) $(CODE)" e seria apenas uma vez.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Blocos clean e cleanall&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;... ou melhor dizendo limpando o diretório. Os dois blocos são reponsáveis por eliminar os arquivos não mais desejados. O bloco clean limpa os arquivos intermediários (e como tem arquivos intermediários nesse caso). o bloco cleanall, elimina todos os arquivos, inclusive os resultados, ou seja, o pdf e o dvi gerado.&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;pre&gt;&lt;b&gt;&lt;/b&gt;&lt;span style="font-family:monospace;"&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Limpando o básico dos arquivos gerados pelo compilador&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;clean:&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(RM)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; *.aux *.log &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(RM)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; *.toc *.lot *.lof&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(RM)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; *.ttt *.fff *.blg *.out&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(RM)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; *.ind *.ilg *.idx *.aux *.glo&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(RM)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; *.gls *.abx *.nlo *.syx *.nls&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(RM)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; *.ps &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(RM)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; *.tex.backup&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(RM)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; *.bib.backup *.bib.bak&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(RM)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; *.tex.bak&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(RM)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; *.bbl&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(RM)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; *.*~&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(RM)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; Makefile~&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Limpando tudo, inclusive os arquivos finais.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;cleanall: &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; clean&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(RM)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; *.dvi *.pdf &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;/pre&gt;&lt;b&gt;&lt;/b&gt;Detalhe interessante fica por conta de como o cleanall foi criado. Ele usa o bloco clean e depois elimina o que sobrou, que são os resultados. Essa é a forma elegante de aproveitar os comandos de um bloco em outro bloco.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Blocos de visualização&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Quatro blocos adicionais foram criados para permitir visualizar o resultado: show e shownew, showpdf e shownewpdf.&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;pre&gt;&lt;b&gt;&lt;/b&gt;&lt;span style="font-family:monospace;"&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;show:&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;if [ ! -z &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(PROSPER)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; ]; then &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;.dvi; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(PDFVIEW)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;.pdf; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   elif [ &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(TEX)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; == latex ]; then &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;.dvi; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DVIVIEW)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;.dvi; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   elif [ &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(TEX)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; == pdflatex ]; then &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;.pdf; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(PDFVIEW)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;.pdf; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   fi&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Idem ao "show", a diferença é que aqui &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# é feito uma nova compilação, de um jeito ou de outro&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;shownew:&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; cleanall&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   @&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;if [ ! -z &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(PROSPER)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; ]; then &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;.dvi; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(PDFVIEW)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;.pdf; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   elif [ &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(TEX)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; == latex ]; then &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;.dvi; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DVIVIEW)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;.dvi; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   elif [ &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(TEX)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; == pdflatex ]; then &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;.pdf; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(PDFVIEW)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;.pdf; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;\&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   fi&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Idem ao "show", mas para arquivos PDF apenas&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;showpdf: &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;.pdf&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(PDFVIEW)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;.pdf&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Idem ao "shownew", mas para arquivos PDF apenas&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;shownewpdf: &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; cleanall    &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(MAKE)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;.pdf&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(PDFVIEW)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;$(DOC)&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;.pdf&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# }}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;/pre&gt;&lt;b&gt;&lt;/b&gt;Nesse ponto, espero que tenham compreendido o suficiente do código para compreender o que foi feito. Pois o objetivo é visualizar o arquivo. Se for um DVI abrir o visualizador de DVI, se for um PDF abrir um visualizador de pdf, caso não exista o arquivo, crie-o.&lt;br /&gt;&lt;br /&gt;Os blocos com "new"  no nome, são assim definidas porque eliminam o pdf/dvi que eventualmente exista, compila novamente e exibe o novo arquivo.&lt;br /&gt;&lt;br /&gt;Os blocos com "pdf" no nome, força que seja visualizado o pdf, não importa qual o processo que o gera. Os demais vão exibir o DVI sempre que esse for válido/existir ou o PDF, em contrário.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Finalizando&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O último bloco (que eu não vou transcrever para esse ponto) é o bloco help, que permite que o usuário digite "make help" para descobrir quais são os comandos diponíveis.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusão&lt;/b&gt;&lt;br /&gt;Esse texto ficou longo demais. Então vou ser breve.&lt;br /&gt;&lt;br /&gt;Falta discutir alguns pontos e abordar um Makefile para programação em si (ou seja, para arquivo C/C++/Fortran). Assim como algumas normas de etiqueta para esses tipos de Makefile. Entenda:  existem nomes de variáveis que são reconhecidos por qualquer programador no mundo, como GCC_FLAGS, porque usá-las ou não usá-las. E finalmente discutir porque usar o Makefile e não um shellscript. Existem fatores que induzem a usar o Makefile, mas se é apenas para você, porque usar o make ?  Mas não prometo a terceira parte para logo...&lt;br /&gt;&lt;br /&gt;Uma quarta parte agendada para daqui a muito (muito mesmo) tempo, seria como lidar de forma correta com as opções dentro do Makefile. Esse é o ponto mais delicado e complexo e daria um ar profissional ao Makefile (como os dos grandes programas).  Mas é também o que dá mais trabalho, portanto, exige planejamento e detalhamento  ... e tempo para escrever.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-8353378631698845936?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/8353378631698845936/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/06/apresentando-um-makefile-em-detalhes.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/8353378631698845936?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/8353378631698845936?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/06/apresentando-um-makefile-em-detalhes.html" title="Apresentando um Makefile em detalhes" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CE8EQ30_fyp7ImA9WxJXFkQ.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-849809136390183959</id><published>2009-06-11T01:00:00.000-03:00</published><updated>2009-06-11T01:00:02.347-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-11T01:00:02.347-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="gcc" /><category scheme="http://www.blogger.com/atom/ns#" term="gdb" /><category scheme="http://www.blogger.com/atom/ns#" term="gfortran" /><category scheme="http://www.blogger.com/atom/ns#" term="programação" /><title>Nemiver: Interface gráfica para o gdb</title><content type="html">Uma das grandes dificuldades de utilizar o vim como uma IDE de programação é que este, apesar de vários esforços em contrário, não possui um interface amigável para realizar um debug em um programa. Diga-se de passagem, isso é ponto para emacs, que possui esse tipo de recurso.&lt;br /&gt;&lt;br /&gt;Pode-se dizer que o gdb é "A Interface". Digo, muito provavelmente um profissional qualificado deve conhecer o suficiente do gdb para usá-lo no terminal. Eu ainda não cheguei nesse nível.&lt;br /&gt;&lt;br /&gt;Na busca de uma interface gráfica, eu encontrei o &lt;a href="http://projects.gnome.org/nemiver/" target="_blank"&gt;Nemiver&lt;/a&gt;. Uma leve é muito competente interface gráfica do projeto GNOME para o gdb.&lt;br /&gt;&lt;br /&gt;Possui o básico, &lt;i&gt;breakpoints&lt;/i&gt;, &lt;i&gt;next&lt;/i&gt;, &lt;i&gt;step in&lt;/i&gt; e &lt;i&gt;out&lt;/i&gt;, monitorar valores,  etc e etc. Não me deixou na mão em nenhum ponto que eu considere crucial.&lt;br /&gt;&lt;br /&gt;Dica rápida, abra o aplicativo executável compilado com a opção de debug e depois abra o código fonte através da opção "Selecionar do alvo executável". Lá estão todos os códigos que compõem aquele aplicativo. A ajuda é interessante. Realmente ajuda nos pontos chaves.&lt;br /&gt;&lt;br /&gt;Seu concorrente mais próximo em objetivo é o &lt;a href="http://www.kdbg.org/" target="_blank"&gt;KDbg&lt;/a&gt;, mas, seguindo a diferença básica entre GNOME e KDE, o Nemiver possui uma interface muito mais limpa e objetiva.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-849809136390183959?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/849809136390183959/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/06/nemiver-interface-grafica-para-o-gdb.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/849809136390183959?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/849809136390183959?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/06/nemiver-interface-grafica-para-o-gdb.html" title="Nemiver: Interface gráfica para o gdb" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DkYEQXk8fSp7ImA9WxJXE0U.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-1913010579883834472</id><published>2009-06-07T11:15:00.002-03:00</published><updated>2009-06-07T11:15:00.775-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-07T11:15:00.775-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="man" /><category scheme="http://www.blogger.com/atom/ns#" term="archlinux" /><category scheme="http://www.blogger.com/atom/ns#" term="cor" /><category scheme="http://www.blogger.com/atom/ns#" term="vim" /><category scheme="http://www.blogger.com/atom/ns#" term="opensuse" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><title>Colorindo as "man pages"</title><content type="html">Para colorir uma página de manual sem alterar o paginador padrão do comando man, defina as linhas abaixo no ~/.bashrc.&lt;br /&gt;&lt;pre&gt;&lt;b&gt;#  begin blinking&lt;/b&gt;&lt;br /&gt;export LESS_TERMCAP_mb=$'\E[01;31m'&lt;br /&gt;&lt;b&gt;#  begin bold&lt;/b&gt;&lt;br /&gt;export LESS_TERMCAP_md=$'\E[01;33m'&lt;br /&gt;&lt;b&gt;#  end mode&lt;/b&gt;&lt;br /&gt;export LESS_TERMCAP_me=$'\E[0m'&lt;br /&gt;&lt;b&gt;#  begin standout-mode - info box&lt;/b&gt;&lt;br /&gt;export LESS_TERMCAP_so=$'\E[01;41;37m'&lt;br /&gt;&lt;b&gt;#  end standout-mode&lt;/b&gt;&lt;br /&gt;export LESS_TERMCAP_se=$'\E[0m'&lt;br /&gt;&lt;b&gt;#  begin underline&lt;/b&gt;&lt;br /&gt;export LESS_TERMCAP_us=$'\E[01;32m'&lt;br /&gt;&lt;b&gt;#  end underline&lt;/b&gt;&lt;br /&gt;export LESS_TERMCAP_ue=$'\E[0m'&lt;/pre&gt;Recarregue o ~/.bashrc (abra uma nova janela do terminal após salvar o arquivo) e digite "man man" (página de manual do comando man) para ver como ficou o resultado.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Traduzindo&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Blinking é piscando ... você já viu alguma coisa piscando no man ? Eu não faço idéia de onde a configuração de "begin blinking" vai atual... eu não vi o vermelho (número 31) em negrito (01) em lugar algum das páginas que verifiquei.&lt;br /&gt;&lt;br /&gt;A variável relativa a "begin bold" refere-se ao conteúdo que tradicionalmente está em negrito, ou seja, nomes dos programas e opções da maioria das páginas man. Bem como títulos de seções. O 01 refere-se ao negrito (sugiro fortemente que mantenha) e 33 é amarelo.&lt;br /&gt;&lt;br /&gt;A variável relativa a "begin standout-mode" refere-se aquela caixa que fica na parte de baixo da janela e indica a a linha (posição relativa e absoluta no texto). Nessa configuração pessoal, eu usei 41, que refere-se ao background com cor vermelha e branco (37) como cor da fonte.&lt;br /&gt;&lt;br /&gt;A variável relativa a "begin underline" refere-se ao conteúdo que tradicionalmente está em sublinhado. Aplica-se quase todos os valores das opções da página de uma manual. No meu exemplo, eu utilizo 01, que é referente a negrito, e  32, que é a cor verde.&lt;br /&gt;&lt;br /&gt;Todos os "end alguma coisa" refere-se a restabelecer a coloração normal do texto após aplicar a modificação de cor. A menos que queira um carnaval de cores sem sentido na sua página de manual, é conveniente manter a configuração acima.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;As cores&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O código de cores e efeitos é simples. As &lt;a href="http://funcoeszz.net/" target="_blank"&gt;Funções ZZ&lt;/a&gt; inclui uma função que lhe ajuda com essa tarefa, mas você não precisa instalar a mesma para usar as cores, &lt;a href="http://funcoeszz.net/teste.html" target="_blank"&gt;basta visitar a página de testes&lt;/a&gt; para descobrir quais são as cores que lhe interessa.&lt;br /&gt;&lt;br /&gt;Na prática, onde está 01 acima, pode variar entre 00, modo normal, 01, modo em negrito. O 04 forma  escrita sublinhada (e eu não sei porque), pois o bom senso diz que o 02 e 03 deviam existir... Pois, ... acho que o bom senso não foi respeitado, pois não funciona comigo... ou que deve ter algum significado especial esse 04.&lt;br /&gt;&lt;br /&gt;Onde lê-se 41 nas variáveis acima, pode-se alterar entre 40 e 47. Aí a figura da página das funções ZZ ajuda, pois essa configuração refere-se a cor de fundo.&lt;br /&gt;&lt;br /&gt;Onde lê-se 37, ou melhor, números na casa de 30, pode-se usar números entre 30 e 37 e essas referem-se a cor da fonte. Novamente o link da página de testes da funções ZZ ajuda muito, porque você deve combinar os valores de fundo e fonte para que tudo fique visível. Note inclusive que seria muito ruim usar uma fonte azul com um fundo preto...&lt;br /&gt;&lt;br /&gt;Nota:  30 é preto, mas preto com negrito fica cinza e torna-se visível sob o fundo preto. Observe que existe uma grosseira variação na tonalidade da cor conforme o status da fonte. É basicamente por isso que uso negrito em tudo acima. Torna o que é importante mais nítido...&lt;br /&gt;&lt;br /&gt;&lt;b&gt; Não funcionou ?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Infelizmente, a configuração acima não funciona em qualquer distribuição. Eu conheço essa dica a muito tempo, mas não funciona(va) no openSUSE... Há um &lt;a href="http://forums.opensuse.org/programming-scripting/414983-color-man-pages.html" target="_blank"&gt;tópico no fórum&lt;/a&gt; que tenta esclarecer alguma coisa (mas cuidado, porque lá tem alguma informações trocadas/erradas), tudo que consegui foi colocar a "info box" colorido... o que não adianta nada. Eu só pude confirmar que essa dica realmente funcionava hoje, no Arch Linux.... Nunca testei no Ubuntu&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Alternativas ?&lt;/b&gt;&lt;br /&gt;No Viva o Linux possui uma dica que &lt;a href="http://www.vivaolinux.com.br/dica/Man-pages-coloridas" target="_blank"&gt;ensina como usar o most como paginador do man&lt;/a&gt; e uma dica de como criar uma função para ler o resultado do man no vim nos comentários. A dica sobre o most e o man você também encontra em outros lugares, &lt;a href="http://hdoria.archlinux-br.org/blog/2007/10/18/man-pages-coloridas/" target="_blank"&gt;como aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;E falando do vim, no &lt;a href="http://vim.wikia.com/wiki/Using_vim_as_a_man-page_viewer_under_Unix" target="_blank"&gt;wiki&lt;/a&gt; existe uma dica mais completa (com várias dicas nos comentários adicionando outras informações) de como colocar o vim para ser o leitor das páginas de manual que eu ainda não testei, e não sei se testarei, mas inclui uma personalização da sintaxe, o que é necessário, pois o padrão não é muito bom.&lt;br /&gt;&lt;br /&gt;No meu vim, &lt;a href="http://vim-anotacoes.blogspot.com/2009/02/lendo-uma-man-page-dentro-do-vim.html" target="_blank"&gt;essa dica também funciona&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Nem tudo fica colorido ?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Curiosamente, o vim é o único que permitiria você de adivinhar o que deve ou não colorir. Entenda que por padrão, não há como o paginador comum (seja ele qual for), adivinhar o que deve ser colorido sem a formatação da página informe isso a ele. Ou seja, o que não está em negrito e o que não está sublinhado, não será identificado como um ponto a ser colorido... e nem tudo que devia ter sofrido com essas modificações de formato de fato sofreram em algumas páginas de manual (veja "man find" ou "man vim" e compare com "man man" e "man cp").&lt;br /&gt;&lt;br /&gt;E é aí que o vim pode levar vantagem, pois pode-se alterar a sintaxe para ele utilizar expressões regulares para identificar o que é uma opção, valor, etc, etc. Infelizmente, isso não é o padrão.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-1913010579883834472?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/1913010579883834472/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/06/colorindo-as-man-pages.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/1913010579883834472?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/1913010579883834472?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/06/colorindo-as-man-pages.html" title="Colorindo as &quot;man pages&quot;" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;Dk8EQH4zfip7ImA9WxJXE0w.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-5249987397014112752</id><published>2009-06-06T16:00:00.000-03:00</published><updated>2009-06-06T16:00:01.086-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-06T16:00:01.086-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="archlinux" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="opensource" /><title>Mudando radicalmente a distribuição</title><content type="html">Imagine dirigindo um caminhão e mandando esse caminhão fazer uma curva para direita. Agora, imagine que ao fazer isso, o caminhão vire para a &lt;b&gt;esquerda&lt;/b&gt;. Consegue ver um problema aqui ?&lt;br /&gt;&lt;br /&gt;Pois é exatamente assim que eu estava me sentindo ao usar o &lt;a href="http://www.opensuse.org/en/" target="_blank"&gt;openSUSE&lt;/a&gt; 11.1. Pela terceira vez em 2 meses ele "quebrou algum recurso". Dessa vez o locale foi corrompido, e assim como eu já havia visto em outro computador, ele "acreditou" que eu estava utilizando uma codificação exótica da qual eu nunca tinha ouvido falar...&lt;br /&gt;&lt;br /&gt;Quem já usou o openSUSE sabe o quanto somos reféns do yast. Se o Yast diz que eu estou utilizando UTF-8, o que eu poderia fazer ? Editar o arquivo na mão ? Não no openSUSE. No openSUSE não se edita diretamente NENHUM arquivo de configuração. O máximo que eu poderia fazer é editar um arquivo que seria o responsável de editar o outro arquivo (é... arquivo que gerencia arquivo).&lt;br /&gt;&lt;br /&gt;Por esses motivo é perdi definitivamente a minha paciência com o openSUSE e instalei o &lt;a href="http://www.archlinux.org/" target="_blank"&gt;Arch Linux&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Por que o Arch Linux ?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Se eu escrever: vire a direita, ele vira a direita... se isso está certo ou errado é problema meu.&lt;br /&gt;Possui um excelente gerenciador de pacotes.&lt;br /&gt;São raras as perguntas sem respostas. Digo, é a maior taxa de solved/resolvido por unidade de tópicos que eu já vi em um fórum.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;E a instabilidade ?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Mais instável do que andava a última versão do openSUSE ? Definitivamente, não. Além disso, como eu disse, para toda pergunta existe uma resposta, assim, quando há um problema, surge uma solução ... De qualquer forma, assim que eu terminar de configurar o sistema eu irei fazer um backup de partição para assegurar uma restauração rápida em caso de necessidade. Afinal, minha máquina principal é uma máquina produtiva e as vezes não pode parar. Embora, eu tenha uma máquina na universidade que sempre pode me servir em caso de necessidade (eu trato essa máquina de forma mais conservadora, limitando programas existentes, freqüência de atualizações, etc, assim, nela o openSUSE ainda está ok).&lt;br /&gt;&lt;br /&gt;Ainda assim, existe um ponto a ser levado em consideração. A tal da instabilidade é &lt;b&gt;teórica&lt;/b&gt;. Digo isso porque até agora, eu só vi estabilidade e soluções de problemas. Tudo que não funcionava no openSUSE está funcionando agora. Exemplo, o gerenciador de discos removíveis encriptados, que não funcionava no meu openSUSE corretamente.&lt;br /&gt;&lt;br /&gt;Mais a melhor impressão que tive do sistema sobre essa questão foi quando eu abri o krename. O krename existente no openSUSE foi compilado com o KDE4 e não funciona. O disponível no Arch Linux foi compilado com o KDE3 e FUNCIONA. Qual dos dois foi menos responsável ?&lt;br /&gt;&lt;br /&gt;Por tudo isso e mais alguma coisa, a tal instabilidade é teórica. Espero alguma turbulência em grandes upgrades que possam requerer alguma modificação grosseira no arquivo de configuração. Nada além disso.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Problemas ?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Claro que eu tive problemas !!! Mas como disse acima, todos os problemas tinham solução em algum lugar da internet.&lt;br /&gt;&lt;br /&gt;É engraçado como o sistema, por exemplo, me lembrou que eu tenho duas placas de rede na máquina (eu só uso uma, a outra sempre fica desabilitada), mas eu demorei a correlacionar o fato de ter uma instabilidade em conseguir conectar ou não por conta da ordem de leitura dos módulos delas... Mas é a tal coisa, para instalar o Arch Linux deve conhecer sua máquina. A distribuição não perdoa quem esquece esses detalhes...&lt;br /&gt;&lt;br /&gt;Alguns problemas, ou melhor, questões, estavam associados ao pouco uso do pacman e ao desconhecimento de nomes de pacotes e seu conteúdo.  Um exemplo, como eu saberia a &lt;i&gt;priori&lt;/i&gt; que o okular estava no pacote kdegraphics ? Mas todas essas perguntas são respondidas por alguém.&lt;br /&gt;&lt;br /&gt;Todos os meus problemas foram solucionados em menos de 1 dia. Recorde histórico nesses mais de 10 anos de uso do GNU/Linux. Seria eu aprendendo alguma coisa ou o sistema não querendo mais informação do que a necessária ?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Uma curiosidade&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Para um sistema que requer que eu configure o teclado com um arquivo de configuração escrito manualmente, foi muito curioso encontrar tantas linhas de configuração no /etc/vimrc e /etc/gvimrc.  São vários detalhes que me obrigam a alertar sobre a necessidade de olhar esses dois arquivos antes de usar os programas. O problema está para quem já tem um .vimrc e não quer configurações conflitantes entre os arquivos. Por tudo isso, eu sugeriria uma remoção significativa do conteúdo desses dois arquivos...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;E porque eu usava o openSUSE mesmo ?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Resposta fácil. Na época que comecei a usá-lo, era a única distribuição que compilava o &lt;a href="http://www.opencfd.co.uk/openfoam/" target="_blank"&gt;openFOAM&lt;/a&gt; (programa livre para simulação &lt;a href="http://notasemcfd.blogspot.com/" target="_blank"&gt;CFD&lt;/a&gt;). E o sistema não foi ruim. Na verdade eu gostei muito da versão 10.3, apesar de me sentir um pouco incomodado com o excesso de camadas entre minhas edições de configuração e os arquivos de configuração propriamente dito e com a velocidade do Yast. A verdade é que tudo funcionou e eu não podia desejar menos.  E a inércia faz com que continue-se utilizando a mesma distro quando tudo vai bem (especialmente com as melhorias do Yast). Mas os problemas atuais do openSUSE 11.1 foram fatais, sistema estava lento demais, demorava muito para abrir alguns módulos do Yast quando não o próprio GNOME (chegava ao ponto de ser possível fazer um lanche enquanto o sistema dava boot), alguns erros "sem lógica" apareciam do nada, etc. O último problema, que foi o de codificação, foi fatal. Se eu o usasse por mais tempo eu correria o risco de corromper todos os meus arquivos. Seria uma tragédia. Tradicionalmente, eu restauraria a partição de um backup estável, mas  resolvi por um fim nisso. Pelo menos em casa. Na universidade eu vou esperar aparecer um "problema-desculpa" para usar o Debian.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;g3data&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Ainda não aprendi como fazer contribuições, mas o único programa que instalei que não estava nos repositórios oficiais é o &lt;a href="http://www.frantz.fi/software/g3data.php" target="_blank"&gt;g3data&lt;/a&gt;. Um simpático programa para interpolar gráficos que estão em formato de imagem (png, pelo menos, nunca tentei com outro).  &lt;a href="http://aur.archlinux.org/packages.php?ID=17185" target="_blank"&gt;Ele está no AUR&lt;/a&gt;, mas desatualizado (ok, pouquinho desatualizado, mas sabe como é, não ?). Então eu criei o meu próprio &lt;a href="http://sites.google.com/site/bemylifeeasy/pkgbuild/PKGBUILD?attredirects=0"&gt;PKGBUILD&lt;/a&gt;. Para ser bem honesto, eu apenas peguei o que estava no AUR e modifiquei os campos necessários.&lt;br /&gt;&lt;br /&gt;Eu não vou contribuir oficialmente enquanto não ler toda aquela documentação que parece existir por aí. Afinal, se eu fizer algo errado não vai ser por omissão. E espero não cometer nenhum pecado ao fazer essa modificação e disponibilizá-la aqui...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Comentários finais&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Espero ter tempo para aprender alguma coisa sobre o AUR.&lt;br /&gt;&lt;br /&gt;É realmente maravilhoso utilizar o /etc/rc.conf para configurar o sistema.&lt;br /&gt;&lt;br /&gt;Claro que eu instalei o tema padrão do Ubuntu no meu Arch Linux... (para quem não sabe, é o meu tema predileto). Até isso ficou melhor no Arch Linux do que no openSUSE, que adora reclamar do tema...&lt;br /&gt;&lt;br /&gt;Tenho minhas dúvidas se eu vou escrever alguma dica para o Arch Linux nesse blog. Não sei se vou aprender algo que não tenha sido detalhadamente divulgado por outro em algum lugar e eu raramente repito assuntos que possam ser encontrados na internet, exceto quando é algo que considero muito raro ou importante. Acho que gastei todo meu conhecimento inédito nesse tópico... Mas provável é que eu escreva reviews sobre certos assuntos...&lt;br /&gt;&lt;br /&gt;Eu agora tenho nautilus-actions. Não funcionava no openSUSE como devia (dava trabalho para instalar e funcionava a meia-boca)&lt;br /&gt;&lt;br /&gt;E o nautilus mostra os modos de "visão de ícones/em lista/compacta" ao lado da barra de enderenços (o openSUSE não mostra ela, penso que era uma configuração, mas nunca achei como restaurar ao "normal")&lt;br /&gt;&lt;br /&gt;Eu agora tenho gdmsetup. Estava com saudades dos bons e velhos aplicativos...&lt;br /&gt;&lt;br /&gt;As fontes estão mais bonitas... e eu não fiz nada para isso...&lt;br /&gt;&lt;br /&gt;E o OpenFOAM ? Bem, se por acaso de um dia ensolarado eu necessitar de ter a versão de desenvolvimento novamente na minha máquina pessoal. Com 100% de certeza não será para executar coisa alguma. Agora existe uma versão instalada em um cluster do lab. Logo, me basta saber o usar bem o editor de textos via terminal (entenda, vim ou emacs). Mas ainda que esse cenário mude, o OpenFOAM tem mostrado uma filosofia de empacotar sua própria versão de tudo. Portanto, tudo que eu teria é trabalho em ler os arquivos de configuração e a documentação e assim determinar exatamente quais são os componentes necessários (e suas respectivas versões) para uma compilação com sucesso. Aliás, hoje é mais fácil compilar o OpenFOAM no Ubuntu do que no openSUSE de forma que todos os argumentos que nos levaram a utilizar o openSUSE  foram destruídos.&lt;br /&gt;&lt;br /&gt;Sinceramente, espero nunca ter que abandonar o Arch Linux.&lt;br /&gt;É muito agradável, leve, simples, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-5249987397014112752?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/5249987397014112752/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/06/mudando-radicalmente-distribuicao.html#comment-form" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/5249987397014112752?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/5249987397014112752?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/06/mudando-radicalmente-distribuicao.html" title="Mudando radicalmente a distribuição" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">8</thr:total></entry><entry gd:etag="W/&quot;Dk8EQno9fip7ImA9WxJXEUs.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-4483010736335053122</id><published>2009-06-04T22:20:00.001-03:00</published><updated>2009-06-04T22:20:03.466-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-04T22:20:03.466-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="makefile" /><category scheme="http://www.blogger.com/atom/ns#" term="make" /><title>Uma introdução ao comando make</title><content type="html">Eu peço uma licença poética a todos para facilitar aqui a explicação sobre o que é o   comando make. Considere este um dos programas mais complexo e mais simples do universo *nix. Essa contradição somada a um rico e super-direto manual, tende a não fornecer uma das melhores famas a esse programa.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;O programa.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O make é um programa como qualquer outro, normalmente instalado no GNU/Linux   como um pacote independente. Sua função é muito simples. O make executa   instruções contidas em um certo arquivo. Digitando apenas make no terminal, o   comando busca pelo arquivo Makefile existente dentro do mesmo diretório onde   foi executado. O arquivo com as instruções pode ser manualmente especificado com a opção -f. Nesse caso, ele pode estar em qualquer diretório e ter&lt;br /&gt;qualquer nome.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;O arquivo Makefile - Conceitos básicos.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Me permitam fazer o paralelo de associar a idéia de um Makefile, com um   script para shell. Pois os dois possuem a mesma função prática.&lt;br /&gt;&lt;br /&gt;O script executa instruções divididas de acordo com opções pré-estabelecidas   no seu interior. O make executa instruções estabelecidas de acordo com cada   uma dos blocos de instruções de um arquivo Makefile.&lt;br /&gt;&lt;br /&gt;O Makefile, portanto, contém instruções em série de algo que deseja fazer.   Exatamente da mesma forma que seria, caso estivesse escrevendo um script.&lt;br /&gt;&lt;br /&gt;O Makefile é dividido em blocos de comandos. Cada bloco possui um nome, e esse   nome tona-se um argumento para o comando make.&lt;br /&gt;&lt;br /&gt;Veja um exemplo de bloco:&lt;pre&gt;clean:&lt;br /&gt;    rm -vf *.backup&lt;br /&gt;    rm -vf *~&lt;br /&gt;    rm -vf *.o&lt;/pre&gt; O nome do bloco é "clean".&lt;br /&gt;As instruções são para utilizar o comando rm com as opções -vf (verbose e force).&lt;br /&gt;Eles estão uma linha abaixo do nome e separado de pelo menos uma tabulação da primeira coluna da lina.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;O uso do make.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Tradicionalmente, o uso básico do make consiste em algumas poucas opções:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;      make&lt;br /&gt;Digitando apenas make no terminal, o programa procura pelo Makefile e executa o primeiro dos blocos de comandos existentes dentro desse arquivo.&lt;/li&gt;&lt;li&gt;      make -f ARQUIVO&lt;br /&gt;Esse exemplo é igual ao anterior, mas o arquivo Makefile está em um lugar       qualquer do disco, com um nome qualquer também... Não é um uso comum.&lt;/li&gt;&lt;li&gt;      make dothat&lt;br /&gt;Nesse exemplo, dothat representa o nome de uma das instâncias existentes    dentro do arquivo Makefile.&lt;br /&gt;No nosso simples exemplo, poderíamos escrever "make clean" e ele executaria as instruções daquele bloco naquele comando. Note que se "clean" for o primeiro bloco de comandos, digitar apenas "make" ou "make clean" produz o mesmo resutado.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;No próximo texto sobre o assunto, estudaremos um Makefile detalhadamente. Será o &lt;a href="http://sites.google.com/site/bemylifeeasy/Home/makefilelatex" target="_blank"&gt;Makefile que eu escrevi e disponibilizei para compilar o códigos em LaTeX&lt;/a&gt;. Não é um Makefile tão simples, nem tão complicado. Dará um interessante estudo de caso.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-4483010736335053122?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/4483010736335053122/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/06/uma-introducao-ao-comando-make.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/4483010736335053122?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/4483010736335053122?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/06/uma-introducao-ao-comando-make.html" title="Uma introdução ao comando make" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;CUEEQXs_fyp7ImA9WxJXEUs.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-3424183719781723155</id><published>2009-06-04T22:00:00.000-03:00</published><updated>2009-06-04T22:00:00.547-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-04T22:00:00.547-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="shellscript" /><category scheme="http://www.blogger.com/atom/ns#" term="dotfiles" /><title>Nova forma de disponibilizar scripts e arquivos de configuração</title><content type="html">Eu perdi a paciência com o &lt;a href="http://snipt.net/" target="_blank"&gt;Snipt&lt;/a&gt; mais rápido do que eu podia imaginar.&lt;br /&gt;&lt;br /&gt;Assim, na busca de um lugar que pudesse aceitar os meus pequenos arquivos de configuração e scripts, eu me optei pelo &lt;a href="http://sites.google.com/" target="_blank"&gt;Google Sites&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;O Google Sites está muito melhor que o falecido Google Pages e conta com um número muito bom de recursos, inclusive, com formas específicas para compartilhar artigos que o tornam muito próximos de um "Google Drive" (vide template "File Cabinet"). A disponibilidade de 100 MB é muito mais do que eu preciso para compartilhar arquivos de configuração...&lt;br /&gt;&lt;br /&gt;A escolha natural do Google Sites dá-se depois de pensar em como transferir os arquivos que eu compartilho via Google Pages (que com o fim deste, serão automaticamente transferidos para o Google Sites).&lt;br /&gt;&lt;br /&gt;Bom, os três arquivos compartilhados recentemente nesse blog, o &lt;a href="http://sites.google.com/site/bemylifeeasy/Home/vimrc" target="_blank"&gt;~/.vimrc&lt;/a&gt;, o &lt;a href="http://sites.google.com/site/bemylifeeasy/Home/makefilelatex" target="_blank"&gt;Makefile para LaTeX&lt;/a&gt; e o &lt;a href="http://sites.google.com/site/bemylifeeasy/Home/latexfilter" target="_blank"&gt;latexfilter&lt;/a&gt;, foram atualizados para a última versão e transferidos para o Google Sites. Note no fim de cada uma dessas páginas a existência do arquivo anexado.&lt;br /&gt;&lt;br /&gt;Todos os arquivos de configuração e scripts disponibilizados aqui estão disponíveis na barra lateral do blog. E serão atualizados silenciosamente quando tiverem apenas algumas pequenas correções...&lt;br /&gt;&lt;br /&gt;Não tenho certeza de que vou atualizar os links nos tópicos oficiais, o mais provável é que fique como está...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Nota:&lt;/b&gt; Para gerar essas páginas bonitinhas, abra o arquivo vim, selecione o esquema de cores de sua preferência e digite no modo de comando:&lt;br /&gt;&lt;pre&gt;   :so $VIMRUNTIME/syntax/2html.vim &lt;/pre&gt;No meu .vimrc, existe um mapeamento que correlaciona o \2html em modo normal com esse comando acima. O gvim exibe em "Editar" &amp;gt; "Esquema de cores" todos os esquemas de cores que possui instalado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-3424183719781723155?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/3424183719781723155/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/06/nova-forma-de-disponibilizar-scripts-e.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/3424183719781723155?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/3424183719781723155?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/06/nova-forma-de-disponibilizar-scripts-e.html" title="Nova forma de disponibilizar scripts e arquivos de configuração" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DkEEQXg4eSp7ImA9WxJXEEs.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-8249614029941769093</id><published>2009-06-03T18:30:00.001-03:00</published><updated>2009-06-03T18:30:00.631-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-03T18:30:00.631-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vim" /><category scheme="http://www.blogger.com/atom/ns#" term="vimrc" /><title>.vimrc atualizado</title><content type="html">O meu &lt;a href="http://snipt.net/jfmitre/arquivo-vimrc/" target="_blank"&gt;.vimrc&lt;/a&gt; foi atualizado.&lt;br /&gt;&lt;br /&gt;A nova versão possui tantas melhorias que nem seria possível listar tudo nesse blog.&lt;br /&gt;Destaques, além das importantes pequenas correções, vão para:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Correção ortográfica. Com correção simultânea a digitação por duas formas diferentes. Destaque para palavras repetidas uma após a outra (tipo oi oi), entre outras. Nota para modificação do acesso ao dicionário que contorna um bug que eu encontrei...&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Esquema visual aprimorado com função para identificar a resolução do monitor e ajustar a fonte no gvim (dependente de variável no .bashrc)&lt;/li&gt;&lt;li&gt;Ajustes para lidar com textos encriptados pelo GNU GPG.&lt;/li&gt;&lt;li&gt;Para LaTeX, temos a integração da bibliografia de um arquivo arquivo .bib com um dicionário para autocompletar.&lt;/li&gt;&lt;li&gt;e o ajuste da forma de realizar a verificação do log gerado pelo vim (sintaxe e integração de script).&lt;/li&gt;&lt;/ul&gt;Do mais, se alguém tiver uma dica de algo que seja muito melhor que &lt;a href="http://snipt.net/" target="_blank"&gt;Snipt&lt;/a&gt;, favor me informar. Ele não é ruim, mas me parece muito pesado...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-8249614029941769093?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/8249614029941769093/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/06/vimrc-atualizado.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/8249614029941769093?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/8249614029941769093?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/06/vimrc-atualizado.html" title=".vimrc atualizado" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry gd:etag="W/&quot;DkMMRH8_fSp7ImA9WxJQGEo.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-7750184404559936261</id><published>2009-06-01T13:40:00.003-03:00</published><updated>2009-06-01T13:41:25.145-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-01T13:41:25.145-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="gedit" /><category scheme="http://www.blogger.com/atom/ns#" term="vim" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="code" /><title>Snippets</title><content type="html">&lt;i&gt;Snippets&lt;/i&gt; são trechos reutilizáveis de código ou texto. Normalmente escreve-se uma palavra chave e um TAB e o trecho é inserido no conteúdo atual. Existe para mais de um editor de textos (vim, gedit, etc).&lt;br /&gt;&lt;br /&gt;O maior problema dessa idéia brilhante é que é necessário configurar seus snippets. Não seria legal se você pudesse usar o que outras pessoas já fizeram ?&lt;br /&gt;&lt;br /&gt;Pois, olhe os links externos da referência sobre &lt;a href="http://en.wikipedia.org/wiki/Code_snippets" target="_blank"&gt;snippet na wikipédia&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Infelizmente, a forma de escrever um snippet varia um pouquinho entre editores, mas nada que comprometa o reaproveitamento, pois escrever um snippet é algo muito simples.&lt;br /&gt;&lt;br /&gt;A premissa é que você gasta tempo agora (e não vai ser tão pouco assim, um dia, pelo menos) configurando o que será necessário várias vezes ao longo de sua produtividade (o que lhe fará ganhar muitos dias). O ganho de tempo é extraordinário.&lt;br /&gt;&lt;br /&gt;Agora, falta apenas uma extensão para o Firefox. Na verdade a extensão até existe, mas é experimental e para versão 2.0, ou seja, não existe de fato...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-7750184404559936261?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/7750184404559936261/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/06/snippets.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/7750184404559936261?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/7750184404559936261?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/06/snippets.html" title="Snippets" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CkYNRHc8cSp7ImA9WxJQGEo.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-8457912564444285680</id><published>2009-05-31T12:00:00.002-03:00</published><updated>2009-06-01T12:29:55.979-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-01T12:29:55.979-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="notas" /><title>O domínio desse blog</title><content type="html">&lt;b&gt;Problema resolvido... agora, outra mensagem dessa apenas em 2010.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Senhores, acabo de consultar o painel de controle da LocalWeb e eles ainda não contabilizaram o meu pagamento anual pelo domínio... &lt;br /&gt;&lt;br /&gt;Não é algo completamente inexplicável, porque eu fiz o pagamento no dia 27 último por boleto bancário. A questão é que o prazo vence no dia primeiro (amanhã). Assim, se por qualquer motivo não houver acesso correto a esse blog, já sabem... &lt;b&gt;o blog não morreu, está apenas descansando&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Problema resolvido... agora, outra mensagem dessa apenas em 2010.&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-8457912564444285680?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/8457912564444285680/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/05/o-dominio-desse-blog.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/8457912564444285680?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/8457912564444285680?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/05/o-dominio-desse-blog.html" title="O domínio desse blog" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;DU4BQnc5eCp7ImA9WxJQF08.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-3514004863303104690</id><published>2009-05-30T20:20:00.003-03:00</published><updated>2009-05-30T20:59:13.920-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-30T20:59:13.920-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="latex" /><category scheme="http://www.blogger.com/atom/ns#" term="vim" /><category scheme="http://www.blogger.com/atom/ns#" term="bash" /><category scheme="http://www.blogger.com/atom/ns#" term="shellscript" /><title>Filtrando o log do LaTeX</title><content type="html">Quem está acompanhando, sabe que estou envolvido em simplificar minha vida para usar o vim como plataforma de desenvolvimento (&lt;a href="http://jfmitre.com/2009/05/configurando-o-vim.html"&gt;parte 1&lt;/a&gt; e &lt;a href="http://jfmitre.com/2009/05/makefile-para-latex.html"&gt;parte 2&lt;/a&gt;). &lt;br /&gt;&lt;br /&gt;Mais uma etapa do que diz respeito ao uso do LaTeX com o vim foi vencida com o script &lt;b&gt;&lt;a href="http://snipt.net/jfmitre/latexfilter-filtro-do-log-do-latex" target="_blank"&gt;latexfilter&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Trata-se de um script MUITO simples que filtra os erros, alertas e informações de &lt;i&gt;overfull&lt;/i&gt; e &lt;i&gt;underfull&lt;/i&gt; box. É claro que o processo formata a saída de uma forma mais ou menos elegante.&lt;br /&gt;&lt;br /&gt;Veja um exemplo, usando nomes fictícios: &lt;pre&gt;./book.tex&lt;br /&gt;Package pdftex.def Warning: Option `bb' does not make sense,&lt;br /&gt;LaTeX Warning: Float too large for page by 120.685pt on input line 116.&lt;br /&gt;Underfull \hbox (badness 10000) in paragraph at lines 142--145&lt;br /&gt;./introducao.tex&lt;br /&gt;Underfull \hbox (badness 10000) in paragraph at lines 211--213&lt;br /&gt;Overfull \hbox (4.15698pt too wide) in paragraph at lines 214--227&lt;br /&gt;./modelagem.tex&lt;br /&gt;LaTeX Font Warning: Font shape `T1/aett/bx/n' undefined&lt;br /&gt;LaTeX Warning: Reference `fig:experimentob' on page 2 undefined on input line 1&lt;br /&gt;LaTeX Warning: Reference `fig:experimentob' on page 2 undefined on input line 1&lt;br /&gt;! LaTeX Error: File `figuras/experimental/esquema_semnomesDDD' not&lt;br /&gt;Underfull \hbox (badness 10000) in paragraph at lines 701--707&lt;br /&gt;Overfull \hbox (21.79932pt too wide) in paragraph at lines 772--772&lt;/pre&gt;Esse exemplo, mostra o nome do arquivo, seguido das mensagens associadas a aquele arquivo, o nome do arquivo seguinte e suas mensagens, etc e etc. Observe que em alguns casos, uma certa mensagem está acompanhada da informação da linha (&lt;i&gt;lines&lt;/i&gt;) no final da linha. Essa informação corresponde a linha dentro do arquivo cuja a relação de problema é feita.&lt;br /&gt;&lt;br /&gt;Fica tudo muito simples. Ficará mais simples ainda quando eu mandar o vim aplicar o filtro e abrir o arquivo, reconhecendo palavras chaves e identificando-as com cores, com uma única tecla de atalho...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-3514004863303104690?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/3514004863303104690/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/05/filtrando-o-log-do-latex.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/3514004863303104690?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/3514004863303104690?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/05/filtrando-o-log-do-latex.html" title="Filtrando o log do LaTeX" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DEQGQXs9fCp7ImA9WxJQF00.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-4027572010648691485</id><published>2009-05-30T14:15:00.002-03:00</published><updated>2009-05-30T14:58:40.564-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-30T14:58:40.564-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="latex" /><category scheme="http://www.blogger.com/atom/ns#" term="vim" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="makefile" /><category scheme="http://www.blogger.com/atom/ns#" term="make" /><title>Makefile para LaTeX</title><content type="html">Acabo de concluir um &lt;a href="http://snipt.net/jfmitre/makefile-para-latex" target="_blanck"&gt;Makefile para LaTeX&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Ele identifica a existência ou não de bibliografia, índices, glossários e nomenclaturas e qual é o nome do arquivo principal da estrutura do documento. Também agiliza as coisas para quem usa o prosper (para fazer apresentações com o LaTeX). Pois, nesse caso, apenas o PDF interessa. Note que essa questão existe unicamente para meu próprio conforto.&lt;br /&gt;&lt;br /&gt;Não se pode ter dois documentos principais (ou seja, com o &lt;i&gt;\begin{document}&lt;/i&gt;) com a extensão .tex no mesmo diretório (bom, até pode, mas o resultado é imprevisível). Se a extensão desse segundo for .tex.old não tem problema algum. E se o &lt;i&gt;\begin{document}&lt;/i&gt; estiver comentado, o Makefile o ingnora.&lt;br /&gt;&lt;br /&gt;Esse Makefile não trata arquivos .ps. Eu não gosto desses arquivos e por isso ele não é tratado, embora, em alguns casos, ele seja criado como um arquivo intermediário.&lt;br /&gt;&lt;br /&gt;Esse script suporta o comando &lt;i&gt;latex&lt;/i&gt; e o comando &lt;i&gt;pdflatex&lt;/i&gt;. O primeiro gera um .dvi, que nesse script deve ser convertido para .ps e depois para .pdf (existem outras formas, mas não estão implementadas). O segundo gera um pdf diretamente. &lt;br /&gt;&lt;br /&gt;Alguns do programas internos podem ser configurados (com o valor da variável TEX, que pode ser &lt;i&gt;latex&lt;/i&gt; ou &lt;i&gt;pdflatex&lt;/i&gt; ou o nome dos visualizadores de arquivo). Além de opções internas de cada comando. Nota-se que alguns comandos não podem ser modificados facilmente. Isso foi feito para ser assim mesmo. O caso mais "polêmico" é que a única forma de converter o .ps para o .pdf implementada é com o ps2pdf. &lt;br /&gt;&lt;br /&gt;Para ajuda, digite "&lt;b&gt;make help&lt;/b&gt;" no terminal dentro do lugar onde está o Makefile (com esse nome) ou "&lt;b&gt;make -f ArquivoMakefile help&lt;/b&gt;" caso tenha modificado o nome do arquivo.&lt;br /&gt;&lt;br /&gt;Esse arquivo Makefile faz parte do esforço para transformar &lt;a href="http://jfmitre.com/2009/05/configurando-o-vim.html"&gt;o vim em uma suíte completa para o LaTeX&lt;/a&gt;. Esforço esse quase concluído (eu ainda não divulguei outras melhorias já existentes), falta apenas melhorar a análise de "warnings" e "errors" do arquivo .log criado. A leitura direta do .log retarda muito a identificação dos erros. Portanto eu irei destacar as palavras chaves de alerta e erro para encontrar rapidamente a informação que interessa no log.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-4027572010648691485?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/4027572010648691485/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/05/makefile-para-latex.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/4027572010648691485?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/4027572010648691485?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/05/makefile-para-latex.html" title="Makefile para LaTeX" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;A0AASHk8fyp7ImA9WxJQFU0.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-2382761664820895751</id><published>2009-05-28T00:45:00.004-03:00</published><updated>2009-05-28T08:22:29.777-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-28T08:22:29.777-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="latex" /><category scheme="http://www.blogger.com/atom/ns#" term="vim" /><category scheme="http://www.blogger.com/atom/ns#" term="vimrc" /><title>Configurando o vim</title><content type="html">Recentemente eu resolvi configurar definitivamente o meu .vimrc.&lt;br /&gt;&lt;br /&gt;Isso é mais trabalhoso do que parece.&lt;br /&gt;&lt;br /&gt;Antes de mais nada, &lt;i&gt;qual é o meu perfil ou o que eu preciso do vim (ou de um editor)?&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Eu escrevo, e muito, em LaTeX, quase tudo que escrevo é em LaTeX ou texto puro.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Eu programo em FORTRAN. E nem me diga que isso é coisa do passado (&lt;i&gt;ainda que de fato seja&lt;/i&gt;).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Pretendo programar em C/C++. Ainda em que processo (lento) de estudo, um dia eu chego lá.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Eu uso muito shellscript (&lt;i&gt;quase sempre em uma função muito pessoal para ser publicada&lt;/i&gt;).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Irei programar em Python (&lt;i&gt;pena que não estou com tempo para estudá-lo&lt;/i&gt;).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Quero um corretor ortográfico (&lt;i&gt;português e inglês&lt;/i&gt;).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Necessário um recurso de auto-completar códigos (&lt;i&gt;especialmente para o LaTeX&lt;/i&gt;).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Gerenciamento de projetos, o que significa gerenciar tags e arquivos.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Programação para web básica, voltado ao mínimo necessário para escrever no blogger (&lt;i&gt;as vezes eu escrevo antes no meu computador&lt;/i&gt;)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; Definidos os meus objetivos, o como resolver isso é que era o problema. Contar a história na ordem cronológica dos eventos seria muito complicado. Então, vamos aos resultados.&lt;br /&gt;&lt;br /&gt;Status atual do meu vim em relação aos meus objetivos :&lt;br /&gt;&lt;br /&gt;Para LaTeX está quase completamente pronto (&lt;i&gt;aprende-se coisas novas todos os dias, o que ontem era pronto, hoje ainda tem coisas para fazer&lt;/i&gt;). O FORTRAN está em versão minimalista. Para  C/C++ eu ainda não fiz muito (&lt;i&gt;algumas medidas para o LaTeX aplicam-se aqui diretamente&lt;/i&gt;). Quanto ao shellscript, não pesquisei nada além do mínimo.&lt;br /&gt;Para o Python existem muitas dicas, ainda não tive tempo e/ou paciência para ler tudo, mas é impossível deixar de ler tópicos sobre o assunto.&lt;br /&gt;O corretor ortográfico básico está implementado, mas ainda não é a melhor solução. O recurso de autocompletar foi aplicado para o LaTeX, é uma mistura de dicionário com o snipMate e de dicionário propriamente dito. O gerenciamento de projetos foi estabelecido com uma unificação da taglist (&lt;i&gt;plugin que integra o ctags ao vim&lt;/i&gt;) e NERDTree (plugin que gerencia arquivos em disco). A programação para web eu já fiz alguma coisa, mas, no momento, não é nada que valha apena divulgar (além do meu .vimrc).&lt;br /&gt;&lt;br /&gt;Em uma versão mais completa, segue minha lista de plugins atual.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://aurelio.net/vim/txt.vim" target="_blank"&gt;txt.vim&lt;/a&gt; - Estilo para escrever arquivos de texto&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.vim.org/scripts/script.php?script_id=2299" target="_blank"&gt;fortran.vim&lt;/a&gt; - Melhorias para a sintaxe em FORTRAN&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.vim.org/scripts/script.php?script_id=273" target="_blank"&gt;taglist&lt;/a&gt; - Integra o ctags ao vim&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.vim.org/scripts/script.php?script_id=1658" target="_blank"&gt;NERDTree&lt;/a&gt; - Gerenciador de arquivos via vim&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.vim.org/scripts/script.php?script_id=2540" target="_blank"&gt;snipMate&lt;/a&gt; - Completa trechos pré-configurados (&lt;i&gt;não sei como consegui sobreviver até hoje sem usar um plugin do tipo, e olha que eu conhecia o similar dele para o gedit&lt;/i&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.vim.org/scripts/script.php?script_id=1018" target="_blank"&gt;PotWiki&lt;/a&gt; - Wiki para gerenciar tarefas e pequenos textos&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.vim.org/scripts/script.php?script_id=52" target="_blank"&gt;Calendar&lt;/a&gt; - Calendário integrado ao vim.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Como eu mostrei acima, meus objetivos ainda não foram completamente alcançados. O motivo pelo qual eu estou escrevendo agora, é para não deixar o tópico seguinte ser muito longo.&lt;br /&gt;&lt;br /&gt;Mas a configuração do LaTeX está bem desenvolvida. Então, vamos lá.&lt;br /&gt;&lt;br /&gt;Primeiro instale os plugins, especialmente o taglist, o NERDTree e o snipMate.&lt;br /&gt;&lt;br /&gt;Agora pegue meu arquivo "&lt;a href="http://snipt.net/jfmitre/snippet-para-snipmate"&gt;tex.snippets&lt;/a&gt;" e substitua o original (cuidado com os tabs, você não pode perder as tabulações no processo de cópia), ainda que você não tenha o &lt;b&gt;meu estilo&lt;/b&gt; de escrever em LaTeX, certamente você não escreve como o snipMate acha que você escreve. Aliás, os snippets existentes valem mais como exemplos do que como função prática, parece até que é intencional.&lt;br /&gt;&lt;br /&gt;Leia &lt;a href="http://vim.wikia.com/wiki/Use_Taglist_with_LaTeX_files" target="_blank"&gt;esse texto&lt;/a&gt;  sobre como integrar o LaTeX com o taglist.&lt;br /&gt;Basicamente consiste em criar (ou editar) um arquivo ~/.ctags e adicionar o conteúdo:&lt;pre&gt;  --langdef=tex&lt;br /&gt;--langmap=tex:.tex&lt;br /&gt;--regex-tex=/\\subsubsection[ \t]*\*?\{[ \t]*([^}]*)\}/- \1/s,subsubsection/&lt;br /&gt;--regex-tex=/\\subsection[ \t]*\*?\{[ \t]*([^}]*)\}/+\1/s,subsection/&lt;br /&gt;--regex-tex=/\\section[ \t]*\*?\{[ \t]*([^}]*)\}/\1/s,section/&lt;br /&gt;--regex-tex=/\\chapter[ \t]*\*?\{[ \t]*([^}]*)\}/\1/c,chapter/&lt;br /&gt;--regex-tex=/\\label[ \t]*\*?\{[ \t]*([^}]*)\}/\1/l,label/&lt;br /&gt;--regex-tex=/\\ref[ \t]*\*?\{[ \t]*([^}]*)\}/\1/r,ref/&lt;br /&gt;&lt;/pre&gt;Essas linhas são as definições de tags. As quatro primeiras são a estrutura de capítulos a "subsubseções". as duas últimas referem-se sobre &lt;i&gt;labels&lt;/i&gt; e referências.&lt;br /&gt;&lt;br /&gt;Agora instale meu &lt;a href="http://snipt.net/jfmitre/arquivo-vimrc/" target="_blank"&gt;.vimrc&lt;/a&gt;, ou melhor, instale o que te interessa, porque o meu vimrc não vai funcionar assim, a frio, na sua máquina. Quando a configuração estiver completa eu disponibilizarei o diretório .vim também (com todos os scripts adicionais).&lt;br /&gt;&lt;br /&gt;Ele está muito bem dividido e comentado, quem quiser apenas a parte LaTeX não terá qualquer dificuldade em fazê-lo, mas observe que o meu resultado está vinculado a configuração do taglist e do NERDTree, assim como configurações escolhidas para mapeamentos e abreviações. Portanto, ler a coisa de uma forma geral pode ser muito interessante.&lt;br /&gt;&lt;br /&gt;Aqui eu quero destacar uma certa solução. A de complementação de palavras.&lt;br /&gt;Será visto no .vimrc:&lt;pre&gt;  au BufNewFile,BufRead *.tex set dictionary=~/.vim/dict/latex.dic&lt;/pre&gt;O dicionário não está acumulativo, ou seja, que abre o arquivo tex não terá acesso a dicionários gerais, assim foi feito intencionalmente para&lt;br /&gt;evitar sobreposição desenecessária de dicionários. Caso também queira outro dicionário (de palavras, por exemplo) adicione&lt;pre&gt;  au BufNewFile,BufRead *.tex set dictionary+=/CAMINHO/SEU/DICIONARIO.dic&lt;/pre&gt;após a linha mostrada anteriormente, isso fará com que o dicionário latex.dic seja o primeiro listado e em seguida o seu dicionário.&lt;br /&gt;&lt;br /&gt;Nesse dicionário latex.dic está o pulo do gato. Ali eu escrevi as palavras chaves do snippets (portanto, eu não preciso publicar isso). Porque eu tenho muitos snippets e no futuro terei ainda mais (&lt;i&gt;com pedaços de esquações, por exemplo&lt;/i&gt;) e eu não memorizarei tudo assim, como se eu fosse um HD.&lt;br /&gt;&lt;br /&gt;A configuração do dicionário está relacionada as teclas &amp;lt;F7&amp;gt;, &amp;lt;F8&amp;gt; e &amp;lt;C-D&amp;gt;&lt;br /&gt;&lt;br /&gt;A outra linha de configuração eu devo agradecer ao Kile. Eu peguei os dicionários do Kile e coloquei usei...&lt;br /&gt;&lt;br /&gt;Como havia alguns probleminhas, eu editei o conteúdo dos dicionários para que eles apareçam corretamente com as teclas de mapeamento.&lt;br /&gt;&lt;br /&gt;Assim, todo espaço foi eliminado, o traço e a vírgula, viraram ponto. No primeiro momento parece que é um erro grave, mas o espaço e o traço não são comandos/opções LaTeX. A vírgula, por outro lado, é um opção LaTeX. Mas fica muito fácil saber onde tem vírgula e onde não tem, porque, vírgula surge apenas em dois lugares, nas opções e em coordenadas. As coordenadas são fáceis de identificar, porque estão entre (X,Y), por exemplo. As opções não. Porém, a questão é que não há a menor chance de uma pessoa se confundir aqui porque ou isso aparece em opções que você sabe usar (logo não há problemas) ou aparece em opções que você não sabe usar, logo, terá de consultar o manual e não terá qualquer problemas então. O objetivo é oferecer dicas, não ensinar LaTeX.&lt;pre&gt;  au BufNewFile,BufRead *.tex set dictionary+=~/.vim/dict/tex/*.cwl&lt;br /&gt;  \ iskeyword+=\\,.,{,},[,],*,=,/,(,),&amp;gt;,&amp;lt;&lt;/pre&gt;O diretório "tex" do caminho acima, &lt;a href="http://sites.google.com/site/bemylifeeasy/Home/tex.zip?attredirects=0"&gt;você pode pegar aqui&lt;/a&gt;. Dentro dele verá um diretório chamado "notinuse", são onde estão os comandos de pacotes que eu não uso (ou não estou interessado em ajuda). Para se ter uma idéia, no Kile padrão, apenas o latex-document.cwl e o tex.cwl são usados (e eu estou usando muito mais que isso). Os demais são desabilitados (&lt;i&gt;recomendaria habilitar, no mínimo, o latex-mathsymbols.cwl, mas esse é um pensamento matemático&lt;/i&gt;). Dá para notar que quanto mais verbetes no dicionário, mais lento fica. Então, o ideal é criar o templates para o snipMate assim que perceber que algum comando está sendo mais usado do que imaginado inicialmente e com o tempo descobrir quais os pacotes você não quer habilitado nesse recurso.&lt;br /&gt;&lt;br /&gt;Ainda não é a perfeição, mas agora o que o LaTeX está funcionando a pleno vapor, eu preciso trabalhar... então, eu devo ser mais lento nas implementações das minhas configurações para o vim.&lt;br /&gt;&lt;br /&gt;Referências:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://vivaotux.blogspot.com/2009/01/nosso-livro-sobre-o-vim.html" target="_blank"&gt;vimbook&lt;/a&gt; - tirei muitas dicas dali, mais do que isso, aprendi coisas para adaptar e escrever outras. Aliás, essa foi a força motriz para a iniciativa dessa configuração.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://aurelio.net/" target="_blank"&gt;aurelio.net&lt;/a&gt; - referência clássica, mesmo que eu não tivesse visitado a página do camarada (e eu visitei), eu teria absorvido através de terceiros.&lt;/li&gt;&lt;li&gt;&lt;a href="http://vivaotux.blogspot.com/" target="_blank"&gt;vivaotux&lt;/a&gt; - muitas dicas sobre vim (plugins e outras coisas).&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.vim.org/" target="_blank"&gt;Vim&lt;/a&gt; (Página oficial) - a documentação existente nesse site é fantástica.&lt;/li&gt;&lt;/ul&gt;Alguns arquivos vimrc:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://aurelio.net/vim/vimrc-ivan.txt"&gt;http://aurelio.net/vim/vimrc-ivan.txt&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://aurelio.net/doc/vim/vimrc-voyeg3r.txt"&gt;http://aurelio.net/doc/vim/vimrc-voyeg3r.txt&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://dotfiles.org/%7Evoyeg3r/.vimrc"&gt;http://dotfiles.org/~voyeg3r/.vimrc&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://aurelio.net/doc/dotfiles/vimrc.txt"&gt;http://aurelio.net/doc/dotfiles/vimrc.txt&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.stripey.com/vim/vimrc.html"&gt;http://www.stripey.com/vim/vimrc.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.8t8.us/configs/vimrc.txt"&gt;http://www.8t8.us/configs/vimrc.txt&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;A base inicial do meu trabalho foi o vimrc-ivan.txt completado pelos do voyeg3r (tanto o antigo quanto o novo), ou seja, eu juntei os três, tirei tudo que era duplicado ou que eu não queria e fiquei com o meu básico. Dos demais eu usei uma ou outra coisa apenas (o do aurélio é, como eu disse, pego pela onda das referências).&lt;br /&gt;&lt;br /&gt;Por falar nisso, alguém conhece os scripts .vim que estão referênciados no arquivo vimrc do Ivan ? Porque parecem ser scripts fantásticos, mas não achei nenhum deles na net. Eu não sei se nunca foi publicado, por serem pessoais demais, ou se saiu do ar depois que a url que referência a página do Ivan deixou de ser correta... Se alguém tiver essa dica, comente, por favor...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-2382761664820895751?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/2382761664820895751/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/05/configurando-o-vim.html#comment-form" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/2382761664820895751?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/2382761664820895751?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/05/configurando-o-vim.html" title="Configurando o vim" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">7</thr:total></entry><entry gd:etag="W/&quot;CkAMRHo5eSp7ImA9WxJRFU4.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-6570702204845711377</id><published>2009-05-17T00:25:00.001-03:00</published><updated>2009-05-17T00:26:25.421-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-17T00:26:25.421-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="livro" /><category scheme="http://www.blogger.com/atom/ns#" term="gnu fdl" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="introdução ao gnu/linux" /><category scheme="http://www.blogger.com/atom/ns#" term="opensource" /><title>Como colaborar com o livro "Introdução ao GNU/Linux"</title><content type="html">&lt;a href="http://jfmitre.com/2009/05/introducao-ao-gnulinux.html"&gt;Para ajudar no desenvolvimento do livro&lt;/a&gt;, una-se a lista de discussão: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/introducaoaognulinux" target="_blank"&gt;http://groups.google.com/group/introducaoaognulinux&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Com isso você será adicionado como usuário do &lt;a href="http://code.google.com/p/introducaoaognulinux/" target="_blank"&gt;projeto do livro&lt;/a&gt; o que permitirá que faça as alterações via &lt;a href="http://code.google.com/p/vimbook/wiki/ManualSubversion" target="_blank"&gt;svn&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Você pode fazer as modificações e enviar para um dos autores (preferencialmente ao primeiro autor, que sou eu).&lt;br /&gt;&lt;br /&gt;Uma forma simplesmente de colaborar é tendo idéias novas e boas para acrescentar. Deixe as idéias nos comentário na &lt;a href="http://code.google.com/p/introducaoaognulinux/wiki/ToDo" target="_blank"&gt;lista de coisas para fazer&lt;/a&gt; no wiki do projeto ou via e-mail para os autores.&lt;br /&gt;&lt;br /&gt;Você também contará com o meu muito obrigado ao divulgar o material.&lt;br /&gt;&lt;br /&gt;E por falar na &lt;a href="http://code.google.com/p/introducaoaognulinux/wiki/ToDo" target="_blank"&gt;lista de coisas para fazer&lt;/a&gt;, não custa lembrar que o livro é aberto, e que está em edição permanente (daqui por diante, em uma velocidade menor do que até aqui). Arquivos PDFs devem ser liberados com freqüência irregular, mas de tempos em tempos teremos uma nova versão estável do documento. &lt;br /&gt;&lt;br /&gt;Quando digo estável, quero dizer que é uma versão acabada, onde uma certa idéia foi implementada como um todo no documento. Por exemplo, &lt;b&gt;a versão 1.1 foi liberada hoje&lt;/b&gt;. Ela possui melhorias para quem utilizará o documento apenas em formato digital (inclusão do links clicáveis no documento) e algumas correções no português (na verdade, inglês. É "drivers" e não "drives"). Essa versão também inclui pequenas adições ao FAQ.&lt;br /&gt;&lt;br /&gt;A primeira versão teve quase 1000 downloads. Espero que a versão 1.1 tenha tantos downloads quanto a 1.0 (afinal, "drives" é de matar).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-6570702204845711377?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/6570702204845711377/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/05/como-colaborar-com-o-livro-introducao.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/6570702204845711377?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/6570702204845711377?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/05/como-colaborar-com-o-livro-introducao.html" title="Como colaborar com o livro &quot;Introdução ao GNU/Linux&quot;" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;DUYGRnk-fyp7ImA9WxJRFU8.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-8200380531891089665</id><published>2009-05-11T19:30:00.013-03:00</published><updated>2009-05-16T23:25:27.757-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-16T23:25:27.757-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="livro" /><category scheme="http://www.blogger.com/atom/ns#" term="gnu fdl" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="introdução ao gnu/linux" /><category scheme="http://www.blogger.com/atom/ns#" term=";-)" /><category scheme="http://www.blogger.com/atom/ns#" term="opensource" /><title>Introdução ao GNU/Linux</title><content type="html">Em abril desse ano, eu apresentei o curso de extensão `Introdução ao GNU/Linux'' no &lt;a href="http://www.peq.coppe.ufrj.br/" target="_blank"&gt;Programa de Engenharia Química (COPPE/UFRJ)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Com o objetivo de prover uma referência por escrito e atualizada sobre o GNU/Linux, eu comecei a escrever um documento que ganhei volume e corpo de um livro. Livro esse que eu tenho o prazer de anunciar como um projeto livre.&lt;br /&gt;&lt;br /&gt;O livro &lt;a href="http://code.google.com/p/introducaoaognulinux/" target="_blank"&gt;Introdução ao GNU/Linux&lt;/a&gt; está disponível para download em &lt;a href="http://code.google.com/p/introducaoaognulinux/downloads/list"&gt;PDF&lt;/a&gt;, e &lt;a href="http://code.google.com/p/introducaoaognulinux/source/checkout" target="_blank"&gt;código fonte&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ele foi escrito para um público que nunca teve contato com o sistema operacional GNU/Linux, mas não para quem nunca teve contato com computadores.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Sobre o Livro "Introdução ao GNU/Linux"&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O GNU/Linux é um sistema operacional, que por definição é um programa responsável por conectar o usuário ao hardware, capaz de unificar o núcleo criado por Linus Torvalds em 1991 e diversas ferramentas criadas por terceiros.&lt;br /&gt;&lt;br /&gt;Esse livro introduz ao leitor detalhes sobre (i) a arquitetura do GNU/Linux, partindo de um breve histórico até sua estrutura atual, (ii) os principais softwares para uso em computadores pessoais, como gerenciadores de arquivos, editores de texto, navegadores de internet, entre outros, (iii) os principais utilitários para uso de terminal, como man, ls, rm, cat, ssh, scp, entre outros e (iv) completando com um guia de sobrevivência na administração de um sistema GNU/Linux, apresentando os utilitários de configuração de rede, impressora, instalação de programas, além de outros pontos associados a utilização do GNU/Linux em computadores pessoais.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Sobre a licença do livro&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O uso deste documento é regido pela licença GNU Free Documentation License, Versão 1.3 ou qualquer outra publicada posteriormente, da Free Software Foundation. Uma cópia dessa licença pode ser lida no anexo D do livro ou na página &lt;a href="http://www.gnu.org/copyleft/fdl.html" target="_blank"&gt;http://www.gnu.org/copyleft/fdl.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Infelizmente o Google Codes não permite que seja selecionado a licença GNU Free Documentation License, Version 1.3 ou superior como licença padrão do projeto, por isso, na barra ao lateral do site do projeto está escrito "GNU General Public License v3" e isso não é verdade. Por serem licenças complementares e compatíveis, eu não me preocupei. Caso alguém saiba de algo que eu não saiba, favor, informar.&lt;br /&gt;&lt;br /&gt;A GNU Free Documentation License permite que você copie, modifique e/ou redistribua o documento inteiro ou parte do documento sobre os seus termos e respeitando as seções invariantes (no caso desse documento, são apenas as licenças em si).&lt;br /&gt;&lt;br /&gt;A única exigência da GNU FDL é que os autores originais devem ser referenciados (não abre-se mão do direito autoral, algo que eu não poderia fazer nunca no Brasil) e de que a parte do conteúdo utilizado em outros trabalhos proveniente desse projeto (uma figura ou capítulo, por exemplo) também deve ser distribuído pela GNU FDL.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Como colaborar com projeto ?&lt;/b&gt;&lt;br /&gt;&lt;p&gt;&lt;a name="Como_se_juntar_ao_projeto?"&gt;Para ajudar no desenvolvimento do livro, una-se a lista de discussão: &lt;/a&gt;&lt;a href="http://groups.google.com/group/introducaoaognulinux" rel="nofollow"&gt;http://groups.google.com/group/introducaoaognulinux&lt;/a&gt; &lt;/p&gt;Com isso você será adicionado como usuário do projeto do livro o que permitirá que faça as alterações.&lt;br /&gt;&lt;br /&gt;Você pode fazer as modificações e enviar para um dos autores (preferencialmente ao primeiro autor, que sou eu).&lt;br /&gt;&lt;br /&gt;Outra forma simples de colaborar é divulgando o material.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;O que ainda resta a ser feito ?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Há uma lista de &lt;a href="http://code.google.com/p/introducaoaognulinux/wiki/ToDo" target="_blank"&gt;coisas a fazer&lt;/a&gt; e uma lista dos &lt;a href="http://code.google.com/p/introducaoaognulinux/wiki/ErrosEsperados" target="_blank"&gt;erros esperados&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Também tenho o objetivo de manter o livro atualizado. Idéia simples, fazer não é tão simples.&lt;br /&gt;&lt;br /&gt;Novas versão em PDF devem ser lançadas periodicamente, conforme a atualização do documento.&lt;br /&gt;&lt;br /&gt;Novas idéias são bem vindas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-8200380531891089665?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/8200380531891089665/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/05/introducao-ao-gnulinux.html#comment-form" title="11 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/8200380531891089665?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/8200380531891089665?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/05/introducao-ao-gnulinux.html" title="Introdução ao GNU/Linux" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">11</thr:total></entry><entry gd:etag="W/&quot;A08FRXk6eCp7ImA9WxVaFk8.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-5509805026024681002</id><published>2009-04-09T22:24:00.004-03:00</published><updated>2009-04-13T10:36:54.710-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-13T10:36:54.710-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="notas" /><title>Concurso Científico Tecnoclasta 2008/2009</title><content type="html">Apesar do pouco tempo, ainda há tempo. O prazo para o &lt;a href="http://www.tecnoclasta.com/2009/03/05/concurso-cientifico-tecnoclasta-20082009/" target="_blanck"&gt;Concurso Científico Tecnoclasta 2008/2009&lt;/a&gt; vai até amanhã, 10 de abril. &lt;br /&gt;&lt;br /&gt;Já fiz a minha inscrição (com um tópico do &lt;a href="http://notasemcfd.blogspot.com/" target="_blanck"&gt;Notas em CFD&lt;/a&gt;) - veja os inscritos nos &lt;a href="http://www.tecnoclasta.com/2009/03/05/concurso-cientifico-tecnoclasta-20082009/" target="_blanck"&gt;comentários&lt;/a&gt;. Eu quase perdi o prazo...  Talvez, considerando que o prazo termina na sexta-feira santa, ele seja estendido (&lt;del&gt;mas não conte com isso&lt;/del&gt;). &lt;b&gt;O prazo foi prorrogado até o dia 17 de abril.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Esse ano o concurso incluí duas categorias, uma das quais permite que quem não tenha blogs também participe. Veja as regras no tópico do &lt;a href="http://www.tecnoclasta.com/2009/03/05/concurso-cientifico-tecnoclasta-20082009/" target="_blanck"&gt;Tecnoclasta&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Vale lembrar que mais do que um concurso com prêmios, essa iniciativa é uma forma divulgar informação científica de qualidade pela net. &lt;br /&gt;&lt;br /&gt;Lamento de ter esquecido de divulgar o concurso antes e espero mesmo que tenha uma pequena prorrogação em função do feriado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-5509805026024681002?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/5509805026024681002/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/04/concurso-cientifico-tecnoclasta.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/5509805026024681002?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/5509805026024681002?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/04/concurso-cientifico-tecnoclasta.html" title="Concurso Científico Tecnoclasta 2008/2009" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;CUQFQHw4fip7ImA9WxVVEUU.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-6922561867067801423</id><published>2009-03-04T13:07:00.006-03:00</published><updated>2009-03-04T13:15:11.236-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-04T13:15:11.236-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vim" /><category scheme="http://www.blogger.com/atom/ns#" term="opensuse" /><category scheme="http://www.blogger.com/atom/ns#" term="dica" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="calculadora" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>Micro dica vim, python e calculadora no OpenSUSE</title><content type="html">O Sérgio &lt;a href="http://vivaotux.blogspot.com/2009/03/calculadora-cientifica-com-o-vim.html" target="_blanck"&gt;escreveu como usar uma calculadora científica no vim&lt;/a&gt;. Quem tentou seguir da dica dele no openSUSE recebeu um aviso informando que havia um problema na linha de comando.&lt;br /&gt;&lt;br /&gt;E há um problema sim, mas com o vim, não com o comando. O vim padrão do openSUSE não tem suporte a python. Para resolver esse problema instale o pacote &lt;b&gt;vim-enhanced&lt;/b&gt; e os seus problemas serão resolvidos. Simples assim.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-6922561867067801423?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/6922561867067801423/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/03/micro-dica-vim-python-e-calculadora-no.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/6922561867067801423?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/6922561867067801423?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/03/micro-dica-vim-python-e-calculadora-no.html" title="Micro dica vim, python e calculadora no OpenSUSE" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></entry><entry gd:etag="W/&quot;DUcDQ3w5cSp7ImA9WxVWFEQ.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-1490385709452349988</id><published>2009-02-14T20:30:00.003-02:00</published><updated>2009-02-24T14:37:52.229-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-24T14:37:52.229-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="opensuse" /><category scheme="http://www.blogger.com/atom/ns#" term="zenity" /><category scheme="http://www.blogger.com/atom/ns#" term="shellscript" /><title>Zenity e seus problemas no OpenSUSE 11.1</title><content type="html">Quando veio o OpenSUSE 11.1, veio um inconveniente. Todas as vezes que eu executava algum aplicativo com o zenity, ele abria em background.&lt;br /&gt;&lt;br /&gt;Eu lidei com esse importuno por quase três meses e hoje eu finalmente fui a caça de uma solução. A primeira coisa que fiz foi instalar uma versão mais nova do programa via yast de repositórios da comunidade. Não funcionou. Então, eu compilei na mão o programa. Também não funcionou.&lt;br /&gt;&lt;br /&gt;Aí eu fiz um downgrade na versão, instalando um zenity mais antigo. Aí funcionou.&lt;br /&gt;Quem, como eu, estiver enfrentando esse problema pode utilizar esse &lt;a href="http://software.opensuse.org/ymp/GNOME:UNSTABLE/openSUSE_11.1/zenity.ymp"&gt;link tipo "1-click install" aqui&lt;/a&gt;. Esse arquivo foi obtido com uma busca por zenity &lt;a href="http://software.opensuse.org/search" target="_blank"&gt;nesse outro link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;O pacote que estou utilizando atualmente, sem o problema, é a versão 2.20. A versão que acompanha o OpenSUSE é a 2.24.0 a versão mais atual (enquanto escrevo esse texto) é a 2.24.1.&lt;br /&gt;&lt;br /&gt;E antes que alguém pergunte: &lt;i&gt;Porque está utilizando o zenity ? Porque não utiliza python ?&lt;/i&gt; A resposta é bem simples. Arquivos legados. São pequenos e valiosos scripts que eu já escrevi a muito tempo e que utilizam o zenity. Talvez algum dia eu os reescreva em python, mas certamente esse dia não será hoje ou amanhã.&lt;br /&gt;&lt;br /&gt;Se não sabe o que é o zenity e está curioso para saber, &lt;a href="http://www.guiadohardware.net/artigos/zenity/" target="_blank"&gt;leia esse excelente texto (traduzido) aqui&lt;/a&gt;. Veja também a página de &lt;a href="http://ftp.acc.umu.se/pub/GNOME/sources/zenity/" target="_blank"&gt;downloads do zenity&lt;/a&gt; e seu &lt;a href="http://library.gnome.org/users/zenity/" target="_blank"&gt;manual oficial&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;[update]&lt;/b&gt;&lt;br /&gt;Ao reler o título do tópico eu percebi o quanto eu fui injusto com o OpenSUSE 11.1. O problema não é do OpenSUSE é do zenity.&lt;br /&gt;Sei disso porque lido com mais de uma distro e o problema é observado em todas que possuem versão mais atual do zenity (a título de exemplo, posso citar o Arch Linux atualizado em 18 fevereiro de &lt;del&gt;2008&lt;/del&gt; 2009)&lt;br /&gt;&lt;b&gt;[/update]&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-1490385709452349988?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/1490385709452349988/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/02/zenity-e-seus-problemas-no-opensuse-111.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/1490385709452349988?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/1490385709452349988?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/02/zenity-e-seus-problemas-no-opensuse-111.html" title="Zenity e seus problemas no OpenSUSE 11.1" /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;C0UAQ3kyfip7ImA9WxVRGEk.&quot;"><id>tag:blogger.com,1999:blog-17631874.post-6664826050493010825</id><published>2009-01-24T16:00:00.003-02:00</published><updated>2009-01-24T21:54:02.796-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-24T21:54:02.796-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="evernote" /><category scheme="http://www.blogger.com/atom/ns#" term="estilo de vida" /><category scheme="http://www.blogger.com/atom/ns#" term="dica" /><category scheme="http://www.blogger.com/atom/ns#" term="software:online" /><category scheme="http://www.blogger.com/atom/ns#" term="internet" /><category scheme="http://www.blogger.com/atom/ns#" term="review" /><category scheme="http://www.blogger.com/atom/ns#" term="gtd" /><title>E o meu substituto do Google Notebook é ...</title><content type="html">Eu já disse &lt;a href="http://jfmitre.com/2009/01/o-fim-do-google-notebook.html"&gt;aqui&lt;/a&gt; (&lt;i&gt;e vocês devem saber &lt;a href="http://www.google.com.br/search?q=google+notebook+cancelar"&gt;por inúmeras fontes também&lt;/a&gt;&lt;/i&gt;) que o Google Notebook foi cancelado.&lt;br /&gt;&lt;br /&gt;Dessa forma começou uma migração em massa dos usuários do Google Notebook para outros serviços. A um ponto interessante nessa frase. Como você usa o Google Notebook ?. O Google Notebook não é apenas um aplicativo para fazer &lt;i&gt;clip&lt;/i&gt; de páginas da internet. Ele tem múltiplas faces (&lt;i&gt;notas pessoais, extensões para firefox, integração com outros serviços, compartilhamento de notas e, claro, suporte a "web clipping", que vai de uma página ou fração dela a uma simples url&lt;/i&gt;) e várias formas de organização (&lt;i&gt;divide "notebooks", com suporte a seções e labels&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;Quando olhamos o problema nesse aspecto, parece até que o Google Notebook é único. Pois ele integra vários elementos em um único serviço. Dos possíveis candidatos eu selecionei três, por serem os únicos que encontrei que uniu duas características, que para meus interesses, são fundamentais. O suporte a criação de notas pelo usuários e a &lt;i&gt;web clipping&lt;/i&gt; e a possibilidade de importar o conteúdo do Google Notebook para o seu sistema (&lt;i&gt;isso porque eu não vou importar 89 notas manualmente entre sistemas&lt;/i&gt;)&lt;br /&gt;&lt;br /&gt;Logo após o anúncio do Google, três serviços candidatos a substituto fizeram o anúncio de suporte a importação de notas do Google Notebook: o &lt;a href="http://www.ubernote.com/" target="_blank"&gt;überNote&lt;/a&gt;, o &lt;a href="http://www.evernote.com/" target="_blank"&gt;Evernote&lt;/a&gt; e &lt;a href="http://notebook.zoho.com/" target="_blank"&gt;Zoho Notebook&lt;/a&gt;. E eu utilizei o serviço dos três para ver "qual era" a de cada um.&lt;br /&gt;&lt;br /&gt;O überNote é sistema prático e simples. Ele não tem suporte a mais de um notebook, mas tem suporte a tags. A ferramenta de migração do Google Notebook para o überNote funciona bem. Mas, há vários problemas no sistema. Por exemplo, a formatação do CSS não é tão ajustada a tela quanto eu acredito que deveria ser. Eu até &lt;a href="http://userstyles.org/styles/13902" target="_blank"&gt;criei um estilo para o Stylish&lt;/a&gt; básico para resolver essa questão. Mas também tem uma certa lentidão do serviço (&lt;i&gt;e instabilidade também&lt;/i&gt;) atribuída a aumento expressivo do número de usuários recentemente (&lt;i&gt;algo que eu até poderia relevar por hora&lt;/i&gt;). De qualquer forma, o problema maior foi o fato de que o sistema não funciona de forma tão limpa quanto me pareceu a primeira vez. Está cheio de pequenos detalhes desagradáveis. Ele possuí bookmarklet (funcional) e uma extensão para o firefox (que &lt;b&gt;eu&lt;/b&gt; não gostei). Não permite salvar o item novo de forma inteligente e organizada como no Google Notebook ao usar a extensão dele.&lt;br /&gt;&lt;br /&gt;Existe alguns detalhes que me fizeram pensar que ele seria a minha escolha (o fato de ser simples, por exemplo). Cheguei mesmo a acreditar nisso. Mas ao ver os problemas e ver que a solução não viria rápido, mas, principalmente, ao ver que já havia outros que já tinha a solução do problema pronta, eu deixei ele de lado. Destaque positivo para o gerenciamento de tarefas dentro do sistema. O destaque negativo ficou para o design, que eu achei feio, e para os pequenos bugs do dia-a-dia.&lt;br /&gt;&lt;br /&gt;O Zoho Notebook é muito bonito. É, provavelmente, o mais belo de todos. Possuí suporte a diversos notebooks e a várias páginas dentro de cada notebook, o que funciona como uma divisão de seção. Apesar da beleza, o Zoho Notebook tem baixa usabilidade. A parte esquerda da tela dá grande destaque aos itens que eu posso adicionar. Isso é muito chato, especialmente porque poderia ser substituído por coisas mais úteis, ou, pelo menos, dar mais destaque ao notebooks existentes. Nem cheguei a testar direto a extensão dele, mas me pareceu muito similar a do Google Notebook. Se eu tivesse que escolher entre ele e o überNote, apesar de todos os pequenos bugs, eu ficaria com o überNote. Ah! Não procurei direito, mas a primeira vista ele não tem suporte a tags.&lt;br /&gt;&lt;br /&gt;Restou o Evernote, o último a criar a fermenta de migração do Google Notebook. E talvez por isso seja o que faz o melhor trabalho com essa migração. Ele possuí suporte a múltiplos notebooks (&lt;i&gt;um notebook que você pode marcar como padrão, pode, portanto, funcionar como uma inbox do sistema&lt;/i&gt;), suporte a tags e &lt;b&gt;subtags&lt;/b&gt; (&lt;i&gt;eu já criei 4 níveis de tags apenas para testar, não sei se existe limite, mas, se esse existe, é maior que 4&lt;/i&gt;).  E é justamente a questão da subtag que permite que você crie duas formas de organização. Uma por ações, outra para lugar, outra para seção, outra para referência temática ou o que mais você desejar/necessitar (&lt;i&gt;o melhor do GTD, literalmente. Eu criei uma tag para cada notebook e utilizei as subtags para dividir as seções. Também criei tags de ação - to do, maybe, etc - e tags de lugar - web, home, work, etc&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;E quando eu digo que a importação foi a que melhor se adaptou a saída do Google Notebook, está no fato de que cada notebook importado é criado com um tag Google e com subtags que são as seções e labels daquele notebook importado. Verá que se fizer uma ação conjunta de importar-organizar, tudo ficar muito limpo e fácil de gerenciar no novo sistema (&lt;i&gt;se não fizer isso, pode virar um caos&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;O Evernote também tem uma extensão bem fraquinha para o firefox e um bookmarklet. Na verdade eu acho que fizeram o bookmarklet e converteram a mesma como uma extensão. Elas permitem salvar o item em um notebook "a escolha" e colocar tags durante o salvamento da nota.&lt;br /&gt;&lt;br /&gt;O Evernote têm (&lt;i&gt;como os outros&lt;/i&gt;) suporte a vários tipos de mídia e assim como o überNote tem uma forma de criar lista de tarefas com caixinha de seleção de itens.&lt;br /&gt;&lt;br /&gt;E tem vários recursos extras (&lt;i&gt;que eu não usei ainda&lt;/i&gt;) como, entre outros, o reconhecimento óptico de caracteres e o suporte a notas de voz. E outros que eu já testei, como a possibilidade de salvar uma buscar realizada no sistema. Também tem um software de desktop para Mac e Windows (&lt;i&gt;que funciona razoavelmente bem - mas não perfeito - no wine&lt;/i&gt;). Eu acreditei que consideraria isso dispensável, mas até que sou obrigado a reconhecer que ter uma cópia offline das minhas notas não é uma idéia tão ruim assim.&lt;br /&gt;&lt;br /&gt;Seu ponto fraco é que ele tem duas versões, uma premium, paga, e uma free. A free permite um tráfego de 40 MB por mês. Não se assuste. Isso é muito se você quiser fazer apenas o que fazia no Google Notebook. Não conheço ninguém que faça 20 mil notas por mês ou que colete 270 páginas da web (&lt;i&gt;números aproximados, claro&lt;/i&gt;). Contudo, para um sistema que promete ser o catálogo de &lt;b&gt;tudo&lt;/b&gt; (suas fotos, inclusive), 40 MB não é legal.&lt;br /&gt;&lt;br /&gt;De qualquer forma, você não precisa se preocupar com isso. Afinal, você era usuário do Google Notebook que não suportava nem upload de fotos, quanto mais notas de voz. De qualquer forma a tendência das pessoas é se empolgar com as novas coisas e utilizar tudo de tudo. Assim, esse índice pode ser algo que você deve ficar de olho. Eu por exemplo, decidi que a cada finalzinho de mês do "ciclo" de 40 MB eu vou aproveitar  para fazer o upload de minhas fotos principais para o Evernote - aquelas que você realmente quer guardar. Também vou fazer o upload de documentos (&lt;i&gt;o sistema suporta anexos&lt;/i&gt;) que eu considere tão importantes que eu não posso perder. Um verdadeiro drive na web.&lt;br /&gt;&lt;br /&gt;Como já disse, de forma não explícita, eu escolhi o Evernote. Apesar de ter gostado muito do überNote, os pequenos bugs foram fatais. Além disso, o Evernote está, hoje, mais estável (&lt;i&gt;porque já era grande, assim como o Zoho&lt;/i&gt;). Têm mais recursos de organização das notas e permite um melhor aproveitamento da interface.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17631874-6664826050493010825?l=jfmitre.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jfmitre.com/feeds/6664826050493010825/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://jfmitre.com/2009/01/e-o-meu-substituto-do-google-notebook.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/6664826050493010825?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17631874/posts/default/6664826050493010825?v=2" /><link rel="alternate" type="text/html" href="http://jfmitre.com/2009/01/e-o-meu-substituto-do-google-notebook.html" title="E o meu substituto do Google Notebook é ..." /><author><name>J. F. Mitre</name><uri>http://www.blogger.com/profile/01576927608384839758</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="12568611535461617563" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry></feed>
