<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9088607802514452928</id><updated>2011-12-08T16:24:41.087-02:00</updated><category term='Python'/><category term='processos'/><title type='text'>Na Contra Mão do Sistema</title><subtitle type='html'>Porque a vida é feita de escolhas</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://juliocabral.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9088607802514452928/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://juliocabral.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Julio César Cabral</name><uri>http://www.blogger.com/profile/03298943578914712855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_PrvH42xLu9Y/TVB3O8L3eAI/AAAAAAAABPI/IDPLnb4pxkA/s220/DSC00005.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9088607802514452928.post-2423592962071466825</id><published>2011-11-03T08:34:00.000-02:00</published><updated>2011-11-03T08:46:24.335-02:00</updated><title type='text'>Funções em Python</title><content type='html'>Funções em Python são definidas com a palavra &lt;b&gt;def&lt;/b&gt;, seguidas pelo seu nome, além de parênteses. Dentro dos parênteses, existe a possibilidade de se incluir uma lista de parâmetros.No início do corpo da função, é uma boa prática fazer um comentário, chamado de &lt;b&gt;docstrings&lt;/b&gt;. Usando &lt;b&gt;docstrings&lt;/b&gt;, ferramentas podem utilizar o comentário para a documentação do sistema.Funções em Python podem ter a opção de retornar algum valor, uma lista, um objeto, etc ou podem não retornar nada, se portando como um procedimento.&lt;pre class="java" name="code"&gt;&lt;br /&gt;&gt;&gt;&gt; def fib(n): &lt;br /&gt;...     """Imprime uma série de Fibonacci para o parâmetro n."""&lt;br /&gt;...     a, b = 0, 1&lt;br /&gt;...     while a &lt; n:&lt;br /&gt;...         print a,&lt;br /&gt;...         a, b = b, a+b&lt;br /&gt;...&lt;br /&gt;&gt;&gt;&gt; # Chamando a função&lt;br /&gt;... fib(2000)&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; def fib2(n): &lt;br /&gt;...     """Returnondo uma lista contendo uma série de Fibonacci para n."""&lt;br /&gt;...     result = []&lt;br /&gt;...     a, b = 0, 1&lt;br /&gt;...     while a &lt; n:&lt;br /&gt;...         result.append(a)   &lt;br /&gt;...         a, b = b, a+b&lt;br /&gt;...     return result&lt;br /&gt;...&lt;br /&gt;&gt;&gt;&gt; f100 = fib2(100) &lt;br /&gt;&lt;/pre&gt;Podemos ter um variável número de argumentos na lista, com valores default ou não. Para valores default, não existe a necessidade de se passar esse valor para a função.Além disso, não é necessário passar os argumentos para a função na ordem dos parâmetros, desde que utilizemos um par nome=valor.&lt;pre class="java" name="code"&gt;&lt;br /&gt;&gt;&gt;&gt; def funcaoComArgumento(arg1, arg2="valor_default", arg3="valor_default")&lt;br /&gt;       ...&lt;br /&gt;&lt;br /&gt;      #chamadas a função&lt;br /&gt;      funcaoComArgumento(100)&lt;br /&gt;      funcaoComArgumento(arg2="qualquercoisa", arg1=100)&lt;br /&gt;      # ocorrerá um erro para a chamada a seguir pois não existe um valor default para arg1 &lt;br /&gt;      funcaoComArgumento(arg2="qualquercoisa")  &lt;br /&gt;&lt;/pre&gt;Finalizando, parâmetros com a forma &lt;b&gt;**name&lt;/b&gt; recebem um dicionário e com a forma &lt;b&gt;*name&lt;/b&gt; recebem tuplas. Os parâmetros que recebem dicionários devem, obrigatoriamente serem os últimos parâmetros da função.&lt;pre class="java" name="code"&gt;&lt;br /&gt;def cheeseshop(kind, *arguments, **keywords):&lt;br /&gt;    print "-- Do you have any", kind, "?"&lt;br /&gt;    print "-- I'm sorry, we're all out of", kind&lt;br /&gt;    for arg in arguments:&lt;br /&gt;        print arg&lt;br /&gt;    print "-" * 40&lt;br /&gt;    keys = sorted(keywords.keys())&lt;br /&gt;    for kw in keys:&lt;br /&gt;        print kw, ":", keywords[kw]&lt;br /&gt;&lt;br /&gt;cheeseshop("Limburger", "It's very runny, sir.",&lt;br /&gt;           "It's really very, VERY runny, sir.",&lt;br /&gt;           shopkeeper='Michael Palin',&lt;br /&gt;           client="John Cleese",&lt;br /&gt;           sketch="Cheese Shop Sketch")&lt;br /&gt;&lt;br /&gt;-- Do you have any Limburger ?&lt;br /&gt;-- I'm sorry, we're all out of Limburger&lt;br /&gt;It's very runny, sir.&lt;br /&gt;It's really very, VERY runny, sir.&lt;br /&gt;----------------------------------------&lt;br /&gt;client : John Cleese&lt;br /&gt;shopkeeper : Michael Palin&lt;br /&gt;sketch : Cheese Shop Sketch&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9088607802514452928-2423592962071466825?l=juliocabral.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9088607802514452928/posts/default/2423592962071466825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9088607802514452928/posts/default/2423592962071466825'/><link rel='alternate' type='text/html' href='http://juliocabral.blogspot.com/2011/11/funcoes-em-python.html' title='Funções em Python'/><author><name>Julio César Cabral</name><uri>http://www.blogger.com/profile/03298943578914712855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_PrvH42xLu9Y/TVB3O8L3eAI/AAAAAAAABPI/IDPLnb4pxkA/s220/DSC00005.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-9088607802514452928.post-2671197954024073596</id><published>2011-10-22T23:00:00.000-02:00</published><updated>2011-10-22T23:00:18.449-02:00</updated><title type='text'>Mais Estruturas de Controle através de exemplos</title><content type='html'>Como estruturas de controle são praticamente parecidas nas linguagens,  abaixo encontram-se exemplos e pequenas observações sobre o assunto:&lt;/br&gt;&lt;/br&gt;&lt;b&gt;1 - If:&lt;/b&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;&gt;&gt;&gt; x = int(raw_input("Please enter an integer: "))&lt;br /&gt;Please enter an integer: 42&lt;br /&gt;&gt;&gt;&gt; if x &lt; 0:&lt;br /&gt;...      x = 0&lt;br /&gt;...      print 'Negative changed to zero'&lt;br /&gt;... elif x == 0:&lt;br /&gt;...      print 'Zero'&lt;br /&gt;... elif x == 1:&lt;br /&gt;...      print 'Single'&lt;br /&gt;... else:&lt;br /&gt;...      print 'More'&lt;br /&gt;...&lt;br /&gt;More&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;2 - For:&lt;/b&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;&gt;&gt;&gt; a = ['cat', 'window', 'defenestrate']&lt;br /&gt;&gt;&gt;&gt; for x in a:&lt;br /&gt;...     print x, len(x)&lt;br /&gt;&lt;/pre&gt;Abaixo, um exemplo que altera a lista enquanto ocorre o loop: &lt;pre class="java" name="code"&gt;&lt;br /&gt;&gt;&gt;&gt; a = ['cat', 'window', 'defenestrate'] &lt;br /&gt;...for x in a[:]: # utilizando uma cópia da lista&lt;br /&gt;...    if len(x) &gt; 6: a.insert(0, x)&lt;br /&gt;...&lt;br /&gt;&gt;&gt;&gt; a&lt;br /&gt;['defenestrate', 'cat', 'window', 'defenestrate']&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;3 - Função Range:&lt;/b&gt;&lt;/br&gt;&lt;/br&gt;Itera sobre uma sequência de números.&lt;pre class="java" name="code"&gt;&lt;br /&gt;&gt;&gt;&gt; range(5, 10)&lt;br /&gt;[5, 6, 7, 8, 9]&lt;br /&gt;&gt;&gt;&gt; range(0, 10, 3) # entre 0 e 10, de 3 em 3&lt;br /&gt;[0, 3, 6, 9]&lt;br /&gt;&gt;&gt;&gt; range(-10, -100, -30) # entre -10 e -100, de -30 em -30&lt;br /&gt;[-10, -40, -70]&lt;br /&gt;&lt;/pre&gt;Utilizando a função em um for:&lt;pre class="java" name="code"&gt;&lt;br /&gt;&gt;&gt;&gt; a = ['Mary', 'had', 'a', 'little', 'lamb']&lt;br /&gt;&gt;&gt;&gt; for i in range(len(a)):&lt;br /&gt;...     print i, a[i]&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;4 - Break e Else:&lt;/b&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;&gt;&gt;&gt; for n in range(2, 10):&lt;br /&gt;...     for x in range(2, n):&lt;br /&gt;...         if n % x == 0:&lt;br /&gt;...             print n, 'equals', x, '*', n/x&lt;br /&gt;...             break&lt;br /&gt;...     else:&lt;br /&gt;...         print n, 'is a prime number'&lt;br /&gt;.&lt;/pre&gt;&lt;b&gt;5 - Continue:&lt;/b&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;&gt;&gt;&gt; for n in range(2, 10):&lt;br /&gt;...     for x in range(2, n):&lt;br /&gt;...         if n % x == 0:&lt;br /&gt;...             continue'&lt;br /&gt;.&lt;/pre&gt;&lt;b&gt;6 - Pass:&lt;/b&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;&gt;&gt;&gt; while True:&lt;br /&gt;...     pass  # aguarda por interrupção  (Ctrl+C)&lt;br /&gt;...&lt;br /&gt;&gt;&gt;&gt; class MyEmptyClass:&lt;br /&gt;...     pass&lt;br /&gt;&lt;/pre&gt;No próximo post, falaremos sobre funções em Python.&lt;/br&gt;&lt;/br&gt;Até lá.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9088607802514452928-2671197954024073596?l=juliocabral.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9088607802514452928/posts/default/2671197954024073596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9088607802514452928/posts/default/2671197954024073596'/><link rel='alternate' type='text/html' href='http://juliocabral.blogspot.com/2011/10/mais-estruturas-de-controle-atraves-de.html' title='Mais Estruturas de Controle através de exemplos'/><author><name>Julio César Cabral</name><uri>http://www.blogger.com/profile/03298943578914712855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_PrvH42xLu9Y/TVB3O8L3eAI/AAAAAAAABPI/IDPLnb4pxkA/s220/DSC00005.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-9088607802514452928.post-2751809525766963040</id><published>2011-10-20T22:22:00.004-02:00</published><updated>2011-10-21T09:32:35.186-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Listas e Estruturas de Controle em Python</title><content type='html'>Python possui algumas estruturas usadas para agrupar tipos e List é o mais versátil deles, não sendo necessário que uma lista possua tipos iguais.&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;&gt;&gt;&gt; a = ['spam', 'eggs', 100, 1234]&lt;br /&gt;&gt;&gt;&gt; a&lt;br /&gt;['spam', 'eggs', 100, 1234]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Como strings, listas também utilizam índices, porém, são mutáveis:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;&gt;&gt;&gt; a[0]&lt;br /&gt;'spam'&lt;br /&gt;&gt;&gt;&gt; a[3]&lt;br /&gt;1234&lt;br /&gt;&gt;&gt;&gt; a[-2]&lt;br /&gt;100&lt;br /&gt;&gt;&gt;&gt; a[1:-1]&lt;br /&gt;['eggs', 100]&lt;br /&gt;&gt;&gt;&gt; a[:2] + ['bacon', 2*2]&lt;br /&gt;['spam', 'eggs', 'bacon', 4]&lt;br /&gt;&gt;&gt;&gt; 3*a[:3] + ['Boo!']&lt;br /&gt;['spam', 'eggs', 100, 'spam', 'eggs', 100, 'spam', 'eggs', 100, 'Boo!']&lt;br /&gt;&gt;&gt;&gt; a[:]&lt;br /&gt;['spam', 'eggs', 100, 1234]&lt;br /&gt;&gt;&gt;&gt; a[2] = a[2] + 23&lt;br /&gt;&gt;&gt;&gt; a&lt;br /&gt;['spam', 'eggs', 123, 1234]&lt;br /&gt;&gt;&gt;&gt; # Substituir alguns itens:&lt;br /&gt;... a[0:2] = [1, 12]&lt;br /&gt;&gt;&gt;&gt; a&lt;br /&gt;[1, 12, 123, 1234]&lt;br /&gt;&gt;&gt;&gt; # Remover alguns:&lt;br /&gt;... a[0:2] = []&lt;br /&gt;&gt;&gt;&gt; a&lt;br /&gt;[123, 1234]&lt;br /&gt;&gt;&gt;&gt; # Inserir alguns:&lt;br /&gt;... a[1:1] = ['bletch', 'xyzzy']&lt;br /&gt;&gt;&gt;&gt; a&lt;br /&gt;[123, 'bletch', 'xyzzy', 1234]&lt;br /&gt;&gt;&gt;&gt; # Inserir a própria lista:&lt;br /&gt;&gt;&gt;&gt; a[:0] = a&lt;br /&gt;&gt;&gt;&gt; a&lt;br /&gt;[123, 'bletch', 'xyzzy', 1234, 123, 'bletch', 'xyzzy', 1234]&lt;br /&gt;&gt;&gt;&gt; # Limpar a lista:&lt;br /&gt;&gt;&gt;&gt; a[:] = []&lt;br /&gt;&gt;&gt;&gt; a&lt;br /&gt;[]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Também temos a funão len():&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;&gt;&gt;&gt; a = ['a', 'b', 'c', 'd']&lt;br /&gt;&gt;&gt;&gt; len(a)&lt;br /&gt;4&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Para mostrar como listas em Python é versátil, também podemos criar listas contendo outras listas:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;&gt;&gt;&gt; q = [2, 3]&lt;br /&gt;&gt;&gt;&gt; p = [1, q, 4]&lt;br /&gt;&gt;&gt;&gt; len(p)&lt;br /&gt;3&lt;br /&gt;&gt;&gt;&gt; p[1]&lt;br /&gt;[2, 3]&lt;br /&gt;&gt;&gt;&gt; p[1][0]&lt;br /&gt;2&lt;br /&gt;&gt;&gt;&gt; p[1].append('xtra')     # See section 5.1&lt;br /&gt;&gt;&gt;&gt; p&lt;br /&gt;[1, [2, 3, 'xtra'], 4]&lt;br /&gt;&gt;&gt;&gt; q&lt;br /&gt;[2, 3, 'xtra']&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Fluxo de Controle&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;&gt;&gt;&gt; # Fibonacci series:&lt;br /&gt;... # the sum of two elements defines the next&lt;br /&gt;... a, b = 0, 1&lt;br /&gt;&gt;&gt;&gt; while a &lt; 10:&lt;br /&gt;...     print a&lt;br /&gt;...     a, b = b, a+b&lt;br /&gt;&lt;/pre&gt;A primeira estrutura que veremos é o While.&lt;/br&gt;  Em Python, zero é considerado como falso e outros números é considerado verdadeiro.A condição a ser testada pelo loop pode ser também uma string ou uma lista, qualquer sequência.Podemos utilizar &lt;, &gt;, ==, &lt;=, &gt;=, != para realizar o teste da condição. &lt;/br&gt;A primeira linha do loop, que é a linha de teste, é finalizado com dois pontos(:).O corpo do loop é identado e pode-se utilizar tab ou espaços para identar a linha. Identação em Python é a forma que o ele possui para agrupar comandos. As linhas dentro do bloco precisam ficar identadas com o mesmo número de espaços ou tabs e o Python é rígico com esta questão.Quando utilizamos o ambiente interativo, é necessário uma linha em branco para indicar o fim do corpo do loop.  O comando print imprime o valor na saída padrão. Strings são impressas sem aspas e espaço é inserido entre items:   &lt;pre class="java" name="code"&gt;&gt;&gt;&gt; i = 256*256&lt;br /&gt;&gt;&gt;&gt; print 'The value of i is', i&lt;br /&gt;The value of i is 65536&lt;br /&gt;&lt;/pre&gt;A vírgula no final do comando print evita imprimir em uma nova linha: &lt;pre class="java" name="code"&gt;&gt;&gt;&gt; a, b = 0, 1&lt;br /&gt;&gt;&gt;&gt; while a &lt; 1000:&lt;br /&gt;...     print a,&lt;br /&gt;...     a, b = b, a+b&lt;br /&gt;...&lt;br /&gt;1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;No próximo post, continuaremos falando sobre outras estruturas de controle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9088607802514452928-2751809525766963040?l=juliocabral.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9088607802514452928/posts/default/2751809525766963040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9088607802514452928/posts/default/2751809525766963040'/><link rel='alternate' type='text/html' href='http://juliocabral.blogspot.com/2011/10/listas-e-estruturas-de-controle-em.html' title='Listas e Estruturas de Controle em Python'/><author><name>Julio César Cabral</name><uri>http://www.blogger.com/profile/03298943578914712855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_PrvH42xLu9Y/TVB3O8L3eAI/AAAAAAAABPI/IDPLnb4pxkA/s220/DSC00005.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-9088607802514452928.post-7029591308592259990</id><published>2011-10-20T09:15:00.002-02:00</published><updated>2011-10-20T13:56:06.177-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Primeiros Passos em Python</title><content type='html'>Para início, é muito interessante utilizar uma shell para invocar o interpretador do Python e digitar alguns comandos básicos da linguagem. Para isso, apenas se faz necessário digitar, na shell, o comando python. Como no Linux, o Python costuma vir instalado e configurado, não é necessário fazer nada. Porém, se estiver usando o Windows, é importante colocar o caminho da pasta onde o Python foi instalado no path.&lt;br /&gt;&lt;br /&gt;Para trabalhar com números, temos os operadores +, -, *, /, como em qualquer outra linguagem.&lt;br /&gt;Podemos atribuir um número a uma variável utilizando o sinal = e podemos associar um número a várias variáveis ao mesmo tempo.&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;&gt;&gt;&gt; width = 20&lt;br /&gt;&gt;&gt;&gt; height = 5*9&lt;br /&gt;&gt;&gt;&gt; width * height&lt;br /&gt;900&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; x = y = z = 0  # Zero x, y and z&lt;br /&gt;&gt;&gt;&gt; x&lt;br /&gt;0&lt;br /&gt;&gt;&gt;&gt; y&lt;br /&gt;0&lt;br /&gt;&gt;&gt;&gt; z&lt;br /&gt;0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Assim como números, temos as strings:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;&gt;&gt;&gt; 'spam eggs'&lt;br /&gt;'spam eggs'&lt;br /&gt;&gt;&gt;&gt; 'doesn\'t'&lt;br /&gt;"doesn't"&lt;br /&gt;&gt;&gt;&gt; "doesn't"&lt;br /&gt;"doesn't"&lt;br /&gt;&gt;&gt;&gt; '"Yes," he said.'&lt;br /&gt;'"Yes," he said.'&lt;br /&gt;&gt;&gt;&gt; "\"Yes,\" he said."&lt;br /&gt;'"Yes," he said.'&lt;br /&gt;&gt;&gt;&gt; '"Isn\'t," she said.'&lt;br /&gt;'"Isn\'t," she said.'&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Podemos ter strings por mais de uma linha de duas formas:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;hello = "This is a rather long string containing\n\&lt;br /&gt;several lines of text just as you would do in C.\n\&lt;br /&gt;    Note that whitespace at the beginning of the line is\&lt;br /&gt; significant."&lt;br /&gt;&lt;br /&gt;print hello&lt;br /&gt;&lt;br /&gt;print """&lt;br /&gt;Usage: thingy [OPTIONS]&lt;br /&gt;     -h                        Display this usage message&lt;br /&gt;     -H hostname               Hostname to connect to&lt;br /&gt;"""&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Strings podem ser contatenadas com o operador + e repetida com *. Podemos trabalhar com Strings utilizando índices:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;&gt;&gt;&gt; word = 'Help' + 'A'&lt;br /&gt;&gt;&gt;&gt; word&lt;br /&gt;'HelpA'&lt;br /&gt;&gt;&gt;&gt; '(' + word*5 + ')'&lt;br /&gt;'(helpahelpahelpahelpahelpa)'&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; word[4]&lt;br /&gt;'A'&lt;br /&gt;&gt;&gt;&gt; word[0:2]&lt;br /&gt;'He'&lt;br /&gt;&gt;&gt;&gt; word[2:4]&lt;br /&gt;'lp'&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; word[:2]    # Os primeiros dois caracteres&lt;br /&gt;'He'&lt;br /&gt;&gt;&gt;&gt; word[2:]    # Tudo menos os primeiros dois caracteres&lt;br /&gt;'lpA'&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; word[-1]     # O último caracter&lt;br /&gt;'A'&lt;br /&gt;&gt;&gt;&gt; word[-2]     # O penúltimo caracter&lt;br /&gt;'p'&lt;br /&gt;&gt;&gt;&gt; word[-2:]    # Os últimos dois caracteres&lt;br /&gt;'pA'&lt;br /&gt;&gt;&gt;&gt; word[:-2]    # Tudo menos os dois caracteres&lt;br /&gt;'Hel'&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Também temos a função len():&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;&gt;&gt;&gt; s = 'supercalifragilisticexpialidocious'&lt;br /&gt;&gt;&gt;&gt; len(s)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;No próximo post, estarei falando sobre estruturas de controle em Python.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9088607802514452928-7029591308592259990?l=juliocabral.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9088607802514452928/posts/default/7029591308592259990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9088607802514452928/posts/default/7029591308592259990'/><link rel='alternate' type='text/html' href='http://juliocabral.blogspot.com/2011/10/primeiros-passos-em-python.html' title='Primeiros Passos em Python'/><author><name>Julio César Cabral</name><uri>http://www.blogger.com/profile/03298943578914712855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_PrvH42xLu9Y/TVB3O8L3eAI/AAAAAAAABPI/IDPLnb4pxkA/s220/DSC00005.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-9088607802514452928.post-2535872392080237071</id><published>2011-02-05T20:11:00.005-02:00</published><updated>2011-08-08T10:12:54.542-03:00</updated><title type='text'>O que é Ruby on Rails e Instalação</title><content type='html'>&lt;b&gt;Ruby on Rails&lt;/b&gt; é um framewok que é fácil para desenvolver, fazer deploy e manter aplicações web.&lt;br /&gt;&lt;br /&gt;Tem sido escolhido por muitos para desenvolvimentos para a Web 2.0.&lt;br /&gt;&lt;br /&gt;Rails implementa uma arquitetura MVC, cria automaticamente stubs para testes, é fácil para testar aplicações.&lt;br /&gt;&lt;br /&gt;Rails é escrito em Ruby, uma linguagem moderna, de scripts e OO. Em Ruby, pode-se expressar idéias naturalmente e com um código limpo. Porém, Rails estendeu a linguagem, para uma programação ainda mais fácil.&lt;br /&gt;&lt;br /&gt;Um exemplo de uma classe Modelo chamada Project.&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;class Project &lt; ActiveRecord::Base&lt;br /&gt;  belongs_to :portfolio&lt;br /&gt;  has_one :project_manager&lt;br /&gt;  has_many :milestones&lt;br /&gt;  has_many :deliverables, :through =&gt; :milestones&lt;br /&gt;&lt;br /&gt;  validates :name, :description, :presence =&gt; true&lt;br /&gt;  validates :non_disclosure_agreement, :acceptance =&gt; true&lt;br /&gt;  validates :short_name, :uniqueness =&gt; true&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;A filosofia do Rails é: convenção sobre configuração, DRY (Don't repeat yourself) e Rest.&lt;br /&gt;&lt;br /&gt;Além disso, Rails é Agil. Ele segue as práticas dessa metodologia.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Instalação&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Aqui será explicado como instalar o Rails no Ubuntu 10.10, que possui um pouco mais de detalhes. Para instalar no Windows, siga as orientações encontradas em http://rubyonrails.org/download.&lt;br /&gt;&lt;br /&gt;execute os comandos abaixo no  terminal:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;sudo apt-get install build-essential libopenssl-ruby libfcgi-dev&lt;br /&gt;sudo apt-get install ruby irb rubygems ruby1.8-dev&lt;br /&gt;sudo apt-get install sqlite3 libsqlite3-dev&lt;br /&gt;sudo gem install rails&lt;br /&gt;sudo gem install sqlite3-ruby&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;A versão do Rails que está executando por default pode ser verificada com o comando:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;rails -version&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Se não for encontrado, execute o seguinte comando:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;export PATH=/var/lib/gems/1.8/bin:$PATH&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Com o comando abaixo, é possível verificar quais versões estão instaladas:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;gem list --local rails&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Pode-se instalar outra versão do Rails, através do comando abaixo. Existem situações onde isso possa ser necessário.&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;gem install rails -- version 3.0.1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Agora é possível verificar as versões instaladas:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;gem list --local rails&lt;br /&gt;rails _3.0.1_ --version&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9088607802514452928-2535872392080237071?l=juliocabral.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juliocabral.blogspot.com/feeds/2535872392080237071/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://juliocabral.blogspot.com/2011/02/ruby-on-rails-e-configuracao.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9088607802514452928/posts/default/2535872392080237071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9088607802514452928/posts/default/2535872392080237071'/><link rel='alternate' type='text/html' href='http://juliocabral.blogspot.com/2011/02/ruby-on-rails-e-configuracao.html' title='O que é Ruby on Rails e Instalação'/><author><name>Julio César Cabral</name><uri>http://www.blogger.com/profile/03298943578914712855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_PrvH42xLu9Y/TVB3O8L3eAI/AAAAAAAABPI/IDPLnb4pxkA/s220/DSC00005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9088607802514452928.post-5164832293499305857</id><published>2011-01-21T17:08:00.004-02:00</published><updated>2011-01-23T20:25:25.478-02:00</updated><title type='text'>Por onde começar no Ruby</title><content type='html'>Após as orientações de instalação das linguagens, encontradas no post sobre &lt;a href="http://juliocabral.blogspot.com/2011/01/linguagens-dinamicas-ruby-e-python.html"&gt;linguagens dinâmicas - Ruby e Python&lt;/a&gt;, precisamos de material e livros para estudar e aprofundarmos nessas linguagens. Se você, como eu, tem esse interesse e está um pouco perdido, vou deixar algumas dicas abaixo.&lt;br /&gt;&lt;br /&gt;Sobre Ruby, existe bons materiais na internet e, por isso, não vou ficar aqui reinventando a roda, se já escreveram para nós, vamos poupar tempo e digitação.&lt;br /&gt;&lt;br /&gt;Mas, antes de tudo, Ruby é &lt;blockquote&gt;&lt;b&gt;Uma linguagem dinâmica, open source com foco na simplicidade e na produtividade. Tem uma sintaxe elegante de leitura natural e fácil escrita.&lt;/b&gt;&lt;/blockquote&gt;Esta é a definição encontrada em http://www.ruby-lang.org/pt/&lt;br /&gt;&lt;br /&gt;No livro Why's (Poignant) Guide to Ruby, existe uma citação interessante que demonstra a simplicidade (não significa que não seja poderosa) da linguagem, em comparaçao ao Java:  &lt;blockquote&gt;&lt;b&gt;Na livraria perto de casa, existe uma enorme estante cheia de livros de Java só esperando para tombar e cair em cima de mim algum dia. E um dia isto vai acontecer. Da forma como as coisas estão indo, um dia esta estante será tão grande que se tombar vai esmagar todos nós. Pode até mesmo dar a volta ao mundo várias vezes, esmagando as edições anteriores dos mesmos livros de Java, e as novas edições atropelando estas também.&lt;/b&gt;&lt;/blockquote&gt;. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://aprendaaprogramar.rubyonrails.pro.br/" target="_blank"&gt;Aprenda a Programar&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Este é um bom material, básico sobre o Ruby, e com uma versão em português, para quem se sentir mais a vontade para ler na nossa língua. O legal que a tradução foi feita por profissionais da área, que conhecem a linguagem, como Fabio Akita. Então, você não vai encontrar traduções bizonhas, sem sentido. Tudo foi feito com cuidado. Vale a pena começar por aqui. É uma leitura agradável e rápida e já lhe dá uma visão global da linguagem.&lt;br /&gt;&lt;br /&gt;Para quem optar pela versão em inglês, pode acessar &lt;a href="http://pine.fm/LearnToProgram/" target="_blank"&gt;aqui&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://why.nomedojogo.com/" target="_blank"&gt;O Guia (comovente) de Ruby do Why&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;É um material diferente, divertido e você vai se aprofundar mais na linguagem. Também vale a leitura.&lt;br /&gt;&lt;br /&gt;Para ler o material em inglês, clique &lt;a href="http://mislav.uniqpath.com/poignant-guide/" target="_blank"&gt;aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.urubatan.com.br/ruby-101-o-basico-de-ruby-para-poder-utilizar-tanto-o-rails-quanto-o-cucumber/" target="_blank"&gt;Ruby 101 – O básico de Ruby para poder utilizar tanto o Rails quanto o Cucumber&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Este é um tutorial recente e muito bom encontrado no blog do Urubatan. É um tutorial extenso, mas vale muito a pena. Recomendo.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Livros&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Minha dica em livros são essas:&lt;br /&gt;&lt;br /&gt;Para a versão 1.8 do Ruby:&lt;br /&gt;- &lt;a href="http://pragprog.com/titles/ruby/programming-ruby" target="_blank"&gt;Programming Ruby (2nd edition): The Pragmatic Programmers' Guide&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Para a versão 1.9 do Ruby:&lt;br /&gt;- &lt;a href="http://pragprog.com/titles/ruby3/programming-ruby-1-9" target="_blank"&gt;Programming Ruby 1.9 (3rd edition): The Pragmatic Programmers' Guide&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Esses livros, conhecidos como Pickaxe book, devido a uma imagem de uma ferramenta na capa, é considerado o guia definitivo da linguagem. O único problema que vejo é que ele traz a referência da linguagem em quase metade do livro. Porém, até chegar lá, você já terá lido mais de 400 páginas. Então, entendo esse guia como um plus.&lt;br /&gt;&lt;br /&gt;O importante neste estudo é você aprender e ter uma base de Ruby antes de estudar Ruby on Rails. O livro pode ser utilizado como um livro de consulta, se preferir.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Cursos&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Recomendo o curso da &lt;a href="http://www.caelum.com.br" target="_blank"&gt;Caelum&lt;/a&gt;. para quem mora numa cidade que tem uma filial ou parceiro. Já fiz alguns cursos de Java, na Caelum Rio e foram ótimos. Tem dois cursos, na grade, sobre &lt;a href="http://www.caelum.com.br/cursos/rails/" target="_blank"&gt;Ruby on Rails&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9088607802514452928-5164832293499305857?l=juliocabral.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juliocabral.blogspot.com/feeds/5164832293499305857/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://juliocabral.blogspot.com/2011/01/por-onde-comecar-no-ruby.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9088607802514452928/posts/default/5164832293499305857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9088607802514452928/posts/default/5164832293499305857'/><link rel='alternate' type='text/html' href='http://juliocabral.blogspot.com/2011/01/por-onde-comecar-no-ruby.html' title='Por onde começar no Ruby'/><author><name>Julio César Cabral</name><uri>http://www.blogger.com/profile/03298943578914712855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_PrvH42xLu9Y/TVB3O8L3eAI/AAAAAAAABPI/IDPLnb4pxkA/s220/DSC00005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9088607802514452928.post-6849925281218269723</id><published>2011-01-18T22:28:00.001-02:00</published><updated>2011-01-21T16:20:07.964-02:00</updated><title type='text'>Linguagens Dinâmicas - Ruby e Python</title><content type='html'>Ano passado, tive meu primeiro contato profissional com linguagens dinâmicas. Na época, tive a oportunidade de dar manutenção em uma aplicação Ruby on Rails. No começo, sofri um pouco com os novos paradigmas, até conseguir fazer alguma coisa útil. Depois desse breve contato, eu acabei ficando um tempo só trabalhando e estudando Java.&lt;br /&gt;&lt;br /&gt;Porém, no final de 2010, voltei a me dedicar ao estudo dessas linguagens e tenho dedicado meu tempo a duas dessas linguagens: Python e Ruby. Claro que o tempo é escasso, mas tenho focado para tirar o melhor proveito eme aprofundar cada dia mais.&lt;br /&gt;&lt;br /&gt;Ruby e Python tem se tornado um grande vício em minha vida. Da mesma forma que o pessoal vai pra casa a noite para ficar horas jogando, estou me viciando de ir pra casa estudar Ruby e Python que, para mim, é uma grande diversão. Fico fascinado com a facilidade de, por exemplo, lidar com listas, iteraçoes, etc. Creio que essas duas linguagens, com seus frameworks web Rails e Django, vieram para ficar.&lt;br /&gt;&lt;br /&gt;Então, quero compartilhar com aqueles que desejam , sobre essa apaixonante viagem. Claro que não vou ficar aqui detalhando sobre as linguagens, mas dando algumas dicas que achei interessante e onde estudar, afinal, material na internet não falta.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para começar, você pode me perguntar: Ruby ou Python? Sinceramente, ainda não consegui nenhuma resposta. As duas, para mim, são ótimas. Já ouvi algumas pessoas defendendo uma em detrimento da outra, mas, no meu caso, não cheguei a nenhuma conclusão, quer dizer, cheguei sim: as duas. Pode ser que no futuro eu tenha uma escolha ou resposta.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Iniciando ...&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A primeira coisa que precisamos fazer, é claro, instalar o interpretador para essas linguagens.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Python no Linux&lt;/b&gt;&lt;br /&gt;Se você tem o privilégio de usar uma distro Linux, como Ubuntu, então, o  python já está instalado.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Python no Windows&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Usuários do Windows precisam fazer o  download do Python e instalá-lo.&lt;br /&gt;Visite a página de downloads do Python em http://www.python.org/download/ e escolha o instalador para sua arquitetura, além de escolher a versão do Python desejada, no caso, existe a possibilidade de instalar a versão 2.7.1 ou 3.1.3.&lt;br /&gt;&lt;br /&gt;Neste momento, tanto faz qual versão você vai instalar, porém, o framework web Django, ainda não foi atualizado para a versão 3.1.3 do Python.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ruby no Linux&lt;/b&gt;&lt;br /&gt;No Linux, como super usuário, instale o Ruby.&lt;br /&gt;No ubuntu faça:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo bash&lt;br /&gt;apt-get install ruby-full&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ruby no Windows&lt;/b&gt;&lt;br /&gt;Acesse http://www.ruby-lang.org/pt/downloads/ e siga as orientações em Ruby em Windows.&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Sugiro utilizar a versão do Linux. Caso não conheça o Linux, recomendo instalar a versão 10.10 do Ubuntu e aprender a usar esse sistema operacional.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Nos próximos posts, vamos nos aprofundar nessas linguagens.&lt;br /&gt;A idéia é após detalhar sobre elas, falar um pouco sobre Rails e Django.&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9088607802514452928-6849925281218269723?l=juliocabral.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juliocabral.blogspot.com/feeds/6849925281218269723/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://juliocabral.blogspot.com/2011/01/linguagens-dinamicas-ruby-e-python.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9088607802514452928/posts/default/6849925281218269723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9088607802514452928/posts/default/6849925281218269723'/><link rel='alternate' type='text/html' href='http://juliocabral.blogspot.com/2011/01/linguagens-dinamicas-ruby-e-python.html' title='Linguagens Dinâmicas - Ruby e Python'/><author><name>Julio César Cabral</name><uri>http://www.blogger.com/profile/03298943578914712855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_PrvH42xLu9Y/TVB3O8L3eAI/AAAAAAAABPI/IDPLnb4pxkA/s220/DSC00005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9088607802514452928.post-2832997002621505493</id><published>2009-09-27T18:58:00.030-03:00</published><updated>2009-09-27T22:15:57.264-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processos'/><title type='text'>Gerência de Processos</title><content type='html'>&lt;div style="text-align: justify;"&gt;Infelizmente, devido a correria do dia-a-dia, fiquei mais de um mês sem conseguir postar no meu blog. Além do trabalho, estudos e um curso que fiz, faltou foi tempo. Não faltaram idéias e pensamentos que gostaria que tivessem parado aqui, mas a vida continua e estou de volta. Nesse post, estou colocando algumas fotos de uns exercícios feitos em sala de aula, em uma disciplina de gerência de processos, de um curso que estava fazendo. Tirei as fotos dos exercícios dos grupos em que a turma foi dividada e fiquei com a responsabilidade de permitir que todos pudessem ter acesso a essas fotos. Mesmo com um pouquinho de atraso, aí estão elas, com os exercícios de cada grupo.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PrvH42xLu9Y/SsAKf4rLM1I/AAAAAAAABGI/GeLK2H3vtjw/s1600-h/Imagem019.jpg"&gt;&lt;img style="cursor: pointer; width: 150px; height: 200px;" src="http://1.bp.blogspot.com/_PrvH42xLu9Y/SsAKf4rLM1I/AAAAAAAABGI/GeLK2H3vtjw/s200/Imagem019.jpg" alt="" id="BLOGGER_PHOTO_ID_5386316697240810322" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PrvH42xLu9Y/SsAKVfbV5ZI/AAAAAAAABGA/_zZZ9SeD1Wc/s1600-h/Imagem015.jpg"&gt;&lt;img style="cursor: pointer; width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_PrvH42xLu9Y/SsAKVfbV5ZI/AAAAAAAABGA/_zZZ9SeD1Wc/s200/Imagem015.jpg" alt="" id="BLOGGER_PHOTO_ID_5386316518664824210" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PrvH42xLu9Y/SsAKJ42lrbI/AAAAAAAABF4/hXrooZ8Q9rU/s1600-h/Imagem014.jpg"&gt;&lt;img style="cursor: pointer; width: 200px; height: 150px;" src="http://3.bp.blogspot.com/_PrvH42xLu9Y/SsAKJ42lrbI/AAAAAAAABF4/hXrooZ8Q9rU/s200/Imagem014.jpg" alt="" id="BLOGGER_PHOTO_ID_5386316319331560882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PrvH42xLu9Y/SsAJxeipsQI/AAAAAAAABFo/VZ09ZAlgkvk/s1600-h/Imagem016.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 200px;" src="http://1.bp.blogspot.com/_PrvH42xLu9Y/SsAJxeipsQI/AAAAAAAABFo/VZ09ZAlgkvk/s200/Imagem016.jpg" alt="" id="BLOGGER_PHOTO_ID_5386315899951755522" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PrvH42xLu9Y/SsAJlxotWII/AAAAAAAABFg/3qTll2Vb5qs/s1600-h/Imagem013.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 200px;" src="http://3.bp.blogspot.com/_PrvH42xLu9Y/SsAJlxotWII/AAAAAAAABFg/3qTll2Vb5qs/s200/Imagem013.jpg" alt="" id="BLOGGER_PHOTO_ID_5386315698919004290" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PrvH42xLu9Y/SsAHnX9dZeI/AAAAAAAABFI/M6B48Dq3dKA/s1600-h/Imagem012.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 200px;" src="http://1.bp.blogspot.com/_PrvH42xLu9Y/SsAHnX9dZeI/AAAAAAAABFI/M6B48Dq3dKA/s200/Imagem012.jpg" alt="" id="BLOGGER_PHOTO_ID_5386313527363200482" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PrvH42xLu9Y/SsAHgv4zm5I/AAAAAAAABFA/JU6EYXkzkYA/s1600-h/Imagem011.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 200px;" src="http://4.bp.blogspot.com/_PrvH42xLu9Y/SsAHgv4zm5I/AAAAAAAABFA/JU6EYXkzkYA/s200/Imagem011.jpg" alt="" id="BLOGGER_PHOTO_ID_5386313413527051154" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PrvH42xLu9Y/SsAHYKtNPgI/AAAAAAAABE4/uVFlKMo38WM/s1600-h/Imagem010.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 200px;" src="http://4.bp.blogspot.com/_PrvH42xLu9Y/SsAHYKtNPgI/AAAAAAAABE4/uVFlKMo38WM/s200/Imagem010.jpg" alt="" id="BLOGGER_PHOTO_ID_5386313266107334146" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PrvH42xLu9Y/SsAHLVnaizI/AAAAAAAABEw/vN0FYQXFWCk/s1600-h/Imagem009.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 200px;" src="http://2.bp.blogspot.com/_PrvH42xLu9Y/SsAHLVnaizI/AAAAAAAABEw/vN0FYQXFWCk/s200/Imagem009.jpg" alt="" id="BLOGGER_PHOTO_ID_5386313045697530674" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PrvH42xLu9Y/SsAD59qd3WI/AAAAAAAABEo/P1wWpgIALCE/s1600-h/Imagem008.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 200px;" src="http://3.bp.blogspot.com/_PrvH42xLu9Y/SsAD59qd3WI/AAAAAAAABEo/P1wWpgIALCE/s200/Imagem008.jpg" alt="" id="BLOGGER_PHOTO_ID_5386309448675220834" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PrvH42xLu9Y/SsADyaAS-AI/AAAAAAAABEg/MZfOWXXGD3o/s1600-h/Imagem007.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 200px;" src="http://2.bp.blogspot.com/_PrvH42xLu9Y/SsADyaAS-AI/AAAAAAAABEg/MZfOWXXGD3o/s200/Imagem007.jpg" alt="" id="BLOGGER_PHOTO_ID_5386309318844020738" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PrvH42xLu9Y/SsADpu4j0tI/AAAAAAAABEY/RSqKPWx-E1U/s1600-h/Imagem006.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 200px;" src="http://4.bp.blogspot.com/_PrvH42xLu9Y/SsADpu4j0tI/AAAAAAAABEY/RSqKPWx-E1U/s200/Imagem006.jpg" alt="" id="BLOGGER_PHOTO_ID_5386309169829892818" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PrvH42xLu9Y/SsADg4CXn2I/AAAAAAAABEQ/fuiKYbTHY7Q/s1600-h/Imagem005.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 200px;" src="http://1.bp.blogspot.com/_PrvH42xLu9Y/SsADg4CXn2I/AAAAAAAABEQ/fuiKYbTHY7Q/s200/Imagem005.jpg" alt="" id="BLOGGER_PHOTO_ID_5386309017668132706" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PrvH42xLu9Y/SsADb7yA9DI/AAAAAAAABEI/_DIcBtPTD9Q/s1600-h/Imagem004.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 200px;" src="http://2.bp.blogspot.com/_PrvH42xLu9Y/SsADb7yA9DI/AAAAAAAABEI/_DIcBtPTD9Q/s200/Imagem004.jpg" alt="" id="BLOGGER_PHOTO_ID_5386308932773934130" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PrvH42xLu9Y/SsADWy8cpaI/AAAAAAAABEA/jVYwLvOU6Bc/s1600-h/Imagem003.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 200px;" src="http://2.bp.blogspot.com/_PrvH42xLu9Y/SsADWy8cpaI/AAAAAAAABEA/jVYwLvOU6Bc/s200/Imagem003.jpg" alt="" id="BLOGGER_PHOTO_ID_5386308844502427042" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9088607802514452928-2832997002621505493?l=juliocabral.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juliocabral.blogspot.com/feeds/2832997002621505493/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://juliocabral.blogspot.com/2009/09/gerencia-de-processos.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9088607802514452928/posts/default/2832997002621505493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9088607802514452928/posts/default/2832997002621505493'/><link rel='alternate' type='text/html' href='http://juliocabral.blogspot.com/2009/09/gerencia-de-processos.html' title='Gerência de Processos'/><author><name>Julio César Cabral</name><uri>http://www.blogger.com/profile/03298943578914712855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_PrvH42xLu9Y/TVB3O8L3eAI/AAAAAAAABPI/IDPLnb4pxkA/s220/DSC00005.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PrvH42xLu9Y/SsAKf4rLM1I/AAAAAAAABGI/GeLK2H3vtjw/s72-c/Imagem019.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
