<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bit a Bit &#187; tutorial</title>
	<atom:link href="http://www.bitabit.eng.br/tags/tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bitabit.eng.br</link>
	<description>O Blog da Engenharia de Computação da POLI-USP</description>
	<lastBuildDate>Wed, 11 Jan 2012 16:12:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Inserção de código fonte em LaTeX usando Bundles do TextMate</title>
		<link>http://www.bitabit.eng.br/2010/11/03/insercao-de-codigo-fonte-em-latex-usando-bundles-do-textmate/</link>
		<comments>http://www.bitabit.eng.br/2010/11/03/insercao-de-codigo-fonte-em-latex-usando-bundles-do-textmate/#comments</comments>
		<pubDate>Wed, 03 Nov 2010 22:38:25 +0000</pubDate>
		<dc:creator>Eduardo Russo, Coop10</dc:creator>
				<category><![CDATA[Coop10]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[bundle]]></category>
		<category><![CDATA[cvódigo fonte]]></category>
		<category><![CDATA[latex]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[png]]></category>
		<category><![CDATA[textmate]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.bitabit.eng.br/?p=1403</guid>
		<description><![CDATA[Um pouco depois de criar o comando para inserir PNGs no LaTeX usando os Bundles do TextMate, pensei que poderia fazer o mesmo para inserir códigos fonte. Aliás, inserção de código fonte foi o que me fez querer usar LaTeX a primeira vez. Não fosse isso, estaria fazendo o TCC no Word, sou fã de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.bitabit.eng.br/wp-content/uploads/2010/11/TextMate.png"><img class="alignright size-full wp-image-1399" title="TextMate" src="http://www.bitabit.eng.br/wp-content/uploads/2010/11/TextMate.png" alt="" width="128" height="128" /></a>Um pouco depois de criar o comando para <a href="http://www.bitabit.eng.br/2010/11/02/insercao-de-png-em-latex-usando-bunddles-to-textmate/" target="_blank">inserir PNGs no LaTeX usando os Bundles do TextMate</a>, pensei que poderia fazer o mesmo para inserir códigos fonte.</p>
<p>Aliás, inserção de código fonte foi o que me fez querer usar LaTeX a primeira vez. Não fosse isso, estaria fazendo o TCC no Word, sou fã de GUI, prefiro GUI, mas a facilidade de deixar as coisas bonitas no LaTeX pra um texto monstro como a monografia de conclusão de curso me convenceram.Antes de tudo, algumas coisas em relação aos arquivos e definições: lí, sei lá aonde, que a melhor coisa é usar <a href="http://pt.wikipedia.org/wiki/UTF-8" target="_blank">UTF-8</a> para os arquivos, mas, se você fizer isso em TODOS os arquivos, perceberá que acentuação não funcionará com códigos fonte! Então seus arquivos vão ficar meio misturados: Texto e <a href="http://www.bibtex.org/" target="_blank">Bibliografia</a> em UTF-8 e códigos em <a href="http://pt.wikipedia.org/wiki/Latin1" target="_blank">Latin1</a>.</p>
<p>Para isso, você precisa prestar atenção na hora de salvar os arquivos no TextMate:</p>
<div id="attachment_1408" class="wp-caption aligncenter" style="width: 228px"><a href="http://www.bitabit.eng.br/wp-content/uploads/2010/11/latex-textmate-file_format.png"><img class="size-full wp-image-1408" title="latex-textmate-file_format" src="http://www.bitabit.eng.br/wp-content/uploads/2010/11/latex-textmate-file_format.png" alt="" width="218" height="162" /></a><p class="wp-caption-text">Codificações do TextMate na hora de salvar</p></div>
<p>Agora vamos às definições que você precisa colocar no sue LaTeX pra poder inserir códigos fonte &#8220;bonitinhos&#8221;. Esses são os pacotes que você precisará para isso:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="latex" style="font-family:monospace;"><span style="color: #E02020; ">\</span><span style="color: #800000;">usepackage</span><span style="color: #E02020; ">[</span><span style="color: #C08020; font-weight: normal;">&lt;strong&gt;utf8&lt;/strong&gt;</span><span style="color: #E02020; ">]{</span><span style="color: #2020C0; font-weight: normal;">inputenc</span><span style="color: #E02020; ">}</span>
<span style="color: #E02020; ">\</span><span style="color: #800000;">usepackage</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;">color</span><span style="color: #E02020; ">}</span> <span style="color: #2C922C; font-style: italic;">% permite cores nos gráficos e códigos</span>
<span style="color: #E02020; ">\</span><span style="color: #800000;">usepackage</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;">listings</span><span style="color: #E02020; ">}</span> <span style="color: #2C922C; font-style: italic;">% para importação de códigos fonte</span></pre></td></tr></table></div>

<p>Depois disso, você precisará criar o comando de inserção de código (perceba que aqui foi selecionado <strong>latin1</strong>):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="latex" style="font-family:monospace;"><span style="color: #E02020; ">\</span><span style="color: #800000;">renewcommand</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;"><span style="color: #800000; font-weight: normal;">\lstlistingname</span></span><span style="color: #E02020; ">}{</span><span style="color: #2020C0; font-weight: normal;">Código</span><span style="color: #E02020; ">}</span> <span style="color: #2C922C; font-style: italic;">% definição visual dos códigos fonte</span>
<span style="color: #800000; font-weight: normal;">\lstset</span><span style="color: #E02020; ">{</span>
 extendedchars=<span style="color: #800000; font-weight: normal;">\true</span>, <span style="color: #2C922C; font-style: italic;">% permite acentos</span>
 &lt;strong&gt;inputencoding=latin1&lt;/strong&gt;, <span style="color: #2C922C; font-style: italic;">% usa Latin1 nos códigos fonte</span>
 commentstyle=<span style="color: #800000; font-weight: normal;">\it</span>, <span style="color: #2C922C; font-style: italic;">% deixa os comentários em itálico</span>
 stringstyle=<span style="color: #800000; font-weight: normal;">\bf</span>, <span style="color: #2C922C; font-style: italic;">% não lembro o que faz, mas está funcionando</span>
 belowcaptionskip=5pt, <span style="color: #2C922C; font-style: italic;">% não lembro o que faz, mas está funcionando</span>
 numbers=left, <span style="color: #2C922C; font-style: italic;">% coloca a numeração na esquerda</span>
 stepnumber=1, <span style="color: #2C922C; font-style: italic;">% passos da numeração</span>
 firstnumber=1, <span style="color: #2C922C; font-style: italic;">% primeira linha</span>
 numberstyle=<span style="color: #800000; font-weight: normal;">\tiny</span>, <span style="color: #2C922C; font-style: italic;">% tamanho da fonte da numeração</span>
 breaklines=true, <span style="color: #2C922C; font-style: italic;">% permitir quebra de linha</span>
 frame=tb, <span style="color: #2C922C; font-style: italic;">% borda em cima e em baixo</span>
 basicstyle=<span style="color: #800000; font-weight: normal;">\footnotesize</span>, <span style="color: #2C922C; font-style: italic;">% estilo básico</span>
 stringstyle=<span style="color: #E02020; ">\</span><span style="color: #800000;">ttfamily</span>, <span style="color: #2C922C; font-style: italic;">% não lembro o que faz, mas está funcionando</span>
 showstringspaces=false, <span style="color: #2C922C; font-style: italic;">% não mostrar os espaços</span>
 mathescape, <span style="color: #2C922C; font-style: italic;">% não lembro o que faz, mas está funcionando</span>
 tabsize=3 <span style="color: #2C922C; font-style: italic;">% tamanho da tabulação</span>
<span style="color: #E02020; ">}</span></pre></td></tr></table></div>

<p>Com isso, basta alguns comandos e você consegue inserir um código fonte no seu LaTeX e, para facilitar ainda mais a vida, um Bundle de drag and drop pro TextMate.</p>
<p>Essa inserção de código fonte <a href="http://en.wikibooks.org/wiki/LaTeX/Packages/Listings" target="_blank">reconhece algumas linguagens</a> nativamente, mas, mesmo tipos não reconhecidos ficam bem com isso.</p>
<p>Seguindo os mesmos passos do artigo de inserção de PNGs, aperte <strong>CMD+OPTION+CNTRL+B</strong>, troque de “<strong>show all</strong>” para “<strong>drag commands</strong>”, vá até “<strong>LaTeX</strong>”.</p>
<p>Agora clique no botão de <strong>+</strong> e adicione um “<strong>New Drag Command</strong>”. chame como quiser… adicione as extensões de código fonte que prentende usar,  eu coloquei o seguinte:<strong> ada, ant, asm, as, c, cpp, htm, html, java, js, json, pl, php, py, rb, sh, sql, xml, vhdl</strong>.</p>
<p>Coloque no &#8220;Scope Selector&#8221;:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">text.tex.latex</pre></div></div>

<p>Agora insira o seguinte código:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#!/usr/bin/env ruby</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'pathname'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;#{ENV['TM_BUNDLE_SUPPORT']}/lib/LaTeXUtils.rb&quot;</span>
filename = ENV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;TM_DROPPED_FILEPATH&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
relative_to = ENV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;TM_DIRECTORY&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
startfile = ENV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'TM_LATEX_MASTER'</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">||</span> ENV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'TM_FILEPATH'</span><span style="color:#006600; font-weight:bold;">&#93;</span>
master = <span style="color:#CC00FF; font-weight:bold;">Pathname</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>LaTeX.<span style="color:#9900CC;">master</span><span style="color:#006600; font-weight:bold;">&#40;</span>startfile<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">unless</span> master.<span style="color:#9900CC;">absolute</span>?
 master = master.<span style="color:#9900CC;">expand_path</span><span style="color:#006600; font-weight:bold;">&#40;</span>ENV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'TM_PROJECT_DIRECTORY'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
path = <span style="color:#CC00FF; font-weight:bold;">Pathname</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>filename<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">relative_path_from</span><span style="color:#006600; font-weight:bold;">&#40;</span>master.<span style="color:#9900CC;">dirname</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">if</span> ENV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;TM_MODIFIER_FLAGS&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">match</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">/</span>SHIFT<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006600; font-weight:bold;">&#41;</span>
 <span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\\</span><span style="color:#000099;">\\</span>input{&quot;</span> <span style="color:#006600; font-weight:bold;">+</span> path <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">&quot;}&quot;</span>
<span style="color:#9966CC; font-weight:bold;">else</span>
 ext = <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">extname</span><span style="color:#006600; font-weight:bold;">&#40;</span>path<span style="color:#006600; font-weight:bold;">&#41;</span>
 file_type = <span style="color:#9966CC; font-weight:bold;">case</span> ext
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.ada&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;Ada&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.ant&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;Ant&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.asm&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;Assembler&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.as&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;Assembler&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.c&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;C&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.cpp&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;C++&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.htm&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;HTML&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.html&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;HTML&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.java&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;Java&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.js&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;Java&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.json&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;Java&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.pl&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;Perl&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.php&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;PHP&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.py&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;Python&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.rb&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;Ruby&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.sh&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;sh&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.sql&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;SQL&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.xml&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;XML&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">&quot;.vhdl&quot;</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#996600;">&quot;VHDL&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">else</span> <span style="color:#996600;">&quot;linguagem&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">end</span>
 <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;<span style="color:#000099;">\\</span><span style="color:#000099;">\\</span>lstinputlisting[language=<span style="color:#000099;">\$</span>{1:#{file_type}}, tabsize = <span style="color:#000099;">\$</span>{2:4}, caption={<span style="color:#000099;">\$</span>{3:caption}}, label = {code:<span style="color:#000099;">\$</span>{4:#{path.to_s.gsub(/(<span style="color:#000099;">\.</span>[^.]*$)|(<span style="color:#000099;">\.</span><span style="color:#000099;">\.</span><span style="color:#000099;">\/</span>)/,&quot;</span><span style="color:#996600;">&quot;).gsub(/<span style="color:#000099;">\/</span>/,&quot;</span>_<span style="color:#996600;">&quot;)}}}]{#{path}}&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>Se você entende um pouquinho de programação, percebeu que é só acrescentar mais uma linha no case para inserir outras linguagens.</p>
<p>O meu ficou assim:</p>
<p style="text-align: center;">
<div id="attachment_1411" class="wp-caption aligncenter" style="width: 653px"><a href="http://www.bitabit.eng.br/wp-content/uploads/2010/11/latex-textmate-code-bundle.png"><img class="size-full wp-image-1411 " title="latex-textmate-code-bundle" src="http://www.bitabit.eng.br/wp-content/uploads/2010/11/latex-textmate-code-bundle.png" alt="" width="643" height="540" /></a><p class="wp-caption-text">Criação do Bundle para inserção de código fonte com drag and drop</p></div>
<p>Dessa forma, sempre que arrastar um código com uma dessas extensões, automaticamente a linha de inserção de código fonte já vai aparecer parcialmente preenchida, bastando apertar <strong>TAB</strong> para ir para o próximo campo.</p>
<img src="http://www.bitabit.eng.br/?ak_action=api_record_view&id=1403&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.bitabit.eng.br/2010/11/03/insercao-de-codigo-fonte-em-latex-usando-bundles-do-textmate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inserção simplificada de PNGs em LaTeX usando Bundles to TextMate</title>
		<link>http://www.bitabit.eng.br/2010/11/02/insercao-de-png-em-latex-usando-bunddles-to-textmate/</link>
		<comments>http://www.bitabit.eng.br/2010/11/02/insercao-de-png-em-latex-usando-bunddles-to-textmate/#comments</comments>
		<pubDate>Tue, 02 Nov 2010 12:27:40 +0000</pubDate>
		<dc:creator>Eduardo Russo, Coop10</dc:creator>
				<category><![CDATA[Coop10]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[bundle]]></category>
		<category><![CDATA[imagem]]></category>
		<category><![CDATA[latex]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[png]]></category>
		<category><![CDATA[textmate]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.bitabit.eng.br/?p=1388</guid>
		<description><![CDATA[O TextMate (Mac only…) tem uns comandos (Bundles) bem úteis pra Latex. Hoje descobri que basta arrastar uma imagem para um texto &#8220;.tex&#8221; que o TM automaticamente insere o contexto da imagem, bastando alterar os textos e apertar TAB pra ir pro próximo campo. Mas, o TCC do Anauê Costa, que usei como base, tinha [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.bitabit.eng.br/wp-content/uploads/2010/11/TextMate.png"><img class="alignright size-full wp-image-1399" title="TextMate" src="http://www.bitabit.eng.br/wp-content/uploads/2010/11/TextMate.png" alt="" width="128" height="128" /></a>O <a href="http://macromates.com/" target="_blank">TextMate</a> (Mac only…) tem uns comandos (<a href="http://manual.macromates.com/en/bundles" target="_blank">Bundles</a>) bem úteis pra <a href="http://www.tug.org/mactex/" target="_blank">Latex</a>. Hoje descobri  que basta arrastar uma imagem para um texto &#8220;.tex&#8221; que o TM  automaticamente insere o contexto da imagem, bastando alterar os textos e  apertar TAB pra ir pro próximo campo.</p>
<p>Mas, o TCC do <a href="http://twitter.com/#!/anauecosta" target="_blank">Anauê Costa</a>, que usei como base, tinha um &#8220;\newcommand&#8221; que simplificava o processo de inserção de imagens (adicione isso nas definições do seu LaTeX):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="latex" style="font-family:monospace;"><span style="color: #E02020; ">\</span><span style="color: #800000;">newcommand</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;"><span style="color: #800000; font-weight: normal;">\inputpng</span></span><span style="color: #E02020; ">}[</span><span style="color: #C08020; font-weight: normal;">4</span><span style="color: #E02020; ">]{</span><span style="color: #2C922C; font-style: italic;">%</span>
 <span style="color: #C00000; font-weight: normal;">\begin</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;"><span style="color: #0000D0; font-weight: normal;">figure</span></span><span style="color: #E02020; ">}[</span><span style="color: #C08020; font-weight: normal;">!htb</span><span style="color: #E02020; ">]</span>
 <span style="color: #E02020; ">\</span><span style="color: #800000;">centering</span>
 <span style="color: #E02020; ">\</span><span style="color: #800000;">includegraphics</span><span style="color: #E02020; ">[</span><span style="color: #C08020; font-weight: normal;">width=#4\<span style="color: #800000;">textwidth</span></span><span style="color: #E02020; ">]{</span><span style="color: #2020C0; font-weight: normal;">#1.png</span><span style="color: #E02020; ">}</span>
 <span style="color: #E02020; ">\</span><span style="color: #800000;">caption</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;"><span style="color: #800000; font-weight: normal;">\it</span> #3.</span><span style="color: #E02020; ">}</span>
 <span style="color: #E02020; ">\</span><span style="color: #800000;">label</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;">fig:#2</span><span style="color: #E02020; ">}</span>
 <span style="color: #C00000; font-weight: normal;">\end</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;"><span style="color: #0000D0; font-weight: normal;">figure</span></span><span style="color: #E02020; ">}</span>
 <span style="color: #E02020; ">}</span></pre></td></tr></table></div>

<p>então, em vez de:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="latex" style="font-family:monospace;"><span style="color: #E02020; ">\</span><span style="color: #800000;">includegraphics</span><span style="color: #E02020; ">[</span><span style="color: #C08020; font-weight: normal;">width=1.0\<span style="color: #800000;">textwidth</span></span><span style="color: #E02020; ">]{</span><span style="color: #2020C0; font-weight: normal;">figuras/p-30-1-multiplataforma-marketshare_gartner.png</span><span style="color: #E02020; ">}</span>
 <span style="color: #E02020; ">\</span><span style="color: #800000;">caption</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;">caption</span><span style="color: #E02020; ">}</span>
 <span style="color: #E02020; ">\</span><span style="color: #800000;">label</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;">fig:figuras_p-30-1-multiplataforma-marketshare_gartner</span><span style="color: #E02020; ">}</span>
 <span style="color: #C00000; font-weight: normal;">\end</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;"><span style="color: #0000D0; font-weight: normal;">figure</span></span><span style="color: #E02020; ">}</span></pre></td></tr></table></div>

<p>você fica com:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="latex" style="font-family:monospace;"><span style="color: #800000; font-weight: normal;">\inputpng</span><span style="color: #E02020; ">{</span><span style="color: #2020C0; font-weight: normal;">figuras/p-30-1-multiplataforma-marketshare_gartner</span><span style="color: #E02020; ">}{</span><span style="color: #2020C0; font-weight: normal;">figuras_p-30-1-multiplataforma-marketshare_gartner</span><span style="color: #E02020; ">}{</span><span style="color: #2020C0; font-weight: normal;">caption</span><span style="color: #E02020; ">}{</span><span style="color: #2020C0; font-weight: normal;">1.0</span><span style="color: #E02020; ">}</span></pre></td></tr></table></div>

<p>Fiz então uma alteração no comando de inserção de imagem pra ele gerar o novo tipo quando arrastar uma imagem.</p>
<p>Para inseri-lo, no TM, aperte <strong>CMD+OPTION+CNTRL+B</strong>. Isso abrirá o editor de bundles.</p>
<p>Troque de &#8220;<em>show all</em>&#8221; para &#8220;<em>drag commands</em>&#8220;, vá até &#8220;LaTeX&#8221; e selecione o &#8220;<em>Include Image</em>&#8220;.</p>
<p>Tire a extensão &#8220;png&#8221; de lá, já que o comando novo só serve para PNG!</p>
<p>Agora clique no botão de + e adicione um &#8220;<em>New Drag Command</em>&#8221;</p>
<p>chame como quiser… adicione a extensão PNG e cole o código abaixo nele:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#!/usr/bin/env ruby</span>
 <span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'pathname'</span>
 <span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;#{ENV['TM_BUNDLE_SUPPORT']}/lib/LaTeXUtils.rb&quot;</span>
 filename = ENV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;TM_DROPPED_FILEPATH&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
 relative_to = ENV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;TM_DIRECTORY&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
 startfile = ENV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'TM_LATEX_MASTER'</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">||</span> ENV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'TM_FILEPATH'</span><span style="color:#006600; font-weight:bold;">&#93;</span>
 master = <span style="color:#CC00FF; font-weight:bold;">Pathname</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>LaTeX.<span style="color:#9900CC;">master</span><span style="color:#006600; font-weight:bold;">&#40;</span>startfile<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
 <span style="color:#9966CC; font-weight:bold;">unless</span> master.<span style="color:#9900CC;">absolute</span>?
 master = master.<span style="color:#9900CC;">expand_path</span><span style="color:#006600; font-weight:bold;">&#40;</span>ENV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'TM_PROJECT_DIRECTORY'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
 <span style="color:#9966CC; font-weight:bold;">end</span>
 path = <span style="color:#CC00FF; font-weight:bold;">Pathname</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>filename<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">relative_path_from</span><span style="color:#006600; font-weight:bold;">&#40;</span>master.<span style="color:#9900CC;">dirname</span><span style="color:#006600; font-weight:bold;">&#41;</span>
 <span style="color:#9966CC; font-weight:bold;">case</span> ENV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'TM_MODIFIER_FLAGS'</span><span style="color:#006600; font-weight:bold;">&#93;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#006600; font-weight:bold;">/</span>OPTION<span style="color:#006600; font-weight:bold;">/</span>
 <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;<span style="color:#000099;">\\</span><span style="color:#000099;">\\</span>begin{center}&quot;</span>,
 <span style="color:#996600;">&quot; <span style="color:#000099;">\\</span><span style="color:#000099;">\\</span>includegraphics[height=<span style="color:#000099;">\$</span>{1:3in}]{#{path}}&quot;</span>,
 <span style="color:#996600;">&quot;<span style="color:#000099;">\\</span><span style="color:#000099;">\\</span>end{center}&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
 <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#006600; font-weight:bold;">/</span>SHIFT<span style="color:#006600; font-weight:bold;">/</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;<span style="color:#000099;">\\</span><span style="color:#000099;">\\</span>begin{figure}[<span style="color:#000099;">\$</span>{1:htbp}]&quot;</span>,
 <span style="color:#996600;">&quot;    <span style="color:#000099;">\\</span><span style="color:#000099;">\\</span>centering&quot;</span>,
 <span style="color:#996600;">&quot;        <span style="color:#000099;">\\</span><span style="color:#000099;">\\</span>includegraphics[height=<span style="color:#000099;">\$</span>{2:3in}]{#{path}}&quot;</span>,
 <span style="color:#996600;">&quot;    <span style="color:#000099;">\\</span><span style="color:#000099;">\\</span>caption{<span style="color:#000099;">\$</span>{4:caption}}&quot;</span>,
 <span style="color:#996600;">&quot;    <span style="color:#000099;">\\</span><span style="color:#000099;">\\</span>label{fig:<span style="color:#000099;">\$</span>{5:#{path.to_s.gsub(/(<span style="color:#000099;">\.</span>[^.]*$)|(<span style="color:#000099;">\.</span><span style="color:#000099;">\.</span><span style="color:#000099;">\/</span>)/,&quot;</span><span style="color:#996600;">&quot;).gsub(/<span style="color:#000099;">\/</span>/,&quot;</span>_<span style="color:#996600;">&quot;)}}}&quot;</span>,
 <span style="color:#996600;">&quot;<span style="color:#000099;">\\</span><span style="color:#000099;">\\</span>end{figure}&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
 <span style="color:#9966CC; font-weight:bold;">else</span>
 <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\\</span><span style="color:#000099;">\\</span>inputpng{#{path.to_s.gsub(&quot;</span>.<span style="color:#9900CC;">png</span><span style="color:#996600;">&quot;, &quot;</span><span style="color:#996600;">&quot;)}}{<span style="color:#000099;">\$</span>{1:#{path.to_s.gsub(/(<span style="color:#000099;">\.</span>[^.]*$)|(<span style="color:#000099;">\.</span><span style="color:#000099;">\.</span><span style="color:#000099;">\/</span>)/,&quot;</span><span style="color:#996600;">&quot;).gsub(/<span style="color:#000099;">\/</span>/,&quot;</span>_<span style="color:#996600;">&quot;)}}}{<span style="color:#000099;">\$</span>{2:caption}}{<span style="color:#000099;">\$</span>{3:1.0}<span style="color:#000099;">\}</span>&quot;</span>
 <span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>Adicione também no &#8220;<em>Scope Selector</em>&#8221; o seguinte:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">text.tex.latex</pre></td></tr></table></div>

<p>Com isso, sempre que você arrastar um PNG pro .tex, ele já vai gerar o código <em>automagicamente</em>!</p>
<p>Segue a imagem de como ficou aqui.</p>
<p style="text-align: left;">
<div id="attachment_1389" class="wp-caption aligncenter" style="width: 606px"><a href="http://www.bitabit.eng.br/wp-content/uploads/2010/11/textmate-latex-image-bunddle.png"><img class="size-full wp-image-1389   " title="textmate-latex-image-bundle" src="http://www.bitabit.eng.br/wp-content/uploads/2010/11/textmate-latex-image-bunddle.png" alt="" width="596" height="392" /></a><p class="wp-caption-text">Novo Bundle do TextMate para inserção de imagem em Latex.</p></div>
<p>Para inserir &#8220;PNGs&#8221; da forma &#8220;original&#8221;, basta pressionar <strong>SHIFT</strong> quando arrastar a imagem.</p>
<p>Observação: Esse é um post transcrito de um e-mail, na pressa, no meio  da correria de escrever o TCC da Poli, então, não está bem formatado,  cheio de imagens ilustrativas ou coisas do tipo… sorry <img src='http://www.bitabit.eng.br/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<img src="http://www.bitabit.eng.br/?ak_action=api_record_view&id=1388&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.bitabit.eng.br/2010/11/02/insercao-de-png-em-latex-usando-bunddles-to-textmate/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CloudApp: uploader + encurtador de url para Mac</title>
		<link>http://www.bitabit.eng.br/2010/04/15/cloudapp-uploader-encurtador-de-url-para-mac/</link>
		<comments>http://www.bitabit.eng.br/2010/04/15/cloudapp-uploader-encurtador-de-url-para-mac/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 10:27:50 +0000</pubDate>
		<dc:creator>Eduardo Russo, Coop10</dc:creator>
				<category><![CDATA[Coop10]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[barra de menus]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[cloudapp]]></category>
		<category><![CDATA[dica]]></category>
		<category><![CDATA[encurtador de url]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[produtividade]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[uploader]]></category>
		<category><![CDATA[url shortner]]></category>

		<guid isPermaLink="false">http://www.bitabit.eng.br/?p=1190</guid>
		<description><![CDATA[A moda dos encurtadores de URL vieram para ficar, porém, conheci o CloudApp como um uploader rápido, que fica na sua cara o tempo todo e, com o uso, descobri que ele também é um encurtador de URL. Lançado no começo do mês, o aplicativo facilita muito subir arquivos para compartilhar com quem você quiser, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-1194" title="cloudapp-icone" src="http://www.bitabit.eng.br/wp-content/uploads/2010/04/cloudapp-icone.png" alt="cloudapp-icone" width="128" height="128" />A moda dos encurtadores de URL vieram para ficar, porém, conheci o <a href="http://www.getcloudapp.com/" target="_blank">CloudApp</a> como um <em>uploader</em> rápido, que fica na sua cara o tempo todo e, com o uso, descobri que ele também é um encurtador de URL.</p>
<p>Lançado no <a href="http://www.getcloudapp.com/blog/" target="_blank">começo do mês</a>, o aplicativo facilita muito subir arquivos para compartilhar com quem você quiser, seja usando o <a href="http://twitter.com/russoedu" target="_blank">Twitter</a>, seja enviando um e-mail com o link.</p>
<p style="text-align: center;">
<div id="attachment_1192" class="wp-caption aligncenter" style="width: 336px"><img class="size-full wp-image-1192" title="cloudapp-barra-de-menus" src="http://www.bitabit.eng.br/wp-content/uploads/2010/04/cloudapp-barra-de-menus.png" alt="CloudApp instalado na barra de menus" width="326" height="286" /><p class="wp-caption-text">CloudApp instalado na barra de menus</p></div>
<p>Depois de se cadastrar no site – grátis, com a única limitação de arquivos não serem maiores que 50 MB – e instalar o programa, que fica alojado na <a href="http://support.apple.com/kb/HT2473?viewlocale=pt_BR" target="_blank">barra de menus</a>, basta arrastar &#8220;qualquer coisa&#8221; para cima dele ou usar a tecla de atalho (você pode definir a que quiser – eu estou usando <strong>CMD+SHIFT+2</strong>, já que isso se parece com os atalhos para tirar fotos da tela – para &#8220;qualquer coisa&#8221; ser enviada para os servidores deles.</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="608" height="501" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="quality" value="high" /><param name="src" value="http://www.youtube.com/v/IfDyoeDYs2k" /><embed type="application/x-shockwave-flash" width="608" height="501" src="http://www.youtube.com/v/IfDyoeDYs2k" quality="high"></embed></object></p>
<p>Assim que o arquivo termina de subir, o endereço do tipo &#8220;http://cl.ly/xxx&#8221; é colocado no seu <em>clipboard</em>, bastando um <strong>CMD+V</strong> para colar o endereço. Além disso, ele te avisa, com som ou usando o <a href="http://growl.info/" target="_blank">Growl</a> que o <em>upload</em> terminou.</p>
<div id="attachment_1193" class="wp-caption aligncenter" style="width: 338px"><img class="size-full wp-image-1193" title="cloudapp-com-growl" src="http://www.bitabit.eng.br/wp-content/uploads/2010/04/cloudapp-com-growl.png" alt="Growl avisando que o arquivo foi enviado" width="328" height="104" /><p class="wp-caption-text">Growl avisando que o arquivo foi enviado</p></div>
<p style="text-align: left;">O programa ainda conta com <a href="http://www.getcloudapp.com/app/download" target="_blank">Raindrops</a>, <em>plugins</em> que permitem que o atalho de envio de arquivo funcione com diversos programas. Basta baixar, clicar duas vezes e sair usando!</p>
<div id="attachment_1196" class="wp-caption aligncenter" style="width: 343px"><img class="size-full wp-image-1196 " title="cloudapp-raindrops-instalados" src="http://www.bitabit.eng.br/wp-content/uploads/2010/04/cloudapp-raindrops-instalados.png" alt="Raindrops instalados" width="333" height="288" /><p class="wp-caption-text">Raindrops instalados</p></div>
<p>Para completar o pacote, como todo bom encurtador de URL, o <a href="http://www.getcloudapp.com/" target="_blank">CloudApp</a> te mostra quantas vezes cada link foi clicado, tanto pelo aplicativo na barra de menus, quanto pelo site.</p>
<p style="text-align: center;">
<div id="attachment_1197" class="wp-caption aligncenter" style="width: 536px"><img class="size-full wp-image-1197 " title="cloudapp-site-com-estatisticas-de-downloads" src="http://www.bitabit.eng.br/wp-content/uploads/2010/04/cloudapp-site-com-estatisticas-de-downloads.png" alt="Estatísticas de download" width="526" height="385" /><p class="wp-caption-text">Estatísticas de downloads no site</p></div>
<p style="text-align: left;">Quando se clica num link de arquivo que não pode ser aberto nativamente pelo browser (PDFs, DOCs, ZIPs e coisas do tipo), você é levado para uma tela com opção de download, já, quando é uma imagem ou uma URL, o programa abre o link diretamente no lugar.</p>
<div id="attachment_1195" class="wp-caption aligncenter" style="width: 294px"><img class="size-full wp-image-1195 " title="cloudapp-opacao-de-download" src="http://www.bitabit.eng.br/wp-content/uploads/2010/04/cloudapp-opacao-de-download.png" alt="Download de arquivo &quot;não nativo&quot; do browser " width="284" height="97" /><p class="wp-caption-text">Download de arquivo &quot;não nativo&quot; do browser </p></div>
<p>Resumindo… se você tem um Mac, baixe o <a href="http://www.getcloudapp.com/" target="_blank">CloudApp</a> agora, que é, até o momento, totalmente grátis.</p>
<p>Fonte: <a href="http://macmagazine.com.br/2010/04/08/cloudapp-armazene-arquivos-do-mac-na-nuvem-via-drag-drop/" target="_blank">MacMagazine</a> e <a href="http://lifehacker.com/5508611/cloudapp-instantly-shares-any-file-is-my-new-favorite-timesaver" target="_blank">Lifehacker</a></p>
<img src="http://www.bitabit.eng.br/?ak_action=api_record_view&id=1190&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.bitabit.eng.br/2010/04/15/cloudapp-uploader-encurtador-de-url-para-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalando o OpenCV 1.1 no Ubuntu 8.10, 9.04 e 9.10</title>
		<link>http://www.bitabit.eng.br/2010/02/17/instalando-o-opencv-1-1-no-ubuntu-8-10-9-04-e-9-10/</link>
		<comments>http://www.bitabit.eng.br/2010/02/17/instalando-o-opencv-1-1-no-ubuntu-8-10-9-04-e-9-10/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 15:06:31 +0000</pubDate>
		<dc:creator>Filipe M. S. de Campos, Coop10</dc:creator>
				<category><![CDATA[Coop10]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Outros]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Visão Computacional]]></category>
		<category><![CDATA[computer vision]]></category>
		<category><![CDATA[Ctypes OpenCV]]></category>
		<category><![CDATA[instalação]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[OpenCV]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[visão computacional]]></category>
		<category><![CDATA[wrapper]]></category>

		<guid isPermaLink="false">http://www.bitabit.eng.br/?p=966</guid>
		<description><![CDATA[Logo do OpenCV Neste post irei dividir com você as experiências que já tive com a instalação da bibliteca OpenCV no Ubuntu. Vou relatar o processo de instalação do OpenCV 1.1 nas versões 8.10, 9.04 e 9.10 do Ubuntu. Apesar do OpenCV ser tipicamente utilizado com C ou C++, também é possível utilizá-lo com Python (ou Octave) graças [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_976" class="wp-caption alignright" style="width: 190px"><br />
<img class="size-medium wp-image-976 " title="OpenCV logo" src="http://www.bitabit.eng.br/wp-content/uploads/2010/02/opencv_logo-300x277.gif" alt="Logo do OpenCV" width="180" height="166" /><p class="wp-caption-text">Logo do OpenCV</p></div>
<p>Neste <em>post</em> irei dividir com você as experiências que já tive com a instalação da bibliteca <a title="OpenCV Wiki" href="http://opencv.willowgarage.com/wiki/" target="_blank">OpenCV</a> no Ubuntu. Vou relatar o processo de instalação do <a title="OpenCV11 - Download" href="http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/1.1pre1/opencv-1.1pre1.tar.gz/download" target="_blank">OpenCV 1.1</a> nas versões 8.10, 9.04 e 9.10 do Ubuntu.</p>
<p>Apesar do OpenCV ser tipicamente utilizado com C ou C++, também é possível utilizá-lo com Python (ou Octave) graças aos wrappers criados por <a title="Ctypes OpenCV" href="http://code.google.com/p/ctypes-opencv/" target="_blank">terceiros</a> ou ao que já acompanha a versão 1.1 da biblioteca.  Neste texto, focarei a instalação para o uso de Python com o wrapper <a title="Ctypes OpnCV" href="http://code.google.com/p/ctypes-opencv/" target="_blank">Ctypes OpenCV</a>.  Por que o Ctypes OpenCV? Pois o que acompanha a biblioteca me &#8220;deixou na mão&#8221; durante o desenvolvimento do último projeto.</p>
<p><span style="color: #ffffff;">.<br />
</span></p>
<h2><span style="color: #ffffff;"><strong><span style="color: #000000;">Passo zero:</span></strong></span></h2>
<p>(vale para todos as três versões do Ubuntu)</p>
<ul>
<li>O OpenCV, funciona com Python, apenas para as versões 2.5.x ou 2.6.x da linguagem. A versão 3.x ainda não tem suporte oficial. Logo, verifique se você possui ele instalado em seu computador, caso contrário, instale o Python 2.6.4.</li>
<li>Mais umas coisinhas a serem instaladas. Digite no terminal (Aplicativos -&gt; Acessórios -&gt; Terminal) o comando abaixo. Sim, são várias coisas. Algumas são realmente requisitos para a instalação, outras servem apenas para diminuirmos chances de problemas depois. Instale, não dói nada <img src='http://www.bitabit.eng.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<pre class="brush: plain; light: true; title: ; notranslate"> sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev
libavformat-dev libavfilter-dev libswscale-dev libtiff-dev libjasper libgstreamer0.10-dev
libxine-dev libunicap-dev libdc1394-22-dev swig ffmpeg mplayer vlc </pre>
<ul>
<li> Baixe o <a title="OpenCV - Download" href="http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/1.1pre1/opencv-1.1pre1.tar.gz/download" target="_blank">OpenCV 1.1</a>, o <a title="Ctypes OpenCV - Download" href="http://ctypes-opencv.googlecode.com/files/ctypes-opencv-0.8.0-src.7z" target="_blank">Ctypes-OpenCV</a> e os <a title="Ctypes OpenCV - Exemplos" href="http://ctypes-opencv.googlecode.com/files/ctypes-opencv-0.8.0-demo.7z" target="_self">exemplos de códigos</a> do Ctypes OpenCV, você vai querer testar e consultar depois.</li>
</ul>
<p><span style="color: #ffffff;">.</span></p>
<h2>Ubuntu 8.10:</h2>
<p>Nesta versão do Ubuntu, a instalação é bem simples e funciona bem. <img src='http://www.bitabit.eng.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   Basta seguir os passos abaixo:</p>
<ul>
<li>Após o passo zero, no início desse <em>post</em>, descomprima o OpenCV e, pelo terminal,  entre na pasta criada. Se ela estiver em seu desktop, será algo próximo a:</li>
</ul>
<pre class="brush: plain; light: true; title: ; notranslate"> cd Desktop/opencv-1.1.0 </pre>
<ul>
<li>Agora, digite:</li>
</ul>
<pre class="brush: plain; light: true; title: ; notranslate"> ./configure --disable-sse2 --with-python --with-swig --with-ffmpeg </pre>
<p>Obs.: Para processadores antigos, como o AMD de uns quase dez anos atrás que usei no laboratório, era necessários desativar instruções do tipo <a title="Instruções SSE2" href="http://en.wikipedia.org/wiki/SSE2" target="_blank">SSE2</a>, caso contrário, ao rodar algum programa que usasse o OpenCV você obteria a mensagem: Illegal instruction. Eu não expliquei isso antes de você escrever o comando pois obtive problemas com os wrappers de python caso não desativasse esse tipo de instrução no Ubuntu 9.04 e 9.10, imagino que na versão 8.10 isso também ocorra apesar de não ter testado. Então, se você irá usar o OpenCV com C ou C++, não existe necessidade do &#8211;disable-sse2, caso contrário, é melhor desativar esse tipo de instrução.</p>
<ul>
<li>Agora preste atenção ao pequeno relatório que apareceu em seu terminal. Verifique, principalmente, se o python e o ffmpeg estão com &#8220;<em>yes</em>&#8220;. Seu relatório deve se parecer bastante como o da figura abaixo:</li>
</ul>
<div id="attachment_977" class="wp-caption aligncenter" style="width: 450px"><img class="size-full wp-image-977  " title="Relatório do configure" src="http://www.bitabit.eng.br/wp-content/uploads/2010/02/saida-do-configure-OK.png" alt="Relatório do configure com as opções corretamente marcadas." width="440" height="389" /><p class="wp-caption-text">Figura 1 - Relatório do configure com as opções corretamente marcadas.</p></div>
<p>Caso o Python ou o ffmpeg não tenham aparecido com o &#8220;<em>yes</em>&#8220;, tente as soluções mostradas nas outras versões do Ubuntu que estão abaixo.</p>
<ul>
<li>Agora, digite:</li>
</ul>
<pre class="brush: plain; light: true; title: ; notranslate"> make </pre>
<ul>
<li>Depois que terminar, digite:</li>
</ul>
<pre class="brush: plain; light: true; title: ; notranslate"> sudo make install </pre>
<h3>Será que funcionou? Vamos testar.</h3>
<p>O OpenCV acompanha alguns programas exemplo, tanto em C quanto em Python, para você testar a instalação e aprender a usar a biblioteca.  Siga os passos abaixo.</p>
<ul>
<li>Se sua pasta do OpenCV estiver no desktop, digite:</li>
</ul>
<pre class="brush: plain; light: true; title: ; notranslate"> cd Desktop/opencv-1.1.0/samples/c </pre>
<ul>
<li>Agora compile os exemplos com:</li>
</ul>
<pre class="brush: plain; light: true; title: ; notranslate"> . build_all.sh </pre>
<ul>
<li>Agora rode um dos programas:</li>
</ul>
<pre class="brush: plain; light: true; title: ; notranslate"> ./delaunay </pre>
<p>Se surgiu uma nova janela e &#8220;coisas coloridas&#8221; estão aparecendo nela, a biblioteca foi instalada com sucesso.</p>
<h3>Instalando o Ctypes OpenCV</h3>
<p>Será bem simples. Descomprima o arquivo que você ja baixou no passo zero para o desktop e, pelo terminal, entre na pasta <em>src</em>. Após isso, digite:</p>
<pre class="brush: plain; light: true; title: ; notranslate"> sudo python setup.py install </pre>
<p>Depois de instalado, veja os exemplos que você também baixou do Ctypes OpenCV no passo zero. Dê duplo clique em algum deles, por exemplo o delaunay.py. Ou então rode via terminal com o comando</p>
<pre class="brush: plain; light: true; title: ; notranslate"> python delaunay.py </pre>
<p><span style="color: #ffffff;">.</span></p>
<h2>Ubuntu 9.04:</h2>
<p>Nessa versão do Ubuntu as coisas já não são mais tão simples. Apesar do processo de instalação ser o mesmo da versão 8.10, surgem alguns problemas no meio do caminho.</p>
<p><strong>Primeiro problema</strong>:  O Python não é reconhecido ao rodar o <em>configure</em>.</p>
<p>Se você rodar o <em>configure</em>, verá que no relatório que ele exibe aparece &#8220;<em>no</em>&#8221; para o Python. Se você verficar melhor a saída completa verá:</p>
<div id="attachment_1010" class="wp-caption aligncenter" style="width: 745px"><img class="size-full wp-image-1010" title="Problema com o Python" src="http://www.bitabit.eng.br/wp-content/uploads/2010/02/problema-com-o-python.png" alt="Figura 2 - Problema com o Python" width="735" height="260" /><p class="wp-caption-text">Figura 2 - Problema com o Python</p></div>
<p><strong>Resolução</strong>:  Provavelmente deve existir uma solução melhor, mas esta funcionou para mim. Baixei o <em>source</em> do <a title="Python 2.6.4 - Download" href="http://www.python.org/ftp/python/2.6.4/Python-2.6.4.tgz" target="_blank">Python 2.6.4</a>, compilei e reinstalei via terminal, da seguinte forma:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
./configure
make
sudo make install
</pre>
<p>Obs.: Se seu computador não possuir suporta a instruções SSE2, utilize para o primeiro comando: ./configure &#8211;diable-sse2</p>
<p><span style="color: #ffffff;">.</span></p>
<p><strong>Segundo problema</strong>:  O ffmpeg não é reconhecido ao rodar o <em>configure</em>. Resultado, não é possível manipular vídeos com a biblioteca.</p>
<p>Se você rodar o <em>configure</em>, verá que é exibido &#8220;<em>no</em>&#8220; para o ffmpeg no relatório. Se você verficar melhor a saída completa verá:</p>
<div id="attachment_1011" class="wp-caption aligncenter" style="width: 401px"><img class="size-full wp-image-1011" title="Problema com o ffmpeg" src="http://www.bitabit.eng.br/wp-content/uploads/2010/02/problema-com-o-ffmpeg.png" alt="Figura 3 - Problema com o ffmpeg" width="391" height="88" /><p class="wp-caption-text">Figura 3 - Problema com o ffmpeg</p></div>
<p><strong>Resolução</strong>: Basta seguir os passos abaixo em seu terminal:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
sudo mkdir /usr/include/ffmpeg
cd /usr/include/ffmpeg
sudo ln -s ../libavcodec/avcodec.h avcodec.h
sudo ln -s ../libavformat/avformat.h avformat.h
sudo ln -s ../libavformat/avio.h avio.h
sudo ln -s ../libavutil/avutil.h avutil.h
sudo ln -s ../libswscale/swscale.h swscale.h
</pre>
<p>Com os problemas resolvidos, e o passo zero realizado, siga o procedimento básico da instalação.</p>
<pre class="brush: plain; light: true; title: ; notranslate"> ./configure --disable-sse2 --with-python --with-swig --with-ffmpeg --enable-swscale --enable-shared </pre>
<p>Antes dos próximos comandos, não esqueça de verificar no relatório do <em>configure</em> se o python e o ffmpeg estão com &#8220;<em>yes</em>&#8220;. Seu relatório deve se parecer bastante como o da Figura 1 desse <em>post</em>.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
make
sudo make install
</pre>
<p>Ao terminar, teste e instale o Ctypes OpenCV para programar com Python. Para isso, siga as instruções dos tópicos &#8220;<strong>Será que funcionou? Vamos testar.</strong>&#8221; e &#8220;<strong>Instalando o Ctypes Opencv</strong>&#8221; que estão na instalação para o Ubuntu 8.10, acima neste mesmo <em>post.</em></p>
<p><span style="color: #ffffff;">.</span></p>
<h2 style="font-size: 1.5em;">Ubuntu 9.10:</h2>
<p>Nessa versão, existe mais um problema além dos já existentes para o Ubuntu 9.04.</p>
<p><strong>Problema</strong>: Erro durante a compilação do código.</p>
<p><strong>Resolução</strong>: Entre na pasta que você descomprimiu o OpenCV1.1, vá em <em>cxcore</em>, <em>include</em> e abra o arquivo <em>cxmisc.h</em>. Na linha 133, troque o</p>
<pre class="brush: plain; light: true; title: ; notranslate">#elif</pre>
<p>por:</p>
<pre class="brush: plain; light: true; title: ; notranslate">#else</pre>
<p>Para completar a instalação, basta seguir o texto acima sobre a instalação no Ubuntu 9.04.</p>
<p><span style="color: #ffffff;">.</span></p>
<p><span style="color: #ffffff;">.</span></p>
<img src="http://www.bitabit.eng.br/?ak_action=api_record_view&id=966&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.bitabit.eng.br/2010/02/17/instalando-o-opencv-1-1-no-ubuntu-8-10-9-04-e-9-10/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Compilando o OpenOffice</title>
		<link>http://www.bitabit.eng.br/2010/02/06/compilando-o-openoffice/</link>
		<comments>http://www.bitabit.eng.br/2010/02/06/compilando-o-openoffice/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 21:10:26 +0000</pubDate>
		<dc:creator>Rodrigo Rodrigues da Silva, Coop08</dc:creator>
				<category><![CDATA[Coop8]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[compilação]]></category>
		<category><![CDATA[open office]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.bitabit.eng.br/?p=945</guid>
		<description><![CDATA[Compilar o OpenOffice a partir do código fonte da linha de desenvolvimento poderia tornar-se um pesadelo há algum tempo. Com o novo build system da linha 3.0 e a migração para o repositório mercurial durante o desenvolvimento da próxima versão (3.2), o processo ficou muito mais fácil. Passado o martírio, é só começar a se divertir com os quase 70 mil arquivos-fonte.]]></description>
			<content:encoded><![CDATA[<p>Compilar o OpenOffice a partir do código fonte da linha de desenvolvimento poderia tornar-se um pesadelo há algum tempo. Com o novo build system da linha 3.0 e a migração para o repositório mercurial durante o desenvolvimento da próxima versão (3.2), o processo ficou muito mais fácil. Passado o martírio, é só começar a se divertir com os quase 70 mil arquivos-fonte.</p>
<p>Hoje à noite, em um momento iluminado (depois de ler um e-mail do <a href="http://jucablues.blogspot.com/">Juca</a> entitulado “<a href="http://groups.google.com/group/polignu/browse_thread/thread/d139bf2d4835e903">algumas coisas demandam coragem</a>”, sugerindo o que se segue), pensei: bom, se eu já uso as versões de desenvolvimento do Firefox e do Thunderbird cotidianamente, por que não o OpenOffice? Afinal, qual a graça de usar um OpenOffice 3.1 estável?!</p>
<p>Há cerca de dois anos eu tentei completar esse rito de passagem: na época ainda usavam <em>CVS</em>. Um grande problema de <em>CVS</em> em tutoriais é que sempre colocam umas linhas de comando do tipo:</p>
<p><code>cvs -d :pserver:anoncvs@anoncvs.services.openoffice.org:/cvs checkout <em>"modulename"</em></code></p>
<p><a href="http://www.bitabit.eng.br/wp-content/uploads/2010/02/comp_ooffice1.png"><img class="alignright size-full wp-image-953" src="http://www.bitabit.eng.br/wp-content/uploads/2010/02/comp_ooffice1.png" alt="comp_ooffice" width="402" height="477" /></a>e nunca nos dizem o que colocar em <em>&#8220;modulename&#8221;</em>, o que acaba por custar ao benevolente hacker mais duas horas varrendo o repositório em busca do módulo correto. Além disso, era necessário baixar e compilar separadamente todo o<em> build system</em> do open office.</p>
<p>A boa notícia é que a cada <em>major version</em> o OpenOffice.org tem refeito o seu <em>build system</em>, para melhor. Além disso, descobri que nesses dois anos eles passaram o repositório de código pelo <em>svn</em> e  finalmente adotaram o <em>mercurial</em> em outubro de 2009.</p>
<p>Fazer um <em>checkout</em> de todo o repositório <em>mercurial</em> seria muito demorado, e por isso eles disponibilizam um <em>bundle</em> diário do repositório, isto é, um arquivo com todo o repositório empacotado.</p>
<p>Hora de se sujar: baixe o <em>bundle</em> , “<em>unbundle</em>” e “<em>update</em>”:</p>
<p><code>sudo apt-get install mercurial</code> (caso não tenha o <em>mercurial</em> instalado)<br />
<code>mkdir devel &amp;&amp; cd devel</code> (ou como vc quiser chamar o seu parque de diversões hacker, caso ainda não o tenha)<br />
<code>wget http://hg.services.openoffice.org/bundle/DEV300.hg<br />
mkdir openoffice<br />
cd openoffice<br />
hg init<br />
hg unbundle ../DEV300.hg<br />
hg pull http://hg.services.openoffice.org/DEV300<br />
hg update</code></p>
<p>Além do tempo de baixar o<em> bundle</em>, que tem quase 1GB, o resto do processo demora cerca de 30 minutos.</p>
<p>De agora em diante, você é livre para compilar como quiser, com os itens opcionais que quiser (ou não). Vou apenas reproduzir o que eu fiz para executar um <em>full build</em> padrão, já que os tutoriais oficiais nunca são suficientes. Tudo isso foi executado em um Ubuntu GNU/Linux 9.04 (jaunty) 64bits, e pode mudar ligeiramente de distribuição para distribuição. Caso você use uma distribuição que não seja derivada do Debian (isto é, sem <em>apt</em>), use o gerenciador de pacotes padrão da sua distribuição. Os pacotes devem ter nomes iguais ou parecidos.</p>
<p><strong>Dependências</strong></p>
<p>No tutorial disponível no wiki eles sugerem algumas dependências:</p>
<ul>
<li>glibc:<br />
for OOo&lt;=3.1: 2.2.x or higher  for OOo&gt;3.1: 2.3.2 or higher</li>
<li>C/C++ Compiler:<br />
gcc &gt;= 3.3<br />
gcc 4.2.3 is the current reference compiler</li>
<li>The X11 development libraries and header files</li>
<li>PAM including the development headers</li>
<li>bash</li>
<li>gtk2 and libtiff including the development headers</li>
</ul>
<p>Se você não estiver usando um Debian Sarge da vida, ignore e prossiga. Ah, caso você não tenha o <em>gcc</em> instalado, 1. você não devia estar aqui (<a href="http://instantbazinga.com">bazzinga!</a>) 2. já que está aqui, rode um <code>sudo apt-get install build-essential</code> e seus problemas acabaram.</p>
<p>Isso é uma mão na roda para instalar a maioria das (infinitas) dependências:</p>
<p><code>sudo apt-get build-dep openoffice.org</code></p>
<p>Como de praxe, há coisas novas em relação à versão estável que obviamente o <em>build-dep</em> não pegou:</p>
<p><code>sudo apt-get install mingw32 libgraphite3 libgraphite-dev</code></p>
<p>De volta ao seu diretório <code>openoffice</code>:</p>
<p><code>./configure --with-use-shell=bash --with-system-libs --without-system-jars --without-system-icu --without-system-agg --without-system-lpsolve --without-system-mspack --disable-mozilla --with-mingwin=/usr/bin/i586-mingw32msvc-g++</code></p>
<p>Isso diz aos scripts de compilação para utilizarem o maior número possível de libs do sistema e evitar incompatibilidades. O palavrão <code>/usr/bin/i586-mingw32msvc-g++</code> é para o <em>cross</em>-compilador mingw32, necessário para <em>cross</em>-compilar algo que não sei o que é. Ao final, veja se não ocorreram muitos <em>warnings</em> e se aparece a seguinte mensagem:</p>
<p><code>Configure completed<br />
You may now run ./bootstrap in <em>[pasta onde estão os sources]</em></code></p>
<p>Agora, com as variáveis de sistema configuradas, precisamos gerar os scripts de compilação (<em>Makefiles</em>):</p>
<p><code>./bootstrap<br />
source LinuxX86-64Env.Set.sh</code><br />
(ou <code>source LinuxX86Env.Set.sh</code> se seu processador for 32 bits)</p>
<p><strong>Agora, aos finalmentes</strong></p>
<p>Tendo configurado as variáveis de ambiente e gerado os <em>build scripts</em>, vamos à compilação:<br />
<code>time make</code></p>
<p># vá tomar um chá que vai demorar (eu fui!). O <em>time</em> antes do <em>make</em> vai marcar o tempo gasto na compilação.</p>
<p><strong>Depois do chá</strong></p>
<p>Se tudo correr bem, depois do seu chá e mais algumas horas você chegará em algo assim:</p>
<p><code>***********************************************************<br />
Successful packaging process!<br />
***********************************************************<br />
... creating log file log_DEV300_en-US.log<br />
Fri Feb  5 12:30:15 2010 (00:07 min.)<br />
real    357m1.283s<br />
user    274m55.902s<br />
sys    42m31.595s<br />
rodrigo@snowball2:~/devel/openoffice$</code></p>
<p><strong>Sim, foram 6 horas mesmo.</strong> Isso num Intel Core2 Duo T7250 2.00GHz com 4M de cache, mas utilizando apenas um núcleo. Coloque aí nos comentários os seus resultados para compararmos.</p>
<p>Caso você tenha um processador com dois ou mais núcleos, é possível fazer um <em>build</em> paralelo, que teoricamente iria mais rápido. Eu estava fazendo outras coisas no computador, então me contentei com um único <em>core</em> compilando o bichinho. No link ao final da página há instruções sobre como fazer isso, entre outros hacks.</p>
<p>Como executamos um full build, o processo gerou pacotes prontos para instalação. Os pacotes para GNU/Linux 64bit ficam em <code>~/devel/openoffice/instsetoo_native/unxlngx6.pro/OpenOffice/deb/install/</code> (para 32bits é unxlngi6.pro ou algo que o valha). Na pasta <code>en-US_download</code> há um <code>tar.gz</code> que pode ser distribuído. A pasta <code>en-US</code> possui o mesmo conteúdo, porém não compactado.</p>
<p><strong>Instalação</strong></p>
<p>Como executamos um <em>build</em> padrão, o <code>configure</code> gerou os pacotes nativos da distribuição: <em>.deb</em>. Caso você queira instalar o OO que compilou (óbvio que quer!) será necessário remover o OpenOffice que vem com a distribuição (se souber como gerar o build desempacotado e evitar isso, por favor faça um comentário).</p>
<p><code><strong>sudo apt-get remove openoffice.org-common</strong></code><br />
(Caso você não remova o open office atual, pode haver conflito de pacotes. <strong>Remova!</strong>)</p>
<p><code>cd ~/devel/openoffice/instsetoo_native/unxlngx6.pro/OpenOffice/deb/install/en-US/DEBS</code><br />
<code>sudo dpkg -i *.deb</code> <em>(pacotes do OO.org)</em><br />
<code>cd destop-integration</code><br />
<code>sudo dpkg -i *.deb</code><em> (ícones no menu do KDE/GNOME)</em></p>
<p>Lembre-se de autalizar o código (<code>hg pull &amp;&amp; hg update</code>) e recompilar (<code>make</code>) de tempos em tempos. A linha de desenvolvimento está em constante&#8230; desenvolvimento (!), e se sua intenção vai além de fazer uma graça é importante estar com o código em dia. Vale lembrar que, a princípio, os <em>rebuilds</em> devem demorar muito menos, pois apenas os arquivos modificados (e os dependentes deles) são recompilados. Veja o link abaixo para maiores informações.</p>
<p>Agora, se suas intenções são realmente corajosas e vão além de testar e reportar bugs, entre na lista de e-mails <a href="http://www.openoffice.org/servlets/SummarizeList?listName=dev">dev@openoffice.org</a>, dê uma olhada no <a href="http://qa.openoffice.org/issues/">bugtracker</a> e na página de <a href="http://wiki.services.openoffice.org/wiki/To-Dos">TODO&#8217;s</a>. O <a href="http://wiki.services.openoffice.org/wiki/Development">wiki</a> também é um ótimo ponto de partida.</p>
<p><em><strong>happy hacking!</strong></em></p>
<p>Referência:<br />
<a href="http://wiki.services.openoffice.org/wiki/Documentation/Building_Guide/Building_on_Linux">http://wiki.services.openoffice.org/wiki/Documentation/Building_Guide/Building_on_Linux</a></p>
<p><code>© 2010 Rodrigo Rodrigues da Silva. Este texto pode ser compartilhado sob os termos da licença <a href="//creativecommons.org/licenses/by-sa/2.5/”">Creative Commons By-Sa </a></code></p>
<img src="http://www.bitabit.eng.br/?ak_action=api_record_view&id=945&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.bitabit.eng.br/2010/02/06/compilando-o-openoffice/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A Natureza de uma Linguagem de Programação</title>
		<link>http://www.bitabit.eng.br/2009/11/09/a-natureza-de-uma-linguagem-de-programacao/</link>
		<comments>http://www.bitabit.eng.br/2009/11/09/a-natureza-de-uma-linguagem-de-programacao/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 10:00:42 +0000</pubDate>
		<dc:creator>Rafael Barbolo Lopes, Coop10</dc:creator>
				<category><![CDATA[Computação]]></category>
		<category><![CDATA[Coop10]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Compilador]]></category>
		<category><![CDATA[Earlang]]></category>
		<category><![CDATA[Interpretador]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[linguagem de programação]]></category>
		<category><![CDATA[linguagem dinâmica]]></category>
		<category><![CDATA[linguagem estática]]></category>
		<category><![CDATA[linguagem fortemente tipada]]></category>
		<category><![CDATA[linguagem fracamente tipada]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[Pascal]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.bitabit.eng.br/?p=718</guid>
		<description><![CDATA[Uma linguagem de programação é uma linguagem que possui sintaxe (formato) e semântica (significado), e é usada para expressar uma sequência de ações computacionais que formam um programa. Existem milhares de linguagens de programação e novas linguagens surgem frequentemente, trazendo novos paradigmas e estabelecendo novos padrões para programadores. Por isso, é importante conhecer as diferenças [...]]]></description>
			<content:encoded><![CDATA[<p>Uma linguagem de programação é uma linguagem que possui sintaxe (formato) e semântica (significado), e é usada para expressar uma sequência de ações computacionais que formam um programa.</p>
<p>Existem milhares de linguagens de programação e novas linguagens surgem frequentemente, trazendo novos paradigmas e estabelecendo novos padrões para programadores. Por isso, é importante conhecer as diferenças principais entre as linguagens e quando o uso de cada uma delas é mais adequado.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-732" title="Linguagens de Programação" src="http://www.bitabit.eng.br/wp-content/uploads/2009/11/Computer-Languages.png" alt="Linguagens de Programação" width="560" height="560" /></p>
<p>Para explorar as diferenças entre elas, serão discutidos os seguintes assuntos: o que são tipos de sistema estáticos ou dinâmicos, o que são linguagens fortemente ou fracamente tipadas e quais são os modos de execução de um programa (código executável compilado ou interpretação de código fonte).</p>
<h2><strong>Tipo estático ou dinâmico</strong></h2>
<p>As linguagens de programação podem ser classificadas de acordo com o tipo de sistema que elas usam. O tipo de sistema define como são os métodos e as variáveis da linguagem.</p>
<p>Em uma linguagem de <strong>tipo estático</strong>, o compilador deve conhecer o tipo de uma variável ou método antes da execução do programa (por isso, o tipo de uma variável normalmente é explicitamente declarado). Em uma linguagem de <strong>tipo dinâmico</strong>, o tipo de uma variável ou método é desconhecido até a execução do programa.</p>
<p>Exemplo prático de declaração de uma variável inteira com valor 10:</p>
<p>Java <em>(Tipo estático)</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span> a <span style="color: #339933;">=</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span></pre></div></div>

<p>Ruby <em>(Tipo dinâmico)</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">a = <span style="color:#006666;">10</span></pre></div></div>

<p>Exemplos de linguagens de tipo estático: <strong>Java</strong>, <strong>Pascal</strong>, <strong>C</strong>, <strong>C#</strong> e <strong>C++</strong>.<br />
Exemplos de linguagens de tipo dinâmico: <strong>Python</strong>, <strong>Javascript</strong>, <strong>Perl</strong> e <strong>Ruby</strong>.</p>
<h2>Fortemente ou fracamente tipada</h2>
<blockquote><p>Um objeto é determinado pelo que ele pode fazer e não pelo seu tipo.</p>
<p><em>(tipo fraco)</em></p></blockquote>
<p>Um conceito que muita gente confunde com tipo dinâmico ou estático é se uma linguagem é fortemente ou fracamente tipada.</p>
<p>A definição de fortemente ou fracamente tipada tem relação com quão profundamente um sistema verifica as operações que podem ser feitas sobre uma estrutura de dados.</p>
<p>Em linguagens fortemente tipadas, as operações são aplicadas para estruturas de dados bem definidas e cada operação define os tipos de dados que deve receber. Em linguagens fracamente tipadas, as operações são aplicadas para qualquer estrutura de dados; porém, essas operações podem falhar em tempo de execução caso a estrutura não suporte a operação.</p>
<p>Em uma linguagem fortemente tipada o sistema tem garantias sobre o comportamento do programa. Em uma linguagem fracamente tipada, essa garantia não existe porque uma estrutura de dados pode receber novas funcionalidades em tempo de execução.</p>
<p>Exemplo de uma função que realiza a soma de dois números, um inteiro e um ponto flutuante, e devolve um resultado em ponto flutuante:</p>
<p>Java <em>(Fortemente tipada)</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">float</span> soma<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">float</span> a, <span style="color: #000066; font-weight: bold;">int</span> b<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">return</span> a <span style="color: #339933;">+</span> b<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Ruby <em>(Fracamente tipada)</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> soma <span style="color:#006600; font-weight:bold;">&#40;</span>a, b<span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#0000FF; font-weight:bold;">return</span> a <span style="color:#006600; font-weight:bold;">+</span> b
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Em Java, os tipos de dados que a operação soma suporta estão bem definidos (<strong>a</strong> é float e <strong>b</strong> é int) e o tipo de dado que a operação devolve também (<strong>resultado</strong> é float).</p>
<p>Em Ruby, a função soma pode receber quaisquer tipos de dados para <strong>a</strong> e <strong>b</strong>, e a operação será aplicada sobre esses tipos, devolvendo um resultado de tipo desconhecido:</p>
<ul>
<li>se <strong>a</strong> e <strong>b</strong> forem String, o resultado será uma String concatenada de <strong>a</strong> e <strong>b</strong>;</li>
<li>se <strong>a</strong> e <strong>b</strong> forem inteiros, o resultado será um inteiro que representa a soma <strong>a</strong>+<strong>b</strong>;</li>
<li>se <strong>a</strong> for um float e <strong>b</strong> um inteiro, o resultado será um float que representa a soma <strong>a</strong>+<strong>b</strong>.</li>
</ul>
<p>Vale a pena observar que em linguagens fracamente tipadas, a possibilidade de erros em tempo de execução é muito maior. Por isso, é muito recomendável o uso de testes para verificar erros antes de colocar um sistema em produção.</p>
<p>Exemplos de linguagens fortemente tipadas: <strong>Java</strong>, <strong>Pascal</strong>, <strong>C</strong> e <strong>C++</strong>.<br />
Exemplos de linguagens fracamente tipadas: <strong>Perl</strong> e <strong>Ruby</strong>.</p>
<h2>Linguagens compiladas ou de script</h2>
<p>Outro modo de classificar uma linguagem é se ela precisa de um passo de compilação antes de executar. Se ela precisa deste passo, ela é chamada de linguagem compilada. Senão, é chamada de linguagem de script.</p>
<p>Um <strong>compilador</strong> de uma linguagem compilada gera um código executável a partir do código fonte escrito pelo programador. O código executável não possui o conteúdo do código fonte, portanto programas de linguagens compiladas são melhores de distribuir quando o programador não quer que seu código seja público.</p>
<p>Uma linguagem de script normalmente não necessita de um passo específico de compilação para executar um programa. O código fonte escrito pelo programador pode ser executado diretamente por um <strong>intepretador</strong>. Esse interpretador lê trechos do código fonte em tempo de execução, converte em um formato que o computador consegue ler (compilação em tempo de execução) e realiza sua execução.</p>
<p>Linguagens de script costumam ter performance inferior a linguagens compiladas pois exigem mais passos para rodar um programa em tempo de execução. Porém, elas são muito mais produtivas, pois eliminam a necessidade de compilar o código fonte toda vez que uma alteração é feita.</p>
<p>Quem já mexeu no código fonte de uma aplicação web sabe como é muito melhor trabalhar com linguagem interpretada: você faz uma alteração no código, salva e pode verificá-la de imediato.</p>
<p>Quando usa uma linguagem compilada, como Java, você tem que compilar o código fonte (que pode levar um tempo considerável, dependendo do sistema), fazer o upload do código para o servidor web e só então verificar a alteração.</p>
<p>Exemplos de linguagens compiladas: <strong>Java</strong>, <strong>C</strong>, <strong>C++</strong> e <strong>C#</strong>.<br />
Exemplos de linguagens de script: <strong>PHP</strong>, <strong>Perl</strong>, <strong>Python</strong> e <strong>Ruby</strong>.</p>
<h2>Considerações finais</h2>
<p>Este artigo apresenta conceitos básicos sobre linguagens de programação que podem ser decisivos para a escolha de uma.</p>
<p>Para ambientes corporativos, em que uma das exigências principais é a estabilidade e performance do sistema, uma linguagem de tipo estático, fortemente tipada e compilada, como Java, é uma boa escolha.</p>
<p>Para uma aplicação que sofre muitas alterações e que exige alta performance (como por exemplo o Twitter), uma combinação de linguagens de script e compiladas é uma boa escolha. Por exemplo, combinar Ruby ou Python com C, ou usar uma linguagem que suporta tanto interpretação quanto compilação, como Scala.</p>
<p>Para cada situação existe um tipo de linguagem de programação mais adequada. O ideal é não ficar preso aos mesmos paradigmas e nunca achar que a linguagem de programação preferida é a melhor para resolver qualquer problema.</p>
<p>Deixo a dica de um amigo meu, <a href="http://twitter.com/emiyake">Edmar Miyake</a>, para ficar atualizado com os novos paradigmas de programação: estudar uma nova linguagem de programação por ano.</p>
<img src="http://www.bitabit.eng.br/?ak_action=api_record_view&id=718&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.bitabit.eng.br/2009/11/09/a-natureza-de-uma-linguagem-de-programacao/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>MegaMini tutorial para Mac newbies – produtividade</title>
		<link>http://www.bitabit.eng.br/2009/11/06/megamini-tutorial-para-mac-newbies-%e2%80%93-produtividade/</link>
		<comments>http://www.bitabit.eng.br/2009/11/06/megamini-tutorial-para-mac-newbies-%e2%80%93-produtividade/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 10:00:34 +0000</pubDate>
		<dc:creator>Eduardo Russo, Coop10</dc:creator>
				<category><![CDATA[Coop10]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[ajuda]]></category>
		<category><![CDATA[atalho]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.bitabit.eng.br/?p=352</guid>
		<description><![CDATA[Segunda parte dos tutoriais para novatos no Mac OS X. O assunto abordado é produtividade, com várias dicas de como utilizar os diferenciais do Mac OS X ao seu favor.]]></description>
			<content:encoded><![CDATA[<p>Dos aspectos que geralmente são falados sobre a &#8220;superioridade&#8221; do Mac OS X, como segurança (há controvérsias) e estabilidade (fato) do Mac OS X, o aspecto que realmente me faz escolhe-lo dentre todos os outros SOs, são questões relacionadas à sua interface.</p>
<p>Algo que nada tem a ver com o <em>kernel</em> do sistema ou com sua base em Unix. Coisas que que muitos chamam de &#8220;firula&#8221; ou <em>eye candy</em>, eu chamo de melhoria na produtividade, facilidade de uso e permitir que você se foque no que é importante: usar o computador como uma ferramenta, um meio,  e não um fim.</p>
<h1>Teclas de atalho</h1>
<p>No site da Apple, existe uma <a href="http://support.apple.com/kb/HT1343" target="_blank">página com todas os possíveis atalhos de teclados</a>, mas para um usuário novato, é difícil encontrar o que se está procurando, então vou colocar o que uso no meu dia a dia e que melhora minha produtividade no OS X.</p>
<h1>Os Fs</h1>
<p>Se você comprou um Mac novo, provavelmente suas teclas de função já vem com ícones auto explicativos sobre sua primeira funcionalidade no centro da tecla. A segunda é como tecla de função e para funcionar assim, deve-se apertar a tecla <strong>fn</strong> junto &#8211; do lado do DELETE nos teclados grandes e abaixo do SHIFT ESQUERDO nos pequenos.</p>
<p>F1 e F2 &#8211; diminui e aumenta o brilho da tela<br />
F3 &#8211; Ativa o <em>Exposé</em> para todos aplicativos<br />
F4 &#8211; <em>Widgets<br />
</em>F7, F8 e F9 &#8211; volta, play/pause e avança músicas no iTunes e filmes no QuickTime<br />
F10, F11 e F12 &#8211; mute, diminui volume e aumenta volume<br />
Tecla ao lado do F12 &#8211; ejeta CDs</p>
<h1>Abrindo programas</h1>
<p>O <a href="http://www.bitabit.eng.br/2009/11/05/comentario-do-spotlight-e-seu-amigo/" target="_blank"><em>Spotlight</em> é seu melhor amigo</a>! Pressione CMD+ESPAÇO para abri-lo. Digite, por exemplo &#8220;pref&#8221; e em segundos poderá acessar as preferências do sistema! Isso faz você não precisar encher seu <em>dock</em> com milhares de programas, mas apenas alguns mais importantes.</p>
<div id="attachment_667" class="wp-caption aligncenter" style="width: 245px"><img class="size-full wp-image-667 " title="spotlight" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/spotlight.png" alt="Bem mais amigo que o cachorro do Windows XP!" width="235" height="358" /><p class="wp-caption-text">Bem mais amigo que o cachorro do Windows XP!</p></div>
<h1>Dock</h1>
<p>O Dock é o lugar onde você deve deixar os programas que mais usa, já que, para qualquer outro, você tem a opção de usar o Spotlight facilmente.</p>
<p>Para colocar um programa no Dock, basta arrastá-lo para cima dele. Para tirar, jogue &#8220;para fora&#8221;. Quer saber onde está um programa ou pasta do Dock?  Segure <strong>CMD</strong> e clique nele!</p>
<p>Clicando com o botão direito em um ícone no Dock, você tem algumas opções básicas para todos os programas e algumas específicas (como no iTunes, por exemplo).</p>
<div id="attachment_661" class="wp-caption aligncenter" style="width: 156px"><img class="size-full wp-image-661 " title="opcoes do dock" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/opcoes-do-dock.png" alt="Opções básicas do dock" width="146" height="86" /><p class="wp-caption-text">Opções básicas do dock</p></div>
<p>Uma outra dica em relação ao Dock é colocar &#8220;separadores&#8221; para agrupar tipos específicos de aplicativos. Isso te ajuda a organizar seus programas do Dock. Para saber mais, dê uma olhada <a href="http://www.bitabit.eng.br/2009/10/25/duas-funcoes-do-dock-que-a-apple-escondeu-das-preferencias/" target="_blank">nesse <em>post</em></a>.</p>
<p>Falarei um pouco mais dessa opção de <strong>Abrir no Início da Sessão</strong> daqui a pouco.</p>
<h1>Preferências do Sistema</h1>
<p>Preferências do sistema (ou System Preferences) é o similar ao Painel de Controle do Windows.</p>
<p>Inclusive, se você vem do Windows, pode buscar o que você quer alterar lá usando o nome que você conhecia no windows e ele vai filtrando e te mostrando onde isso fica!</p>
<div id="attachment_650" class="wp-caption aligncenter" style="width: 504px"><img class="size-full wp-image-650 " title="busca nas preferencias do sistema" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/busca-nas-preferencias-do-sistema.png" alt="FireWall ou FireWire… termine a busca e ele te mostra onde configurar." width="494" height="379" /><p class="wp-caption-text">FireWall ou FireWire… termine a busca e ele te mostra onde configurar.</p></div>
<h1>Abrindo djá</h1>
<p>Agora que você conhece as Preferências do Sistema, vamos começar a usá-la.</p>
<p>Para abrir programas logo quando liga o computador, você pode usar a opção <strong>Abrir no Início da Sessão</strong> do <em>Dock</em>, é o jeito mais fácil e que fica bem na sua cara, mas, nem todo programa roda como um programa, mas sim como um serviço &#8211; o Dropbox e o Google Notifier são exemplos disso.</p>
<p>Para alterar isso, abra as <strong>Preferências do Sistema</strong> e vá em <strong>Contas</strong>.</p>
<div id="attachment_652" class="wp-caption aligncenter" style="width: 459px"><img class="size-full wp-image-652 " title="busca por contas nas preferencias do sistema" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/busca-por-contas-nas-preferencias-do-sistema.png" alt="Contas fica aqui!" width="449" height="384" /><p class="wp-caption-text">Contas fica aqui!</p></div>
<p>Depois de entrar em <strong>Contas</strong>, clique na aba <strong>Itens Login</strong>. Basta clicar no <strong>+</strong> e adicionar o programa que deseja iniciar junto com o SO. Ah, se você não descobriu ainda, o lugar de programas no OS X é o diretório <strong>Aplicativos</strong> e ele, por padrão, já está nos ítens de acesso rápido do Finder.</p>
<div id="attachment_648" class="wp-caption aligncenter" style="width: 459px"><img class="size-full wp-image-648 " title="adicionando programas para iniciar junto com o mac os x" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/adicionando-programas-para-iniciar-junto-com-o-mac-os-x.png" alt="O seu botão + não ficará vermelho, mas clique nele mesmo assim!" width="449" height="367" /><p class="wp-caption-text">O seu botão + não ficará vermelho, mas clique nele mesmo assim!</p></div>
<h1>Entendendo e configurando suas janelas do Finder</h1>
<p>Antes de tudo, vamos entender uma janela do Finder.</p>
<p style="text-align: center;">
<div id="attachment_666" class="wp-caption aligncenter" style="width: 600px"><img class="size-full wp-image-666   " title="quem e quem nas janelas do finder" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/quem-e-quem-nas-janelas-do-finder.png" alt="Cada um no seu quadrado!" width="590" height="368" /><p class="wp-caption-text">Cada um no seu quadrado!</p></div>
<div class="mceIEcenter">
<dl id="attachment_319" class="aligncenter" style="width: 624px;"></dl>
</div>
<p>Começando pelos <strong>Modos de Visualização</strong>, existem quatro formas de navegar pelo Finder: ícones, listas, colunas e Cover Flow.</p>
<p>Ícones e listas, você já deve conhecer de outros SO. Cover Flow é lindão e mostra ícones gigantescos pra agradar seus olhos, mas é a visualização por colunas que realmente ajudam na produtividade. Para usar essa forma de visualização, basta clicar no ícone dela (o terceiro)! Se você deixar o mouse em cime da cada um dos ícones por um tempo, o OS X te fala quem é quem.</p>
<p>Caso esteja num diretório e o acima dele não esteja acessível pelo scrooll, basta usar a combinação <strong>CMD+cima</strong> para ir para o diretório superior.</p>
<p>A <strong>Barra de Ferramentas</strong> pode ser alterada com os programas úteis em uma janela do Finder. Você pode adicioná-los arrastando e soltando e reorganizá-los clicando com o botão direito e indo em <strong>Personalizar Barra de Ferramentas&#8230;</strong> Para retirar, clique com o botão direito e depois em <strong>Remover Item</strong>. Deixo aí, por exemplo, um programa para renomear arquivos em sequência.</p>
<p>A <strong>busca</strong> faz o mesmo que o Spotlight, mas, depois de feita uma busca, você pode dizer se quer no computador inteiro ou só na pasta que você estava e ainda pode salvar suas buscas &#8211; elas ficarão em <em>Smart Folders</em> que podem ser colocadas na parte <strong>busca</strong> dos itens de acesso rápido.</p>
<p style="text-align: center;">
<div id="attachment_651" class="wp-caption aligncenter" style="width: 600px"><img class="size-full wp-image-651   " title="busca por ARM na pasta da Poli" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/busca-por-ARM-na-pasta-da-Poli.png" alt="Busca por “ARM” na pasta POLI" width="590" height="369" /><p class="wp-caption-text">Busca por “ARM” na pasta POLI</p></div>
<p>Na <strong>Bara Lateral</strong> você pode (e deve) colocar os diretórios que mais usa, arrastando e soltando. Esses diretórios estarão à sua disposição em todo diálogo de salvar de todo programa que usa a interface do OS X, facilitando bastante sua vida &#8211; programas que usam X11 e Java nem sempre conseguem usar isso.</p>
<p>Para tirar um diretório de lá, clique nele com o botão direito<strong> </strong>e em<strong> Remover da Barra Lateral</strong>, ou, ainda, pode arrastá-lo para fora&#8230; poof!<strong><br />
</strong></p>
<h1>Alternar programas e janelas</h1>
<p>Existem algumas formas de trocar entre programas em execução, usando o ícone do programa no <em>dock</em> (nunca uso), com CMD+TAB / CMD+~ e com o Exposé.</p>
<p>Pressionando <strong>CMD+TAB</strong>, surge na tela o <em>application switcher</em> e você pode escolher qual programa executar apenas com o teclado. Usando <strong>CMD+TAB</strong> para ir para o próximo (à direita) programa e <strong>CMD+SHIFT+TAB</strong> ou <strong>CMD+~</strong> para ir para o anterior.</p>
<p>Estando no programa escolhido, você pode ainda se deparar com o fato de que a janela em primeiro não é a que você queria. Basta usar <strong>CMD+~</strong> para alterar entre as janelas do mesmo programa &#8211; sei lá porque diabos, nem todo programa funciona corretamente.</p>
<p>A outra forma é usando o Exposé. Se você está seguindo esse tutorial, deve ter apertado F3 para ver o que acontece. A função do F3 é uma das formas do Exposé funcionar, existem outras duas ainda: mostrar as janelas do programa atual e mostrar o <em>desktop</em>. No Snow Leopard, isso vai melhorar ainda mais, mas como ele só sai daqui a dois dias, não tenho um para explicar detalhadamente.</p>
<p>Indo nas preferências do sistema (<strong>CMD+ESPAÇO</strong> e <strong>pref</strong>), vá em <strong>Exposé e Spaces</strong> &#8211; sim, é uma misturéba de português e inglês inacreditável!</p>
<div id="attachment_653" class="wp-caption aligncenter" style="width: 459px"><img class="size-full wp-image-653 " title="busca por expose nas preferencias do sistema" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/busca-por-expose-nas-preferencias-do-sistema.png" alt="Está aqui ó!!!" width="449" height="384" /><p class="wp-caption-text">Está aqui ó!!!</p></div>
<p>Essa é a maneira que deixo as coisas por aqui. É uma questão de ir testando e ver de que forma você se adapta melhor. Minha configuração é para mouse, já que tenho um desktop. Seria legal um adendo de algum usuário dos novos <em>notebooks</em> com <em>multitouch</em>.</p>
<div id="attachment_649" class="wp-caption aligncenter" style="width: 459px"><img class="size-full wp-image-649 " title="alterando as configuracoes do expose e spaces" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/alterando-as-configuracoes-do-expose-e-spaces.png" alt="Opções do Exposé e do Spaces (que eu não consigo usar, apesar de acreditar no meu chefe)" width="449" height="452" /><p class="wp-caption-text">Opções do Exposé e do Spaces (que eu não consigo usar, apesar de acreditar no meu chefe)</p></div>
<p>Brinque um pouco com isso e veja o que cada um faz, escolha a configuração que mais te agrade. Eu, particularmente, nunca ativo o Exposé pelo teclado, sempre pelo mouse ou pelos cantos da tela.</p>
<h1>Ejetando discos e pen drives</h1>
<p>Cade o &#8220;remover hardware com segurança&#8221; dessa joça? Não tem!</p>
<p>No caso de CDs ou DVDs, basta pressionar a tecla ao lado do F12 e ele ejeta.</p>
<p>Para <em>pen drives</em>, arraste-o para a lixeira. Repare que assim que você começa arrastá-lo, o ícone muda para um <em>eject</em>.</p>
<div id="attachment_656" class="wp-caption aligncenter" style="width: 294px"><img class="size-full wp-image-656" title="lixeira mutante do finder" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/lixeira-mutante-do-finder.png" alt="Lixeira mutante" width="284" height="350" /><p class="wp-caption-text">Lixeira mutante</p></div>
<h1>Fechar janela ≠ fechar programa</h1>
<p>Acostume-se com e, como a maioria dos usuários de Mac, aprecie o fato de que fechar a janela de um programa não fecha o programa. Isso pode parecer imbecil e anti produtivo, mas não é.</p>
<p>Testando entre vários clientes de Twitter, achei um que me agradou bastante, mas ele fechava o programa quando eu fechava a janela e isso pra mim é insuportável! Não quero ter que minimizar um programa pra sumir com ele da minha frente.</p>
<p>Então, para <strong>fechar uma janela</strong>, aperte <strong>CMD+W</strong>. Para <strong>fechar um programa</strong>, <strong>CMD+Q</strong>.</p>
<p>Há ainda a possibilidade de &#8220;<strong>esconder</strong>&#8221; um programa, usando <strong>CMD+H</strong> ou segurando <strong>OPTION</strong> e clicando em outro programa.</p>
<p>Finalmente, para <strong>minimizar</strong> um programa, use <strong>CMD+M</strong>.</p>
<h1>Widgets</h1>
<p>Widgets são &#8220;mini programas&#8221; que rodam em <em>background</em>. Desde mostrar (e copiar para o iTunes) a letra de uma música (ou não, se depender da RIAA), fazer conversões de valores e unidades de medidas, fazer contas etc.</p>
<p>Pretendo fazer um outro MegaMini tutorial sobre Widgets que acho interessantes, então estou apenas citando que isso é uma coisa que pode te ajudar na produtividade com seu Mac.</p>
<h1>Ícones</h1>
<p>Uma coisa aparentemente imbecil, mas que ajuda na organização é utilização de ícones personalizados. Ajuda, na hora de selecionar, por exemplo, o diretório da POLI, se ele for diferente do resto. Para isso, ou crie seus ícones ou baixe em sites especializados &#8211; é só procurar por &#8220;OS X icons&#8221; ou perguntar pra mim bons sites disso.</p>
<p>Selecione a pasta com o ícone que você quer usar e use o comando <strong>CMD+OPTION+I</strong>, isso abrirá as <strong>Informações</strong> da pasta selecionada. Clique no ícone e pressione <strong>CMD+C</strong> para copiar. Vá na pasta que você quer passar (a janela com as informações usando CMD+OPTION+I automaticamente mostra informações da selecionada, para mostrar &#8220;fixamente&#8221; só de uma por vez, use <strong>CMD+I</strong>), clique no ícone e cole com <strong>CMD+V</strong>.</p>
<div id="attachment_662" class="wp-caption aligncenter" style="width: 177px"><img class="size-full wp-image-662 " title="pasta da poli com icone personalizado" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/pasta-da-poli-com-icone-personalizado.png" alt="Pasta POLI com ícone personalizado" width="167" height="470" /><p class="wp-caption-text">Pasta POLI com ícone personalizado</p></div>
<p>Você pode <a href="http://dl.getdropbox.com/u/2651005/poliIcons/poliIcons.zip" target="_blank">baixar esse ícone</a> (e um que fiz antes desse) pronto pra usar no OSX. Tem uma versão .ico pra Windows tb no arquivo.</p>
<div>
<dl id="attachment_320" style="width: 177px;"></dl>
</div>
<h1>Etiquetas</h1>
<p>Outra aparente besteira que ajuda na organização. Clique em qualquer pasta ou arquivo e <strong>Etiquetas</strong> estará lá, na sua cara. Escolha uma cor para cada tipo de coisa.</p>
<div id="attachment_658" class="wp-caption aligncenter" style="width: 144px"><img class="size-full wp-image-658 " title="opcoes de etiquetas" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/opcoes-de-etiquetas.png" alt="Escolha a sua!" width="134" height="184" /><p class="wp-caption-text">Escolha a sua!</p></div>
<p>Uso, por exemplo da seguinte forma: se estou fazendo um trabalho para a Poli, lendo várias referências ao mesmo tempo, quero ter um controle de qual já lí totalmente, qual não lí e qual estou lendo. Uso etiquetas para sinalizar isso.</p>
<div id="attachment_655" class="wp-caption aligncenter" style="width: 169px"><img class="size-full wp-image-655 " title="lista de pastas com diversas etiquetas" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/lista-de-pastas-com-diversas-etiquetas.png" alt="Pasta da POLI na reta final!" width="159" height="137" /><p class="wp-caption-text">Pasta da POLI na reta final!</p></div>
<p>Pros nerds de plantão, vale citar que as etiquetas fazem parte do File System do Mac OS X (HFS+) e &#8220;gastam&#8221; 3 bits para isso.</p>
<p>Outra curiosidade, é que as etiquetas existiam no Mac OS 9, mas não na primeira versão do Mac OS X e digo, fazia falta e acabou voltando.</p>
<h1>Janelas, pastas e tudo mais</h1>
<p>Rapidamente, algumas outras teclas de atalho que uso bastante no <em>Finder</em>:</p>
<p>CMD+N &#8211; abre uma nova janela<br />
CMD+W &#8211; fecha a janela<br />
CMD+SHIFT+N &#8211; cria uma nova pasta<br />
RETURN &#8211; quando tiver um arquivo ou pasta selecionado, para renomear arquivo<br />
CMD+O ou CMD+baixo &#8211; abre o arquivo ou pasta<br />
CMD+cima &#8211; sobe um nível de diretório<br />
CMD+DELETE &#8211; apagar o(s) arquivo(s) selecionado(s)<br />
CMD+SHIFT+DELETE &#8211; limpar a lixeira<br />
CMD+OPTION+ESC &#8211; para forçar encerrar um aplicativo (A.K.A. CONTROL ALT DEL do Mac)<br />
CONTROL+EJECT &#8211; opções de desligamento do computador</p>
<p>Isso finaliza esse MegaMini tutorial sobre produtividade, e  com <em>Exposé</em>, <em>Widgets</em> e <em>Spotlight</em>, explica porque  Mac + OS X é considerada, por muitos, a combinação com o melhor custo benefício em termos de produtividade.</p>
<h1><em>Preview</em> em uma &#8220;barrada&#8221;</h1>
<p>Uma das coisas mais fodas surgidas no Leopard foi a introdução do <a href="http://www.apple.com/macosx/what-is-macosx/quick-look.html" target="_blank">Quick Look</a>. Selecionando qualquer arquivo e pressionando a barra de espaço, você tem um <em>preview</em> instantâneo do arquivo, sem precisar abrir nenhum programa!</p>
<p>O OS X já vem com possibilidade de <em>preview</em> para diversos formatos de arquivos (como vídeos e imagens) e ainda possibilita que você instale plugins para visualização de outros formatos arquivos. Para isso , basta baixar os plugins em sites como os da lista (gentilmente cedida, sem autorização por Filipe M. S. de Campos) abaixo:</p>
<p><a href="http://www.qlplugins.com/" target="_blank">QLPlugins</a><br />
<a href="http://www.quicklookplugins.com/" target="_blank">QuickLook Plugins List</a><br />
<a href="http://www.mactricksandtips.com/2008/02/ultimate-list-of-quicklook-plugins.html" target="_blank">Mac Tricks and Tips</a><br />
<a href="http://www.usingmac.com/2008/10/29/time-saver-quicklook-plugins" target="_blank">Usingmac.com</a><br />
<a href="http://www.macworld.com/article/131753/2008/01/quicklookplugins.html" target="_blank">Macworld</a></p>
<p>Depois de baixados, basta copiar os arquivos com extensão <strong>.qlgenerator</strong> para a pasta <strong>/Biblioteca/QuickLook</strong>.</p>
<div id="attachment_663" class="wp-caption aligncenter" style="width: 576px"><img class="size-full wp-image-663 " title="pasta dos plugins do quick look" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/pasta-dos-plugins-do-quick-look.png" alt="Alguns plugins que tenho instalados em casa" width="566" height="320" /><p class="wp-caption-text">Alguns plugins que tenho instalados em casa</p></div>
<p>Um exemplo, de um plugin que instalei, é um que mostra o conteúdo de arquivos comprimidos.</p>
<div id="attachment_664" class="wp-caption aligncenter" style="width: 500px"><img class="size-full wp-image-664 " title="plugin do quick look para ver conteudo de arquivos compactados" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/plugin-do-quick-look-para-ver-conteudo-de-arquivos-compactados.png" alt="Quick Look de um .zip em ação!" width="490" height="407" /><p class="wp-caption-text">Quick Look de um .zip em ação!</p></div>
<h1>Organização da visualização por colunas</h1>
<p>Um pouco acima, disse que a visualização por colunas é a mais prática de navegar, mas deixei de fora algumas dicas importantes.</p>
<p>Que você pode alterar a largura de cada coluna individualmente, bastando arrastar os &#8220;dois tracinhos&#8221; que ficam na parte de baixo dela, ou ainda, segurando <strong>OPTION</strong>, fazer com que todas mudem sua largura ao mesmo tempo.</p>
<p>Se você for no Finder agora, abrir uma nova janela (<strong>CMD+N</strong>), alterar seu tamanho, posição e largura das colunas e fechá-la, sempre que abrir uma nova ela estará desse mesmo jeito. Faço isso então pra deixar no lugar que quero, sem <em>scrooll</em> horizontal e com colunas de largura suficiente para dar para ler o nome da maioria dos arquivos e para que caibam um determinado número de colunas.</p>
<p style="text-align: center;">
<div id="attachment_669" class="wp-caption aligncenter" style="width: 600px"><img class="size-full wp-image-669   " title="visualizacao por colunas" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/visualizacao-por-colunas.png" alt="Minha “janela padrão”" width="590" height="369" /><p class="wp-caption-text">Minha “janela padrão”</p></div>
<p>Outra coisa interessante é alterar como as colunas (ou, se prefere outro tipo de visualização) são organizadas. Para isso, vá em uma janela qualquer (ou ainda no <em>desktop</em>) e pressione <strong>CMD+J</strong> para ver as opções de visualização.</p>
<div id="attachment_659" class="wp-caption aligncenter" style="width: 139px"><img class="size-full wp-image-659 " title="opcoes de visualizacao de uma pasta visualizada por colunas" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/opcoes-de-visualizacao-de-uma-pasta-visualizada-por-colunas.png" alt="Opções de visualização de uma pasta visualizada por colunas" width="129" height="281" /><p class="wp-caption-text">Opções de visualização de uma pasta visualizada por colunas</p></div>
<div id="attachment_660" class="wp-caption aligncenter" style="width: 139px"><img class="size-full wp-image-660 " title="opcoes de visualizacao do desktop" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/opcoes-de-visualizacao-do-desktop.png" alt="Opções de visualização do desktop" width="129" height="252" /><p class="wp-caption-text">Opções de visualização do desktop</p></div>
<h1>Preferências</h1>
<p>No OS X, além de você ter a barra de aplicativos fixa lá em cima, algo que um usuário vindo de outros SOs geralmente estranha, acaba sendo uma facilidade: você sempre sabe onde encontrar as coisas.</p>
<p>Um exemplo são as preferências dos programas. Em outros SOs as preferências de um programa podem estar em Arquivo, Opções, Ajuda etc. No OS X, as preferências estarão, em 99% dos casos no mesmo lugar, com a mesma tecla de atalho. Não afirmo que todos programas seguem a regra, porque existem casos em que as pessoas gostam de fugir do padrão e inclusive de ignorar que o OS X tem uma barra fixa – sim, Cinema 4D, é com você que eu estou falando.</p>
<div id="attachment_654" class="wp-caption aligncenter" style="width: 364px"><img class="size-full wp-image-654 " title="cinema 4d foge do padrao do mac os x" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/cinema-4d-foge-do-padrao-do-mac-os-x.png" alt="Cinema 4D não sabe brincar!" width="354" height="122" /><p class="wp-caption-text">Cinema 4D não sabe brincar!</p></div>
<p>Tirando as exceções, a regra é a seguinte: preferências ficam no menu com o nome do programa (o primeiro depois do Apple Menu) e podem ser acessadas com <strong>CMD+, </strong>.</p>
<div id="attachment_657" class="wp-caption aligncenter" style="width: 206px"><img class="size-full wp-image-657 " title="menu firefox do firefox" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/menu-firefox-do-firefox.png" alt="Menu Firefox do Firefox" width="196" height="178" /><p class="wp-caption-text">Menu Firefox do Firefox</p></div>
<p>O Finder, por exemplo, tem várias opções que valem dar uma olhada, como que tipos de mídias devem aparecer no <em>desktop</em> e na barra lateral, o nome das etiquetas e como deve se comportar a <strong>navegação com o mouse</strong>.</p>
<div id="attachment_665" class="wp-caption aligncenter" style="width: 240px"><img class="size-full wp-image-665   " title="preferencias do finder" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/preferencias-do-finder.png" alt="Preferências do Finder" width="230" height="278" /><p class="wp-caption-text">Preferências do Finder</p></div>
<h1>Navegando com o mouse</h1>
<p>Esses dias, um novo usuário de OS X perguntou sobre o uso do CMD+X no Finder e, não, isso &#8220;<em>non exsiste</em>&#8220;. Sei lá porque, nunca foi implementado a opção de recortar e colar arquivos e diretórios no Finder. Por outro lado, existe uma forma muito fácil e ágil de se mover / copiar / criar atalhos no OS X.</p>
<p>Se uma imagem vale mais que mil palavras, um vídeo vale mais que 1000 imagens:</p>
<p><object width="425" height="350"><param name="movie" value="L4NRkYJO6pw"></param><param name="wmode" value="transparent" ></param><embed src="http://www.youtube.com/v/L4NRkYJO6pw" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object></p>
<p>Nesse vídeo, demonstrei como você pode ir navegando pelas pastas apenas deixando o mouse em cima do lugar que quer &#8220;entrar&#8221;. Mosrei também que, segurando por algum tempo o ícone da pasta ou arquivo que aparece no centro das janelas do Finder, você consegue movê-los.</p>
<h1>Mostrar conteúdo do pacote? WTF!!!</h1>
<p>Faça um teste: Clique em qualquer programa que está no seu dock enquanto segura <strong>CMD</strong>. Isso te levará para o lugar onde o programa está salvo. Agora clique com o botão direito nele e selecione <strong>Mostrar Conteúdo do Pacote</strong>.</p>
<p>Pacote?</p>
<p>Sim, no OS X, o que você acredita ser um programa é, na verdade, um pacotão de coisas, desde preferências, imagens, ícones, tudo está nesse pacote com extensão &#8220;.app&#8221;.</p>
<p>Isso é uma maneira de, por exemplo, fuçar em programas, salvar ícones dos programas e até alterar certas configurações e imagens. Não sei se tem muito a ver com &#8220;produtividade&#8221;, mas, não sei onde encaixar essa &#8220;curiosidade&#8221;, então foi aqui mesmo.</p>
<h1>Parando tudo</h1>
<p>Outro atalho de teclado que funciona na maioria dos programas é o <strong>CMD+.</strong></p>
<p>Esse atalho interrompe o que quer que o programa esteja<strong> </strong>fazendo, desde abrir um arquivo até carregar uma página no browser.<strong><br />
</strong></p>
<h1>Tirando fotos</h1>
<p>Esse tem a ver, inclusive com esses tutoriais &#8220;ilustrados&#8221;. Tirar fotos no OS X não é tão &#8220;fácil&#8221; quanto em outros SOs que usam o botão &#8220;PrintScreen&#8221; do teclado. Primeiro, porque teclados de Macs não tem esse botão, segundo… não tem segundo.</p>
<p>Existem três formas de se tirar uma foto: da tela inteira, de uma região selecionada ou de uma janela / menu. E ainda mais, a opção de salvar a imagem diretamente ou apenas deixá-la na área de transferência.</p>
<p>Para capturar a tela inteira, basta pressionar <strong>CMD+SHIFT+3</strong>.</p>
<p>De uma região, <strong>CMD+SHIFT+4</strong> e selecione a região com o mouse e pronto.</p>
<p>E, para tirar de uma janela (o que inclui sua sombra), depois de pressionar <strong>CMD+SHIFT+4</strong>, pressione a <strong>BARRA DE ESPAÇO</strong>. A &#8220;cruz&#8221; vai virar uma &#8220;mão&#8221;. Posicione-a na janela que desejar (ela fica azulada) e clique com o mouse.</p>
<p>Dessa maneira, PNGs serão salvos no <em>desktop</em>. Para apenas deixar na área de transferência, junto com <strong>CMD+SHIFT</strong>, pressione o <strong>CTRL</strong>.</p>
<h1>Pastas e pilhas nas docas</h1>
<p>Outra coisa legal que surgiu no Leopard, foram os <em>stacks</em> no Dock. Se você arrastar uma pasta para o Dock, você poderá ver seu conteúdo sem precisar a abrir a pasta.</p>
<div id="attachment_668" class="wp-caption aligncenter" style="width: 597px"><img class="size-full wp-image-668  " title="stack da poli" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/stack-da-poli.png" alt="Pilha da Poli nas minhas docas. Traduções me dão medo!" width="587" height="349" /><p class="wp-caption-text">Pilha da Poli nas minhas docas. Algumas traduções me dão medo, que bom que a Apple não traduziu isso!</p></div>
<h1>Lindo, mas cadê o botão de maximizar dessa joça?</h1>
<p>Não tem, porque você não precisa dele!</p>
<p>Acostume-se a poder ver todos os programas rodando ao mesmo tempo. É estranho no começo, mas depois que você se acostuma (ok, pode ser que você sempre ache isso uma droga) passa a ser natural não maximizar os programas. Até existem programinhas que fazem esse papel, mas recomendo que antes de tudo, tente viver um tempo sem isso&#8230;</p>
<h1>Dormindo e desligando o Mac</h1>
<p>Tudo muito bom, fez tudo que queria e agora quer desligar seu Mac.</p>
<p>Em primeiro lugar, isso é uma coisa que você precisa fazer raramente. Macs possuem um ótimo gerenciamento de energia quando estão &#8220;dormindo&#8221; e um ótimo gerenciamento de energia que faz seu computador não virar uma carroça depois de alguns dias de uso. Assim, você pode deixar seu Mac alternando entre &#8220;acordado&#8221; e &#8220;dormindo&#8221; por meses, sabendo que está utilizando bem sua máquina.</p>
<p>De qualquer forma, para colocá-lo em <em>sleep</em>, ou desligá-lo, vá no Apple Menu e clique qualquer uma das opções.</p>
<div id="attachment_670" class="wp-caption aligncenter" style="width: 248px"><img class="size-full wp-image-670 " title="Apple menu e as opcoes para desligar ou dormir seu mac" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/Apple-menu-e-as-opcoes-para-desligar-ou-dormir-seu-mac.png" alt="Apple Menu e as opcoes para desligar ou dormir seu mac" width="238" height="249" /><p class="wp-caption-text">Apple Menu e as opcoes para desligar ou dormir seu mac</p></div>
<p>Se apertar <strong>OPTION</strong> enquanto o menu é mostrado, verá que as reticências somem, isso é, ele não vai confirmar a ação.</p>
<p>Além disso, apertando <strong>CONTROL + EJECT</strong>, você faz surgir o seguinte menu na sua tela.</p>
<div id="attachment_671" class="wp-caption aligncenter" style="width: 330px"><img class="size-full wp-image-671 " title="menu de desligamento do mac os x" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/menu-de-desligamento-do-mac-os-x.png" alt="Menu para desligar seu Mac" width="320" height="130" /><p class="wp-caption-text">Menu para desligar seu Mac</p></div>
<p>Outra opção ainda, é dar uma &#8220;leve dedada&#8221; no botão de ligar do seu Mac. Eu disse <strong>LEVE!</strong> Isso o levará para o estado de <em>sleep</em>.</p>
<p>Se você der uma &#8220;dedada&#8221; e ficar segurando, ele vai ser desligado <strong>por hardware</strong>. Nada será salvo e merdas podem acontecer. Não faça isso, a não ser que tudo tenha dado errado!</p>
<img src="http://www.bitabit.eng.br/?ak_action=api_record_view&id=352&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.bitabit.eng.br/2009/11/06/megamini-tutorial-para-mac-newbies-%e2%80%93-produtividade/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>JavaScript para focar itens pelo tabindex</title>
		<link>http://www.bitabit.eng.br/2009/10/25/javascript-para-focar-itens-pelo-tabindex/</link>
		<comments>http://www.bitabit.eng.br/2009/10/25/javascript-para-focar-itens-pelo-tabindex/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 19:10:22 +0000</pubDate>
		<dc:creator>Eduardo Russo, Coop10</dc:creator>
				<category><![CDATA[Coop10]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[foco]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[tabindex]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.bitabit.eng.br/?p=191</guid>
		<description><![CDATA[Sempre quis que páginas de formulários focassem no primeiro <strong>tabindex</strong> automaticamente... mas nunca achei algo na internet que fizesse isso de maneira fácil e intuitiva...

Após um pouco de pesquisa, consegui desenvolver um <strong>JavaScript</strong> bem símples que faz isso.]]></description>
			<content:encoded><![CDATA[<p>Sempre quis que páginas de formulários focassem no primeiro <strong>tabindex</strong> automaticamente&#8230; mas nunca achei algo na internet que fizesse isso de maneira fácil e intuitiva&#8230;</p>
<p>Após um pouco de pesquisa, consegui desenvolver um <strong>JavaScript</strong> bem símples que faz isso.</p>
<p>O primeiro passo, é setar a ordem desejada dos <strong>tabindex</strong>&#8230; é só colocar nos campos do formulário a ordem desejada, começando por 1&#8230; Isso faz com que o pressionar da tecla TAB siga a ordem desejada.</p>
<p>Após isso, basta usar esse <strong>JavaScript</strong>, passando o <strong>tabindex</strong> desejado como parâmetro&#8230; símples e fácil.</p>
<pre class="brush: jscript; title: ; notranslate">function focusPorTabIndex(index){
	//Varre todos os campos que foram setados com tabindex
	for(var i = 0; i &amp;amp;amp;amp;lt; document.mainOutputForm.elements.length; i++){
		//verifica se o tabindex setado é o desejado
		if (document.mainOutputForm.elements[i].tabIndex == index){
			//se for, seta o foco para ele
			document.mainOutputForm.elements[i].focus();
		}
	}
}</pre>
<p>OBS: <strong>mainOutputForm é o nome do seu formulário!</strong></p>
<img src="http://www.bitabit.eng.br/?ak_action=api_record_view&id=191&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.bitabit.eng.br/2009/10/25/javascript-para-focar-itens-pelo-tabindex/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MegaMini tutorial para Mac newbies – acentuação</title>
		<link>http://www.bitabit.eng.br/2009/10/25/megamini-tutorial-para-mac-newbies-%e2%80%93-acentuacao/</link>
		<comments>http://www.bitabit.eng.br/2009/10/25/megamini-tutorial-para-mac-newbies-%e2%80%93-acentuacao/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 04:08:31 +0000</pubDate>
		<dc:creator>Eduardo Russo, Coop10</dc:creator>
				<category><![CDATA[Coop10]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[ajuda]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[novato]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.bitabit.eng.br/?p=345</guid>
		<description><![CDATA[Mais um da nossa sala se juntou ao grupo dos que morderam a maçã. Está feliz, mas cheio de dúvidas, achando tudo estranho e fora do lugar. Resolvi fazer um MegaMini tutorial sobre tudo que você precisa saber, baixar e fazer na perda de sua MacVirgindade. Nessa primeira parte, vou falar sobre acentuação no OS [...]]]></description>
			<content:encoded><![CDATA[<p>Mais um da nossa sala se juntou ao grupo dos que morderam a maçã. Está feliz, mas cheio de dúvidas, achando tudo estranho e fora do lugar. Resolvi fazer um MegaMini tutorial sobre tudo que você precisa saber, baixar e fazer na perda de sua MacVirgindade.</p>
<p>Nessa primeira parte, vou falar sobre <strong>acentuação no OS X</strong>.</p>
<p>Se você comprou um Mac com teclado com &#8220;ç&#8221;, parabéns, use o layout ABNT e seja feliz! Se seu Mac não tem &#8220;ç&#8221;, você provavelmente não tem ideia de como fazer um!</p>
<p>1 &#8211; Se você está usando o <a href="http://www.apple.com/macosx/" target="_blank"><strong>Snow Leopard</strong></a>, você já tem o layout U.S. International instalado, basta selecioná-lo (passo 4). Senão, baixe o <a href="http://www.brockerhoff.net/usi/" target="_blank">layout de teclado US International</a> desenvolvido pelo brasileiro Rainer Brockerhoff. Você baixará um arquivo .dmg, que é uma especie de .iso do OS X. Acostume-se, pois a maioria dos aplicativos que você baixar para o OS X virão nesse formato.</p>
<p>2 &#8211; Duplo clique no arquivo abrirá o disco virtual. Basta arrastar o arquivo <strong>U.S. International.bundle</strong> para o diretório <strong>Biblioteca/Keyboard Layouts</strong>.</p>
<div id="attachment_346" class="wp-caption aligncenter" style="width: 423px"><img class="size-full wp-image-346" title="pasta com layouts de teclado do Mac OS X" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/pasta-com-layouts-de-teclado-do-Mac-OS-X.png" alt="Layout de teclado no lugar certo" width="413" height="239" /><p class="wp-caption-text">Layout de teclado no lugar certo</p></div>
<p>3 &#8211; Feche a sessão e entre novamente &#8211; clique na maçã, lá no alto à esquerda, em <strong>Finalizar sessão de <em>SeuUsuário</em></strong> e confirme. Essa maçã se chama Apple Menu e a barra onde ela fica se chama barra de programas, ou <em>applications bar</em> e você deve ter notado que ela é fixa, independentemente do programa que você está usando. Entre novamente em seu usuário.</p>
<p>4 &#8211; Agora clique no <strong>Apple Menu</strong> e em <strong>Preferências do Sistema</strong>. Esse é, se você veio do Windows, a versão OS X do painel de controle. Clique em <strong>Internacional</strong> e vá para a aba <strong>Menu de Entrada</strong>. Cace o <strong>E.U.A. Internacional</strong>, que na versão em português do Leopard fica abaixo dos layouts Dvorak.</p>
<p>5 &#8211; Selecione-o e selecione também para <strong>Mostrar o menu de entrada na barra de menus</strong>. Isso porque alguns programas (raríssiomos, mas pode existir) tem problemas com acentuação e simplesmente não abrem se você estiver usando um layout que não seja o estadunidense padrão.</p>
<div id="attachment_347" class="wp-caption aligncenter" style="width: 459px"><img class="size-full wp-image-347" title="seleção do US international" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/seleção-do-US-international.png" alt="Layout selecionado nas preferências do sistema" width="449" height="396" /><p class="wp-caption-text">Layout selecionado nas preferências do sistema</p></div>
<p style="text-align:left;">6 &#8211; Agora repare que na barra de programas, apareceu o símbolo do layout selecionado. Agora você pode acentuar usando as teclas de acento normalmente.</p>
<p style="text-align:left;">Mas, como um usuário da época em que isso não existia, acabei me acostumando mais a usar algumas combinações escrotas do OS X que a padrão &#8220;acento + letra&#8221;, então seguem as formas &#8220;originais&#8221; de se acentuar num Mac. Digita-se a combinação de teclas e depois a letra. Para a combinação &#8220;ç~&#8221;, por exemplo, acho mais rápido dessa forma.</p>
<p style="text-align:left;">OPTION + e = ´<br />
OPTION + i = ^<br />
OPTION + c = ç<br />
OPTION + u = ¨<br />
OPTION + n = ~<br />
OPTION + ` = `</p>
<p style="text-align:left;">O option combinado com qualquer tecla coloca um caractere &#8220;alternativo&#8221; na tela, fuce e encontrará coisas interessantes.</p>
<img src="http://www.bitabit.eng.br/?ak_action=api_record_view&id=345&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.bitabit.eng.br/2009/10/25/megamini-tutorial-para-mac-newbies-%e2%80%93-acentuacao/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Duas funções do Dock que a Apple escondeu das preferências</title>
		<link>http://www.bitabit.eng.br/2009/10/25/duas-funcoes-do-dock-que-a-apple-escondeu-das-preferencias/</link>
		<comments>http://www.bitabit.eng.br/2009/10/25/duas-funcoes-do-dock-que-a-apple-escondeu-das-preferencias/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 03:00:04 +0000</pubDate>
		<dc:creator>Eduardo Russo, Coop10</dc:creator>
				<category><![CDATA[Coop10]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[dock]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.bitabit.eng.br/?p=279</guid>
		<description><![CDATA[Uma das grandes cartas na manga do OS X é o fato de ser baseado em Unix. Já vi muito usuário de Linux migrar para o OS X e se sentir extremamente confortável exatamente por causa desse aplicativo. Com o Terminal você consegue fazer coisas que nem sempre são possíveis pela interface gráfica. Seguem duas [...]]]></description>
			<content:encoded><![CDATA[<p>Uma das grandes cartas na manga do OS X é o fato de ser baseado em Unix. Já vi muito usuário de Linux migrar para o OS X e se sentir extremamente confortável exatamente por causa desse aplicativo.</p>
<p>Com o Terminal você consegue fazer coisas que nem sempre são possíveis pela interface gráfica. Seguem duas dessas coisas que podem ser feitas com o Dock.</p>
<h3>Ícones separadores</h3>
<div id="attachment_280" class="wp-caption aligncenter" style="width: 722px"><img class="size-full wp-image-280" title="separadores no dock" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/separadores-no-dock.png" alt="Programas separados por categoria" width="712" height="56" /><p class="wp-caption-text">Programas separados por categoria</p></div>
<p>Para quem mantém vários ícones no Dock e gostaria de uma maneira de organizá-los por &#8220;temas&#8221;, existe o &#8220;velho&#8221; truque dos &#8220;programas separadores&#8221;, mas além de ter um nome (que pode ser um monte e espaços) eles podem ser clicados. Com esse separador &#8220;de fábrica&#8221; você não corre esse risco.</p>
<p>Abra o Terminal e digite</p>
<pre class="brush: plain; light: true; title: ; notranslate">defaults write com.apple.dock persistent-apps -array-add '{tile-data={}; tile-type=&quot;spacer-tile&quot;;}'
killall Dock</pre>
<p>Isso irá criar um ícone transparente e sem nome no final do Dock. Esse ícone pode ser arrastado normalmente e retirado a qualquer momento (POOF).</p>
<div id="attachment_281" class="wp-caption aligncenter" style="width: 829px"><img class="size-full wp-image-281" title="separadores não são clicáveis" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/separadores-não-são-clicáveis.png" alt="Os ícones transparentes não aparecem como um programa e não podem ser clicados, a não ser para arrastá-los! Não não não... " width="819" height="64" /><p class="wp-caption-text">Os ícones transparentes não aparecem como um programa e não podem ser clicados, a não ser para arrastá-los! Não não não... </p></div>
<h1>Animação suck</h1>
<div id="attachment_282" class="wp-caption aligncenter" style="width: 624px"><img class="size-full wp-image-282" title="animação genie" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/animação-genie.png" alt="Animação padrão: &quot;gênio&quot;" width="614" height="383" /><p class="wp-caption-text">Animação padrão: &quot;gênio&quot;</p></div>
<p>Não, não acho que a animação tipo gênio &#8220;<em>sucks</em>&#8220;. Suck é o nome de uma animação alternativa do OS X que ficou de fora das preferências, mas pode ser ativada pelo terminal.</p>
<p>Para isso, digite no Terminal</p>
<pre class="brush: plain; light: true; title: ; notranslate">defaults write com.apple.dock mineffect suck
killall Dock</pre>
<p>Para voltar ao normal, é só mudar nas preferências do sistema (pelo caminho normal da interface gráfica).</p>
<div id="attachment_283" class="wp-caption aligncenter" style="width: 624px"><img class="size-full wp-image-283" title="animação suck" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/animação-suck.png" alt="Animação escondida: &quot;chupada&quot;" width="614" height="383" /><p class="wp-caption-text">Animação escondida: &quot;chupada&quot;</p></div>
<img src="http://www.bitabit.eng.br/?ak_action=api_record_view&id=279&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.bitabit.eng.br/2009/10/25/duas-funcoes-do-dock-que-a-apple-escondeu-das-preferencias/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

