<?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>portella.com.br</title>
	<atom:link href="http://www.portella.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.portella.com.br</link>
	<description>Blog pessoal de Felipe Portella</description>
	<lastBuildDate>Fri, 15 Nov 2013 19:48:49 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>Como configurar o Notepad++ para editar LaTeX</title>
		<link>http://www.portella.com.br/2013/11/como-configurar-o-notepad-para-editar-latex/</link>
		<comments>http://www.portella.com.br/2013/11/como-configurar-o-notepad-para-editar-latex/#respond</comments>
		<pubDate>Fri, 15 Nov 2013 19:48:49 +0000</pubDate>
		<dc:creator><![CDATA[Felipe Portella]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[Notepad++]]></category>

		<guid isPermaLink="false">http://www.portella.com.br/?p=510</guid>
		<description><![CDATA[Achei o guia definitivo com todas as dicas que precisava nesse site: johnbruer.com/2013/05/21/latex-editing-using-notepad/ inclui um script que não só compila, mas como faz um link entre a linha que vc está editando e em que ponto o PDF será aberto, facilitando muito a revisão.]]></description>
				<content:encoded><![CDATA[<p>Achei o guia definitivo com todas as dicas que precisava nesse site:</p>
<p><a href="http://johnbruer.com/2013/05/21/latex-editing-using-notepad/" class="autohyperlink">johnbruer.com/2013/05/21/latex-editing-using-notepad/</a></p>
<p>inclui um script que não só compila, mas como faz um link entre a linha que vc está editando e em que ponto o PDF será aberto, facilitando muito a revisão.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.portella.com.br/2013/11/como-configurar-o-notepad-para-editar-latex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How swype works?</title>
		<link>http://www.portella.com.br/2013/05/how-swype-works/</link>
		<comments>http://www.portella.com.br/2013/05/how-swype-works/#respond</comments>
		<pubDate>Thu, 23 May 2013 13:53:48 +0000</pubDate>
		<dc:creator><![CDATA[Felipe Portella]]></dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.portella.com.br/?p=487</guid>
		<description><![CDATA[Nice simple Python code to undestand how swype works: krishnabharadwaj.info/how-swype-works/ &#160; &#8212;- &#160; Swype is an awesome software which makes typing in mobile phones using the qwerty keyboard very easy. This is how it looks: I was just thinking how this could be implemented. It boils down to a string sub-sequence problem. The path traced [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Nice simple Python code to undestand how swype works:</p>
<p><a href="http://krishnabharadwaj.info/how-swype-works/" class="autohyperlink">krishnabharadwaj.info/how-swype-works/</a></p>
<p>&nbsp;</p>
<p>&#8212;-</p>
<p>&nbsp;</p>
<div>
<p>Swype is an awesome software which makes typing in mobile phones using the qwerty keyboard very easy. This is how it looks:</p>
<div align="center"><img alt="swype" src="http://dl.dropbox.com/u/17629670/serve/swype.jpg" /></div>
<p>I was just thinking how this could be implemented. It boils down to a string sub-sequence problem. The path traced by the user consists of all the characters in a word. This is an ideal situation, but many a times, we do not take care of all the characters in between and miss many of them.</p>
<p>Some of the characteristics i have considered:</p>
<pre>1. Filtering of words based on the first and last character.
2. Characters which are buried among other characters in the path traversed by the user.
3. The number of traversals between different rows of the keyboard gives us a fair idea about the length of the word.</pre>
<p>We can use a number of such characteristics and increase the chances of suggesting the right word. One such hint i can think of is:</p>
<div>
<pre>Split the words in sets of three characters:</pre>
<pre>Lets take the case of the word "English" here. The actual trace may be like "edfgbnbghjkliugfdsdfgh"</pre>
<p>Groups like <strong>bnb, bgh, kli, dsd </strong> strongly suggest that there is a turn which signifies a character which has a higher probability of being present in the word.</p>
</div>
<p>I wrote a <a href="https://gist.github.com/1059818" target="_blank">basic version</a> of this using python and <a href="http://dl.dropbox.com/u/17629670/serve/wordlist.txt" class="broken_link">this wordlist</a>. Some basic introduction to some of the functional programming used here is discussed in <a href="http://krishnabharadwaj.info/python-and-projecteuler/" target="_blank"><strong>this link</strong></a></p>
<pre>WORDS = open('wordlist.txt').read().split()
KEYBRD_LAYOUT = ['qwertyuiop', 'asdfghjkl', 'zxcvbnm']

def match(path, word):
    """ Checks if a word is present in a path or not. """

    try:
        for char in word:
            path = path.split(char, 1)[1]
        return True
    except : return False

def get_keyboard_row( char ):
    """ Returns the row number of the character """

    for row_no, row in enumerate(KEYBRD_LAYOUT):
        if char in row:
            return row_no

def compress(sequence):
    """ Removes redundant sequential characters. ex : 11123311 =&gt; 1231 """
    ret_val = [ sequence[0] ]
    for element in sequence:
        if ret_val[-1] != element:
            ret_val.append(element)
    return ret_val

def get_minimum_wordlength(path):
    """ 
    Returns the minimum possible word length from the path.
    Uses the number of transitions from different rows in 
    the keyboard layout to determin the minimum length
    """
    row_numbers = map(get_keyboard_row, path)
    compressed_row_numbers = compress(row_numbers)
    return len(compressed_row_numbers) - 3

def get_suggestion(path):
    """ Returns suggestions for a given path. """

    suggestions = filter(lambda x: x[0] == path[0] and x[-1] == path[-1], WORDS)
    suggestions = filter(lambda x: match(path, x), suggestions)

    min_length = get_minimum_wordlength(path)
    suggestions = filter(lambda x: len(x) &gt; min_length, suggestions)

    return suggestions

if __name__ == '__main__':
    test_cases = ['heqerqllo',                   # hello
        'qwertyuihgfcvbnjk',                     # quick
        'wertyuioiuytrtghjklkjhgfd',             # world
        'dfghjioijhgvcftyuioiuytr',              # doctor
        'aserfcvghjiuytedcftyuytre',             # architecture
        'asdfgrtyuijhvcvghuiklkjuytyuytre',      # agriculture
        'mjuytfdsdftyuiuhgvc',                   # music
        'vghjioiuhgvcxsasdvbhuiklkjhgfdsaserty', # vocabulary 
        ]

    for test in test_cases:
        print get_suggestion(test)</pre>
<p>The results for the same were pretty good.</p>
<pre> ['hello', 'hero', 'ho']
 ['quick']
 ['wed', 'weird', 'weld', 'wild', 'wold', 'word', 'world', 'would']
 ['doctor', 'door', 'dour']
 ['architecture']
 ['adjure', 'agriculture', 'article', 'astute']
 ['music', 'mystic']
 ['vocabulary']</pre>
<p>The basic version was working within an hour. I must say that the string split method in python is very well thought of. split( delimiter, 1) returns a the string before and after the first match.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.portella.com.br/2013/05/how-swype-works/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Showing a vertical rule in Visual Studio</title>
		<link>http://www.portella.com.br/2013/03/showing-a-vertical-rule-in-visual-studio/</link>
		<comments>http://www.portella.com.br/2013/03/showing-a-vertical-rule-in-visual-studio/#respond</comments>
		<pubDate>Tue, 26 Mar 2013 15:35:41 +0000</pubDate>
		<dc:creator><![CDATA[Felipe Portella]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.portella.com.br/?p=486</guid>
		<description><![CDATA[You can install this add on: visualstudiogallery.msdn.microsoft.com/0fbf2878-e678-4577-9fdb-9030389b338c You may find interesting to install this one too. It&#8217;s a UI to configure the rules direct in the editor panel: visualstudiogallery.msdn.microsoft.com/7f2a6727-2993-4c1d-8f58-ae24df14ea91/]]></description>
				<content:encoded><![CDATA[<p>You can install this add on:<br />
<a href="http://visualstudiogallery.msdn.microsoft.com/0fbf2878-e678-4577-9fdb-9030389b338c" class="autohyperlink">visualstudiogallery.msdn.microsoft.com/0fbf2878-e678-4577-9fdb-9030389b338c</a></p>
<p>You may find interesting to install this one too. It&#8217;s a UI to configure the rules direct in the editor panel:<br />
<a href="http://visualstudiogallery.msdn.microsoft.com/7f2a6727-2993-4c1d-8f58-ae24df14ea91/" class="autohyperlink">visualstudiogallery.msdn.microsoft.com/7f2a6727-2993-4c1d-8f58-ae24df14ea91/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.portella.com.br/2013/03/showing-a-vertical-rule-in-visual-studio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fix windows offline files with &#8220;The process cannot access the file because it is being used by another process&#8221; errors</title>
		<link>http://www.portella.com.br/2012/12/fix-windows-offline-files-with-the-process-cannot-access-the-file-because-it-is-being-used-by-another-process-errors/</link>
		<comments>http://www.portella.com.br/2012/12/fix-windows-offline-files-with-the-process-cannot-access-the-file-because-it-is-being-used-by-another-process-errors/#respond</comments>
		<pubDate>Mon, 03 Dec 2012 17:55:16 +0000</pubDate>
		<dc:creator><![CDATA[Felipe Portella]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.portella.com.br/?p=482</guid>
		<description><![CDATA[When encountering this error you can solve by changing the OPLOCKS flags in the Samba config file: /etc/samba/smb.conf Add the following lines, at the bottom of the GLOBAL section, just before the &#8216;include&#8217; line; oplocks = yes  level2 oplocks = yes  kernel oplocks = no Now reboot or restart samba]]></description>
				<content:encoded><![CDATA[<p>When encountering this error you can solve by changing the OPLOCKS flags in the Samba config file:</p>
<blockquote>
<pre><code>/etc/samba/smb.conf</code></pre>
</blockquote>
<p>Add the following lines, at the bottom of the GLOBAL section, just before the &#8216;include&#8217; line;</p>
<div>
<blockquote>
<pre><code>oplocks = yes </code></pre>
<pre><code>level2 oplocks = yes </code></pre>
<pre><code>kernel oplocks = no</code></pre>
</blockquote>
</div>
<p>Now reboot or restart samba</p>
<pre></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.portella.com.br/2012/12/fix-windows-offline-files-with-the-process-cannot-access-the-file-because-it-is-being-used-by-another-process-errors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hora Legal Brasileira</title>
		<link>http://www.portella.com.br/2012/11/hora-legal-brasileira/</link>
		<comments>http://www.portella.com.br/2012/11/hora-legal-brasileira/#respond</comments>
		<pubDate>Thu, 29 Nov 2012 15:27:31 +0000</pubDate>
		<dc:creator><![CDATA[Felipe Portella]]></dc:creator>
				<category><![CDATA[Dicas de Sites]]></category>
		<category><![CDATA[Dicas de Software]]></category>

		<guid isPermaLink="false">http://www.portella.com.br/?p=480</guid>
		<description><![CDATA[O NIC.br e o Observatório nacional oferecem em conjunto, gratuitamente, o NTP.br: o serviço para sincronização com a Hora legal brasileira via Internet. O NTP é muito fácil de instalar e usar. Existem versões disponíveis para todos os sistemas operacionais e equipamentos de rede, como Linux, Windows, OS X, roteadores Cisco e Juniper. Em servidores [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>O NIC.br e o Observatório nacional oferecem em conjunto, gratuitamente, o NTP.br: o serviço para sincronização com a Hora legal brasileira via Internet. O NTP é muito fácil de instalar e usar. Existem versões disponíveis para todos os sistemas operacionais e equipamentos de rede, como Linux, Windows, OS X, roteadores Cisco e Juniper. Em servidores e computadores, deve-se utilizar o deamon ntpd. Nos roteadorees, o NTP já vem instalado por padrão, bastando configurá-lo.</p>
<p>Para saber com instalar e usar acesse: <a href="http://ntp.br" target="_blank">ntp.br</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.portella.com.br/2012/11/hora-legal-brasileira/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Posição em tempo real de aviões e navios</title>
		<link>http://www.portella.com.br/2012/11/posicao-em-tempo-real-de-avioes-e-navios/</link>
		<comments>http://www.portella.com.br/2012/11/posicao-em-tempo-real-de-avioes-e-navios/#respond</comments>
		<pubDate>Thu, 29 Nov 2012 14:08:49 +0000</pubDate>
		<dc:creator><![CDATA[Felipe Portella]]></dc:creator>
				<category><![CDATA[Dicas de Sites]]></category>

		<guid isPermaLink="false">http://www.portella.com.br/?p=478</guid>
		<description><![CDATA[É possível acompanhar a posição em tempo real dos aviões em www.flightradar24.com/ Também é possível ver a posição em tempo real de embarcações em www.marinetraffic.com/ais/]]></description>
				<content:encoded><![CDATA[<p>É possível acompanhar a posição em tempo real dos aviões em <a href="http://www.flightradar24.com/">www.flightradar24.com/</a></p>
<p>Também é possível ver a posição em tempo real de embarcações em <a href="http://www.marinetraffic.com/ais">www.marinetraffic.com/ais</a>/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.portella.com.br/2012/11/posicao-em-tempo-real-de-avioes-e-navios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Boa ferramenta para cálculos de churrasco</title>
		<link>http://www.portella.com.br/2012/11/boa-ferramenta-para-calculos-de-churrasco/</link>
		<comments>http://www.portella.com.br/2012/11/boa-ferramenta-para-calculos-de-churrasco/#respond</comments>
		<pubDate>Tue, 20 Nov 2012 18:35:00 +0000</pubDate>
		<dc:creator><![CDATA[Felipe Portella]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.portella.com.br/?p=473</guid>
		<description><![CDATA[www.calculoparachurrasco.com.br/ Calcula quantidades de carnes, bebidas etc. levando em consideração se é homem, mulher , criança e a fome &#8230;]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.calculoparachurrasco.com.br/?calc#calc">www.calculoparachurrasco.com.br/</a></p>
<p>Calcula quantidades de carnes, bebidas etc. levando em consideração se é homem, mulher , criança e a fome &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.portella.com.br/2012/11/boa-ferramenta-para-calculos-de-churrasco/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Livro gratuito de programação com NCL</title>
		<link>http://www.portella.com.br/2012/05/livro-gratuito-de-programacao-com-ncl/</link>
		<comments>http://www.portella.com.br/2012/05/livro-gratuito-de-programacao-com-ncl/#respond</comments>
		<pubDate>Sat, 05 May 2012 12:16:24 +0000</pubDate>
		<dc:creator><![CDATA[Felipe Portella]]></dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>

		<guid isPermaLink="false">http://www.portella.com.br/?p=470</guid>
		<description><![CDATA[www.ncl.org.br/pt-br/livrosecapitulosdelivros]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.ncl.org.br/pt-br/livrosecapitulosdelivros">www.ncl.org.br/pt-br/livrosecapitulosdelivros</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.portella.com.br/2012/05/livro-gratuito-de-programacao-com-ncl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firmware alternativo para o roteador ASUS RT-N56U</title>
		<link>http://www.portella.com.br/2012/02/firmware-alternativo-para-o-roteador-asus-rt-n56u/</link>
		<comments>http://www.portella.com.br/2012/02/firmware-alternativo-para-o-roteador-asus-rt-n56u/#respond</comments>
		<pubDate>Mon, 27 Feb 2012 04:09:51 +0000</pubDate>
		<dc:creator><![CDATA[Felipe Portella]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.portella.com.br/?p=465</guid>
		<description><![CDATA[Firmware alternativo  (similar ao DD-WRT, mas desenvolvido especificamente para os roteadores da ASUS, baseado no código fonte do firmware original)]]></description>
				<content:encoded><![CDATA[<p><a href="http://code.google.com/p/rt-n56u/">Firmware alternativo </a> (similar ao DD-WRT, mas desenvolvido especificamente para os roteadores da ASUS, baseado no código fonte do firmware original)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.portella.com.br/2012/02/firmware-alternativo-para-o-roteador-asus-rt-n56u/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SCRUM</title>
		<link>http://www.portella.com.br/2012/01/scrum/</link>
		<comments>http://www.portella.com.br/2012/01/scrum/#respond</comments>
		<pubDate>Sat, 21 Jan 2012 17:41:55 +0000</pubDate>
		<dc:creator><![CDATA[Felipe Portella]]></dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[SCRUM]]></category>

		<guid isPermaLink="false">http://www.portella.com.br/?p=462</guid>
		<description><![CDATA[Video interessante com uma visão geral da metodologia SCRUM em menos de 10 minutos:]]></description>
				<content:encoded><![CDATA[<p>Video interessante com uma visão geral da metodologia SCRUM em menos de 10 minutos:</p>
<p><iframe class='youtube-player youtuber' type='text/html' width='425' height='355' src='http://www.youtube.com/embed/xa-C0No2Uic?rel=0&amp;fs=1' webkitAllowFullScreen mozallowfullscreen allowFullScreen frameborder='0'></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.portella.com.br/2012/01/scrum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
