<?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-1301931137608599446</id><updated>2012-03-16T10:16:57.496-07:00</updated><category term='myself'/><category term='google summer of code'/><title type='text'>while  (!(succeed = try()));</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-1417014481953406347</id><published>2011-08-17T19:48:00.000-07:00</published><updated>2011-08-17T19:52:09.627-07:00</updated><title type='text'>Using Dropbox as remote server for git repositories</title><content type='html'>If you is experimenting on a project, dont want to put it publicly on github, and dont want to pay for a private repository. Here is a cheap solution =P.&lt;br /&gt;&lt;br /&gt;We will see how to use Dropbox as your remote server for git repositories. Since dropbox can update your repository folder quite fast, this a good solution. But if you are working with multiple developers, and two of them push at the same time Dropbox could get lost and damage your repository. So this is a good solution for yourself or very few collaborators.&lt;br /&gt;The solution:&lt;br /&gt;&lt;br /&gt;On your project folder:&lt;br /&gt;&lt;br /&gt;initialize git repository&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;~/my_project_name/ $ git init&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;add your code&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;˜/my_project_name/ $&amp;nbsp; git add &lt;i&gt;code_you_want_to_sync_goes_here&lt;code_you_want_to_sync_goes_here&gt;&lt;/code_you_want_to_sync_goes_here&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;commit it&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;~/my_project_name/ $ git commit -m 'my first commit message'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;change to you dropbox folder. There, create a folder to hold your git repositories, lets say my_git.&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;~/Dropbox/my_git/ $ mkdir my_project_name.git&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;~/Dropbox/my_git/ $ cd my_project_name.git&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;create a bare repositorie&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;~/Dropbox/my_git/my_project_name/ $ git init --bare&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Go back to your project folder and add this folder as the remote&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;~/my_project_name/ $ git remote add origin ~/Dropbox/my_git/my_project_name.git&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;~/my_project_name/ $ git push origin master&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For cloning on another machine just:&lt;br /&gt;(considering that you have dropbox on that machine and the repository folder is synced.)&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;git clone ~/Dropbox/my_git/my_project_name.git&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;An observation:&lt;br /&gt;If&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; git pul&lt;/span&gt;l or&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; git push&lt;/span&gt; fails, use &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;git pull origin master&lt;/span&gt;. (or the same for push)&lt;br /&gt;&lt;br /&gt;That's it =]. Have fun&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-1417014481953406347?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/1417014481953406347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/08/using-dropbox-as-remote-server-for-git.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/1417014481953406347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/1417014481953406347'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/08/using-dropbox-as-remote-server-for-git.html' title='Using Dropbox as remote server for git repositories'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-6053367201961415449</id><published>2011-06-18T16:21:00.000-07:00</published><updated>2011-06-18T16:22:14.398-07:00</updated><title type='text'>Cool Sites 4: Convore</title><content type='html'>Today I'm gonna talk about:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;a href="https://convore.com/"&gt;https://convore.com/&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's a pretty neat site where you can chat and find people by your interest.&lt;br /&gt;It&amp;nbsp; has these groups that are very content focused, so it's a nice way to meet people and discuss some subject that interest you.&lt;br /&gt;As they say it's less "geeky" than irc.&lt;br /&gt;I recommend =]&lt;br /&gt;thanks for the attention,&lt;br /&gt;&lt;br /&gt;Anderson&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-6053367201961415449?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/6053367201961415449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/06/cool-sites-4-convore.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/6053367201961415449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/6053367201961415449'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/06/cool-sites-4-convore.html' title='Cool Sites 4: Convore'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-6403029544917449300</id><published>2011-06-17T18:59:00.000-07:00</published><updated>2011-06-17T19:05:40.220-07:00</updated><title type='text'>Python script for adding license to open your project source</title><content type='html'>This week in my Internship, we wanted to add GPL license to free a project (as in freedom...Open the Source code).&lt;br /&gt;&lt;br /&gt;Since the project was in Java, it had plenty of files and folders. So I created this very simple script in Python to add the license notices for me.&lt;br /&gt;&lt;br /&gt;Maybe latter, I will make more generic so it can accept any kind of source extension and license notice. But Its very easy to change the script if you need. &lt;br /&gt;&lt;br /&gt;Use as you wish =]:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#! /usr/bin/env python&lt;br /&gt;# -*- coding: utf-8&lt;br /&gt;&lt;br /&gt;import os&lt;br /&gt;import sys&lt;br /&gt;&lt;br /&gt;__author__ = 'Anderson Pierre Cardoso &lt;apierre.cardoso@gmail.com&gt;'&lt;br /&gt;&lt;br /&gt;file_extension = '.java'&lt;br /&gt;license_notice = """&lt;br /&gt;/*******************************************************************************&lt;br /&gt;&amp;nbsp;* Copyright 2011 sua-empresa-vai-aqui&lt;br /&gt;&amp;nbsp;* Este arquivo é parte do programa seu-programa-vai-aqui&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;* Este programa é um software livre; você pode redistribui-lo e/ou&lt;br /&gt;&amp;nbsp;* modifica-lo dentro dos termos da Licença Pública Geral GNU como&lt;br /&gt;&amp;nbsp;* publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença,&lt;br /&gt;&amp;nbsp;* ou (na sua opinião) qualquer versão posterior.&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;* Este programa é distribuido na esperança que possa ser&amp;nbsp; util, mas&lt;br /&gt;&amp;nbsp;* SEM NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer&lt;br /&gt;&amp;nbsp;* MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU para&lt;br /&gt;&amp;nbsp;* maiores detalhes.&lt;br /&gt;&amp;nbsp;* Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o&lt;br /&gt;&amp;nbsp;* título "LICENCA.txt", junto com este programa, se não, escreva para a&lt;br /&gt;&amp;nbsp;* Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,&lt;br /&gt;&amp;nbsp;* Boston, MA&amp;nbsp; 02110-1301&amp;nbsp; USA&lt;br /&gt;&amp;nbsp;******************************************************************************/&lt;br /&gt;&lt;br /&gt;"""&lt;br /&gt;&lt;br /&gt;def prepend_license(file_path):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; """&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; prepends the license notice into a file&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; """&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'adding license to file: %s'%file_path&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; with open(file_path, 'r+') as f:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; old = f.read()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.seek(0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f.write(license_notice + old)&lt;br /&gt;&lt;br /&gt;def path_walker(raiz):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for root,dirs,files in os.walk(raiz):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [prepend_license(os.path.join(root,f)) for f in files if f.endswith(file_extension)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'finished path walking =]'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;if __name__=='__main__':&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if len(sys.argv) &amp;lt; 2 or not os.path.isdir(sys.argv[1]):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;gt;&amp;gt; sys.stderr, '\nOps, pass a valid root folder (of your project) as argument'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit()&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; raiz = os.path.join(os.getcwd(), sys.argv[1])&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'root folder is %s'%(raiz)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; path_walker(raiz)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/apierre.cardoso@gmail.com&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;Have a happy project-Open-Sourcing =P&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;att&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;Anderson P Cardoso&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-6403029544917449300?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/6403029544917449300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/06/python-script-for-adding-license-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/6403029544917449300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/6403029544917449300'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/06/python-script-for-adding-license-to.html' title='Python script for adding license to open your project source'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-1089010834578197315</id><published>2011-06-10T17:24:00.000-07:00</published><updated>2011-06-10T17:24:52.284-07:00</updated><title type='text'>gnome3 on ubuntu 11.04</title><content type='html'>I'm using, and loving, gnome 3 on Ubuntu natty.&lt;br /&gt;&lt;br /&gt;Not because I dont like Unity, because I really approve the work canonical is doing. But gnome 3 is just fantastic.&lt;br /&gt;&lt;br /&gt;For example the new mac osx lion has that new "mission control" feature that they are bragging about, but its just a copy of the control view of the gnome3 (hit super in your keyboard or drag the mouse to the upper left corner). &lt;br /&gt;&lt;br /&gt;And many more.&lt;br /&gt;&lt;br /&gt;So lets see how to install:&lt;br /&gt;&lt;br /&gt;In a Ubuntu 11.04 open a terminal window&lt;br /&gt;&lt;br /&gt;type:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo apt-add-repository ppa:gnome3-team/gnome3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo apt-get update&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo apt-get dist-upgrade&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo apt-get update&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo apt-get install gnome-shell&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;if your interface is a little weird try remove the acessibility theme, it should get back to normal:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo apt-get remove gnome-accessibility-themes&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo apt-get instal gnome-themes-standard&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;to tweak the interface&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo apt-get install gnome-tweak-tool&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;to use the tool in the terminal just type:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;gnome-tweak-tool&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Thats it, I hope you enjoy as much I'm doing&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anderson Pierre Cardoso&lt;br /&gt;&lt;br /&gt;OBS: there is still a lot of bugs and uncreated stuff, since the interface is brand new and they're remaking everything. So there is no much indicators, or options, and etc yet. Just be patience =]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-1089010834578197315?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/1089010834578197315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/06/gnome3-on-ubuntu-1104.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/1089010834578197315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/1089010834578197315'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/06/gnome3-on-ubuntu-1104.html' title='gnome3 on ubuntu 11.04'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-8174973468423456281</id><published>2011-05-06T19:25:00.000-07:00</published><updated>2011-05-06T19:25:58.208-07:00</updated><title type='text'>Firefox 4</title><content type='html'>I'm simply loving Firefox 4.&lt;br /&gt;&lt;br /&gt;It's the best browser I ever used. &lt;br /&gt;&lt;br /&gt;In the previous 3.6 version, I was unhappy and switched to Chrome, wich is very nice either. But with the release of the FF4, I quickly returned to FF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The apptabs and the panorama are those kind features that after you start using, you can't live without anymore.&lt;br /&gt;&lt;br /&gt;The only feature I like in Chrome and is missing on FF4, but it will be added in the FF5 to be release next month, is opening PDF files in the browser itself (on a tab). &lt;br /&gt;&lt;br /&gt;For those who are not using I really recommend downloading and giving a try. Watch some video on the site so you could see more about these new features. If you give a try, then probably gonna get hooked.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mozilla.com/en-US/firefox/video/?video=fx4-ui"&gt;http://www.mozilla.com/en-US/firefox/video/?video=fx4-ui&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;thanks,&lt;br /&gt;att&lt;br /&gt;&lt;br /&gt;Anderson P Cardoso&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-8174973468423456281?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/8174973468423456281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/05/firefox-4.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/8174973468423456281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/8174973468423456281'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/05/firefox-4.html' title='Firefox 4'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-5020804847362557507</id><published>2011-04-06T06:48:00.000-07:00</published><updated>2011-04-06T06:48:52.839-07:00</updated><title type='text'>[book review] Getting Real &amp;&amp; Rework</title><content type='html'>I finished reading both books of 37 signals (actually Jason Fried and David H Hansson books).&lt;br /&gt;They are "Getting Real" and "Rework".&lt;br /&gt;&lt;br /&gt;I will try to make a brief review of my impressions:&lt;br /&gt;&lt;br /&gt;The two books treat, very much about the same subject ... minimalism. But from different point of views. &lt;br /&gt;The first, Getting Real, is more focused on Software Development. While REwork is more on bussines. But the key ideas are present in both.&lt;br /&gt;&lt;br /&gt;It was some of the best readings I had lately. I really enjoyed the books.&lt;br /&gt;Many of the ideas I read there, was already had (foggy) on my mind. It helped me to see it more clearly.&lt;br /&gt;&lt;br /&gt;The concepts of "Do less", "stay lean" and etc are a really nice and valid point of view.&lt;br /&gt;Also for me the idea of "just build something Real! up and running, quickly." is what separate well succedded start-ups from those who fail. &lt;br /&gt;Inumerous mettings and "decision" conferences are pointless and lead to nothing.&lt;br /&gt;&lt;br /&gt;One of the chapters that hitted me more, since is related to a situation that I presented, is the one about the "idea guy". I've been talking this to many people for a while. In IT, in software development, the "idea guy" has no value. What counts is the execution. &lt;br /&gt;Great execution adds more to the&amp;nbsp; software than the "idea guy" could add.&lt;br /&gt;&lt;br /&gt;Not that ideas are not important...of course they are. But the concept of the bussines-visionary-guy dictating what to do next, vomiting ideas everywhere, is ridiculous. &lt;br /&gt;"Success is about great execution". With a little idea and a great execution, you have a good product. With a great idea and poor (or no) execution, you have nothing.&lt;br /&gt;&lt;br /&gt;Well, I really recommend the books. Is a worthwhile reading.&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;&lt;br /&gt;Anderson Pierre Cardoso&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-5020804847362557507?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/5020804847362557507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/04/book-review-getting-real-rework.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/5020804847362557507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/5020804847362557507'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/04/book-review-getting-real-rework.html' title='[book review] Getting Real &amp;&amp; Rework'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-7222387745869923622</id><published>2011-03-04T15:51:00.000-08:00</published><updated>2011-03-04T15:51:22.496-08:00</updated><title type='text'>Installing the desktop  Kindle application with wine on Ubuntu 10.10</title><content type='html'>After trying a while with the repository version of wine, and getting frustated. I discovered that the kindle 1.3 solves the problem perfectly.&lt;br /&gt;&lt;br /&gt;here is how:&lt;br /&gt;&lt;br /&gt;This worked on a Ubuntu GNU/Linux 10.10 (maverick merkat)&lt;br /&gt;and wine 1.3&lt;br /&gt;&lt;br /&gt;first you need to add the wine repository to your apt-get list&lt;br /&gt;to do so:&lt;br /&gt;&lt;br /&gt;Software Center -&amp;gt; edit -&amp;gt; software sources -&amp;gt; other software -&amp;gt; add&lt;br /&gt;in the add box type: ppa:ubuntu-wine/ppa&lt;br /&gt;reload the sources list (probably the software center makes this by himself)&lt;br /&gt;now go to a terminal:&lt;br /&gt;sudo apt-get install wine1.3&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;download the "Kindle For PC" application in the Amazon's site.&lt;br /&gt;double click in the .exe ...follow the instructions.&lt;br /&gt;and ta - daaaaaa ...it works (at least for me worked hehe)&lt;br /&gt;&lt;br /&gt;Using older versions of wine was quite problematic to make this run. Kudos for the wine team for fixing and making it run so smoothly.&lt;br /&gt;&lt;br /&gt;enjoy your cheap and super-cool kindle books.&lt;br /&gt;att&lt;br /&gt;&lt;br /&gt;Anderson Pierre Cardoso&lt;br /&gt;&lt;br /&gt;OBS: it synchronizes with your Amazon account perfectly. So you could download your purchased books, and synchronize your bookmarks and last pages normally&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-7222387745869923622?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/7222387745869923622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/03/installing-desktop-kindle-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/7222387745869923622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/7222387745869923622'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/03/installing-desktop-kindle-application.html' title='Installing the desktop  Kindle application with wine on Ubuntu 10.10'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-1433366944362674384</id><published>2011-03-03T15:44:00.000-08:00</published><updated>2011-03-03T15:45:52.911-08:00</updated><title type='text'>making git ignore your .pyc files</title><content type='html'>When programming python in a project with git for version control you get annoyed all the time with the .pyc being showed as an untracked changed.&lt;br /&gt;to change that:&lt;br /&gt;&lt;br /&gt;open an terminal&lt;br /&gt;go to your project root folder&lt;br /&gt;type:&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; echo '*.pyc' &amp;gt; .gitignore&lt;/span&gt;&lt;br /&gt;you have created a .gitignore file, with the extensions that git should ignore&lt;br /&gt;now just commit that&lt;br /&gt;type: &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;git add .gitignore&lt;/span&gt;&lt;br /&gt;type: &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;git commit -m "adding .gitignore file"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;done! No more polluted &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;git status&lt;/span&gt; in your project =]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;have a happy hacking!&lt;br /&gt;att&lt;br /&gt;&lt;br /&gt;Anderson Pierre Cardoso&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-1433366944362674384?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/1433366944362674384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/03/making-git-ignore-your-pyc-files.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/1433366944362674384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/1433366944362674384'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/03/making-git-ignore-your-pyc-files.html' title='making git ignore your .pyc files'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-8539357657638394197</id><published>2011-03-02T11:49:00.000-08:00</published><updated>2011-03-02T11:53:06.054-08:00</updated><title type='text'></title><content type='html'>It's been quite a while since I dont came here.&lt;br /&gt;I've been playing a little bit with Django[0] lattely. I'm really enjoying it despite the need of more settings to up an application,&amp;nbsp; than with web2py. But it seems more flexible and more powerful.&lt;br /&gt;&lt;br /&gt;Although I'm really interested on giving a better look at Ruby on Rails[1] yet.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm also making some experimentations with Ajax and Javascript, quite fun =].&lt;br /&gt;=].&lt;br /&gt;I must say that these where the most fruitful vacations ever!&lt;br /&gt;&lt;br /&gt;att,&lt;br /&gt;&lt;br /&gt;Anderson Pierre Cardoso&lt;br /&gt;&lt;br /&gt;[0] &lt;a href="http://www.djangoproject.com/"&gt;http://www.djangoproject.com/&lt;/a&gt;&lt;br /&gt;[1] &lt;a href="http://rubyonrails.org/"&gt;http://rubyonrails.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-8539357657638394197?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/8539357657638394197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/03/playing-little-bit-with-django0.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/8539357657638394197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/8539357657638394197'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/03/playing-little-bit-with-django0.html' title=''/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-6677110484371844726</id><published>2011-01-31T07:45:00.001-08:00</published><updated>2011-01-31T07:45:43.917-08:00</updated><title type='text'>Cool Sites 3: The geek talk</title><content type='html'>&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Today I'm going to talk about thegeektalk:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;a href="http://www.blogger.com/%20http://thegeektalk.com/"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;http://thegeektalk.com/&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The geek talk is a set of interviews with developers and designers around the globe.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Its very cool, and inspirational some times, see what others are doing, in what they are working on, and etc. One of my favorites parts is the&amp;nbsp; "picture of your workplace", is fun to see how different people organize their space.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;There is lots of great developers over there.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Great site for developers procrastinating a little bit =].&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Cool site!&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;stay tunned!&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Anderson&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-6677110484371844726?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/6677110484371844726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/cool-sites-3-geek-talk.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/6677110484371844726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/6677110484371844726'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/cool-sites-3-geek-talk.html' title='Cool Sites 3: The geek talk'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-3685227424985682767</id><published>2011-01-31T07:44:00.004-08:00</published><updated>2011-01-31T07:46:11.600-08:00</updated><title type='text'>Cool Sites 2: Coder.io</title><content type='html'>&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Since the last post I'd talked about reddit, today I going to talk about coder.io&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;a href="http://coder.io/"&gt;http://coder.io&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Coder.io is also a aggregator for news and posts like reddit, but as the name suggest it just about programming, also instead you post links and the news being in the site itself, he gets the feeds from other sites/blogs/etc. So if you post something useful in a development area on reddit is very probable that it either pops on code.io .&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Its very nice for having lot of great fresh news on development, you can select the subject (tags) that interest you more and see news concerning only that.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Very cool site!&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;stay tunned,&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Anderson&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-3685227424985682767?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/3685227424985682767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/coderio.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/3685227424985682767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/3685227424985682767'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/coderio.html' title='Cool Sites 2: Coder.io'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-2381351473985933562</id><published>2011-01-31T07:44:00.000-08:00</published><updated>2011-01-31T07:44:01.926-08:00</updated><title type='text'>Cool Sites 1: Reddit</title><content type='html'>&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;I decided to merge my other blog (that just started) with this, and maintain just one.&lt;br /&gt;So I will be replicating the posts over there in here. Just for not losing anything:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;For starting I decided to talk about Reddit -&amp;gt;&lt;a href="http://www.reddit.com/"&gt;&amp;nbsp;&lt;span style="font-size: large;"&gt;www.reddit.com&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;this is one of my main addictions lately.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The reddit is a link aggregator, mostly of blogs and news, like digg,&amp;nbsp; but in my opinion much better and more complete (at least on my field).&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;One curiosity is that reddit is build in python and looks like they use app engine on their infra-structure.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Really cool site!&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;stay tunned&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Anderson&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-2381351473985933562?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/2381351473985933562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/cool-sites-1-reddit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/2381351473985933562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/2381351473985933562'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/cool-sites-1-reddit.html' title='Cool Sites 1: Reddit'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-8787812113661090358</id><published>2011-01-24T17:39:00.000-08:00</published><updated>2011-01-25T11:31:30.520-08:00</updated><title type='text'>aumentando a velocidade do Ubuntu GNU/Linux manipulando sua swappiness</title><content type='html'>O Ubuntu (assim como outras distribuições do GNU/Linux) usam uma partição de swap, que "extende" a memória ram do seu pc, entre outras funcionalidades.&lt;br /&gt;O seu sistema tem uma propriedade chamada swappiness. Esse valor pode ser conferido usando:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cat /proc/sys/vm/swappiness&lt;/div&gt;&lt;br /&gt;Esse valor varia de 0 a 100 e ele indica a tendência que o kernel tem de mover seus dados para o swap. Por padrão ele é setado como sendo 60.&lt;br /&gt;para 0 ele evitirá ao máximo usar o swap&lt;br /&gt;para 100 ele preferirá usa-lo&lt;br /&gt;Sendo assim para altos valores, você terá certa segurança maior no gerenciamente de memória, porém a velocidade do seu sistema é reduzida dessa forma.&lt;br /&gt;&lt;br /&gt;Uma primeira solução é "desligar" o swap: &lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo swapoff -a&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;digite o comando free e veja que sua swap agora é 0 MB&lt;br /&gt;essa solução é temporária e perde efeito ao reiniciar o computador.&lt;br /&gt;&lt;br /&gt;para restaurar sua swap basta digitar:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo swapon -a&lt;/div&gt;&lt;br /&gt;Desligando o swap vc extrairá o máximo de velocidade já que todos os dados serão mandados diretamente para RAM. Porém se o seu sistema estiver requisitando memória demais e por algum motivo ele estourar o limite, ele congelará totalmente. Então vc deve fazer isso com sabedoria, se seu computador tem pouca RAM e vc requisita memória demais (virtualbox, gimp, blender, etc) talvez vc deva considerar a outra solução. &lt;br /&gt;Como meu sistema tem 4G e não costumo chegar no seu limite, eu uso essa solução.&lt;br /&gt;&lt;br /&gt;A outra maneira e diminuir o valor de swappiness do sistema, para tanto faça :&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo gedit /etc/sysctl.conf&lt;/div&gt;na linha com &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;vm.swappiness&lt;/span&gt; mude seu valor. Se a linha não existir acrescente-a:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;vm.swappiness=0&lt;/div&gt;salve o arquivo e re-boote o computador.&lt;br /&gt;&lt;br /&gt;A performance do seu computador terá melhorado um pouco =].&lt;br /&gt;have a happy hacking&lt;br /&gt;abs&lt;br /&gt;&lt;br /&gt;Anderson Pierre Cardoso&lt;br /&gt;&lt;pre&gt;&amp;nbsp; &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-8787812113661090358?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/8787812113661090358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/aumentando-velocidade-do-ubuntu.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/8787812113661090358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/8787812113661090358'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/aumentando-velocidade-do-ubuntu.html' title='aumentando a velocidade do Ubuntu GNU/Linux manipulando sua swappiness'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-1297070852036697693</id><published>2011-01-22T17:51:00.000-08:00</published><updated>2011-01-25T11:30:53.790-08:00</updated><title type='text'>sync your web2py application bettwen computers using dropbox</title><content type='html'>First of all: yes I know I could have used git/svn/hg for that. But that is not the point.&lt;br /&gt;I was working at a simple web2py project and I wanted to synchronized it between my computers.&lt;br /&gt;Since I always used dropbox to sync my files and I'm working on this project alone, I decided to use it.&lt;br /&gt;The idea is pretty simple, for anyone with very little experience in Linux/Unix. Just use soft links!&lt;br /&gt;&lt;br /&gt;I made this between a GNU/Linux machine and a mac.&lt;br /&gt;&lt;br /&gt;1) create your application in any of the computers (both must have dropbox).&lt;br /&gt;2) inside the web2py folder there a folder called "applications" with all your apps there. Move you app folder, with all its content, to a dropbox folder (with the same name preferably, but not necessarily).&lt;br /&gt;3) go to a terminal and enter:&lt;br /&gt;&amp;nbsp;&amp;nbsp; cd /path-to-web2py/applications/&lt;br /&gt;&amp;nbsp;&amp;nbsp; sudo ln -s /path-to-dropbox/your-app &amp;nbsp;name-of-your-app&lt;br /&gt;4) go to the other machine and do the same with the web2py over there:&lt;br /&gt;&amp;nbsp;&amp;nbsp; cd /path-to-web2py/applications/&lt;br /&gt;&amp;nbsp;&amp;nbsp; sudo ln -s /path-to-dropbox/your-app &amp;nbsp;name-of-your-app&lt;br /&gt;&lt;br /&gt;ta-daaaa...Now you can edit your app In both machines synchronizedly.&lt;br /&gt;&lt;br /&gt;OBS:&lt;br /&gt;in the mac the path to de application folder is:&lt;br /&gt;&amp;nbsp;&amp;nbsp;/your-path-to-web2py/web2py/web2py.app/Contents/Resources/applications&lt;br /&gt;In the GNU/Linux is just:&lt;br /&gt;&amp;nbsp;/your-path-to-web2py/web2py/applications&lt;br /&gt;&lt;br /&gt;att&lt;br /&gt;&lt;br /&gt;Anderson Pierre Cardoso&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-1297070852036697693?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/1297070852036697693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/synch-your-web2py-application-bettwen.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/1297070852036697693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/1297070852036697693'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/synch-your-web2py-application-bettwen.html' title='sync your web2py application bettwen computers using dropbox'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-3925986818263231553</id><published>2011-01-20T15:12:00.000-08:00</published><updated>2011-01-20T15:12:25.183-08:00</updated><title type='text'>trick for iterating over columns using map and the * operator</title><content type='html'>Taking advantage of the last post, where I talk briefly about map. I will talk today about a simple trick for iteration over columns when you have a multidimensional array in python.&lt;br /&gt;&lt;br /&gt;lets say you have :&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; l = [[1,2,3],[4,5,6],[7,8,9]]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;in common way, you iterate over its rows, like:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; for row in l:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; print row &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But if you want to iterate over its columns, you could use:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; for col in &lt;b&gt;map(lambda *c: c, *l)&lt;/b&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;print col&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;this will give :&lt;br /&gt;(1,4,7)&lt;br /&gt;(2,5,8)&lt;br /&gt;(3,6,9)&lt;br /&gt;&lt;br /&gt;=],&amp;nbsp;this works because the operator * unpack the list structure. pretty nice !&lt;br /&gt;&lt;br /&gt;att&lt;br /&gt;&lt;br /&gt;Anderson Pierre Cardoso&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-3925986818263231553?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/3925986818263231553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/trick-for-iterating-over-columns-using.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/3925986818263231553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/3925986818263231553'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/trick-for-iterating-over-columns-using.html' title='trick for iterating over columns using map and the * operator'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-5027173048128135019</id><published>2011-01-19T10:17:00.000-08:00</published><updated>2011-01-19T10:21:18.351-08:00</updated><title type='text'>functional python and built-in functions. pt 1</title><content type='html'>I will make a short serie of functional aspects of python, and some of its built-in functions. I'm not aiming to be complete about the subject, just explore some features.&lt;br /&gt;These tools are neglected for some programmers but they are surprisingly usefull and very fast.&lt;br /&gt;I started using more them when I started solving problems for the hacker cup and the google code jam. In these competitions you need, besides solving the problem, make it work for huge data sets, and huge numbers. These functions, being really optmized and clean, help a lot for bringing more performance to your script.&lt;br /&gt;lets see some features:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;lambda:&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Lambda are anonymous fast functions. Very much used for being passed as argument to other functions.&lt;br /&gt;&amp;nbsp;&amp;nbsp; some tiny examples:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;gt;&amp;gt;&amp;gt; f = lambda x: 2*x&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;gt;&amp;gt;&amp;gt; f(3) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;#gives 6&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;gt;&amp;gt;&amp;gt; (lambda x: 2*x)(3) &amp;nbsp; &amp;nbsp;#also gives 6&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;map(function, iter_list)&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;This function grabs a iterable &amp;nbsp;list of values and a applies a function to all its values, return a list of the returned values.&lt;br /&gt;&amp;nbsp;&amp;nbsp; For the function you could use any function that you define(def), or a lambda function or even a built-in function. For list you can also use any kind of iterable. A list, a range, a list comprehension, another map, anything.&lt;br /&gt;&amp;nbsp;&amp;nbsp; some examples:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;gt;&amp;gt;&amp;gt; # calculate the squares of a list&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;gt;&amp;gt;&amp;gt; map(lambda x: x**2, xrange(101))&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;gt;&amp;gt;&amp;gt; # grab the integer values inside a file&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;gt;&amp;gt;&amp;gt; f &amp;nbsp;= open('some_file_with_int_numbers.txt')&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;gt;&amp;gt;&amp;gt; numbers = map(int, f.read().strip('\n').split() )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To be short I will post more in another day.&lt;br /&gt;Read the documentation for lambda and map in the pydocs. There's everything you gonna need.&lt;br /&gt;have a happy hacking!&lt;br /&gt;&lt;br /&gt;Anderson Pierre Cardoso&lt;br /&gt;&lt;br /&gt;obs: the arrows ('&amp;gt;&amp;gt;&amp;gt;') up above is for indicating the python interactive shell.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-5027173048128135019?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/5027173048128135019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/functional-python-and-built-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/5027173048128135019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/5027173048128135019'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/functional-python-and-built-in.html' title='functional python and built-in functions. pt 1'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-4280650928897225277</id><published>2011-01-16T13:47:00.000-08:00</published><updated>2011-01-16T13:47:38.961-08:00</updated><title type='text'></title><content type='html'>warning: random babbling. If you dont care, dont read.&lt;br /&gt;&lt;br /&gt;dammit.. how much I would love go to Silicon Valley (CA- US) work with start-ups&lt;br /&gt;thats definitely the level of inovation, excitment and enthusiasm that I want.&lt;br /&gt;The level of inovation per worker/$ that such a environment/initiative can bring is way bigger than pratically any big company can do.&lt;br /&gt;I dont see myself doing the same repeated boring work over and over again. I need this kind of enthusiasm.&lt;br /&gt;while thats not possible, I will be working on some new projects that I've been thinking of.&lt;br /&gt;If the projects work well , maybe I could try a start-up on my own,around here. But alone is quite difficult. Someone to share and discuss would be nice.&lt;br /&gt;Lets see what life brings on.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-4280650928897225277?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/4280650928897225277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/warning-random-babbling.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/4280650928897225277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/4280650928897225277'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/warning-random-babbling.html' title=''/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-34358877150649650</id><published>2011-01-09T07:28:00.000-08:00</published><updated>2011-01-09T07:28:47.961-08:00</updated><title type='text'>python earns most market share during 2010</title><content type='html'>Turns out that despite the increase of objective-C (arrgh x__x) usage because of iPhone/iPad/iAnything development, Python is the language who earned most market share during 2010.&lt;br /&gt;Wonderful news for a Python enthusiast like me =].&lt;br /&gt;For the a complete look up of the TIOBE index -&amp;gt; &lt;a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html?page=results_2010"&gt;http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html?page=results_2010&lt;/a&gt;&lt;br /&gt;Besides that, it's very sad to see that lot of proprietary/"purely-comercial" languages still figure on top positions.&lt;br /&gt;&lt;br /&gt;taking advantage of the post I will recommend this link, with a very nice article about the programmers market -&amp;gt; &lt;a href="http://www.paulgraham.com/pypar.html"&gt;http://www.paulgraham.com/pypar.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-34358877150649650?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/34358877150649650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/python-earns-most-market-share-during.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/34358877150649650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/34358877150649650'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/python-earns-most-market-share-during.html' title='python earns most market share during 2010'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-688268386038326655</id><published>2011-01-02T17:00:00.000-08:00</published><updated>2011-01-02T17:01:20.221-08:00</updated><title type='text'>ternary operator in Python</title><content type='html'>For C++ and Java programmers, a very common operation is using the ternary operator for fast conditional expressions, generally something like:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;var = (conditional_expression) ? truth_value : false_value;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;where var will receive truth_value if conditional_expression returns True, or false_value if the expression is evaluated to False.&lt;br /&gt;&lt;br /&gt;But historically Python didn't had such feature (before 2.5 version to be more specific). For having this effect, they used a clever trick know as the and-or-trick:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;condition and truth_value or false_value&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;try this in a python terminal:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; True and 'first' or 'second'&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; 'first'&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; False and 'first' or 'second'&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; 'second'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;pretty neat right? But this have a inherently problem. Try:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; True and None or 'second'&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; 'second'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Instead evaluating to None (or any value that python values as False, like: "", &amp;nbsp;False, None, &amp;nbsp;[], &amp;nbsp;{}, 0) it will return 'second'.&lt;br /&gt;&lt;br /&gt;This is a problem hard to debug in a large application.&lt;br /&gt;&lt;br /&gt;We could make a simple function for that purpose, like:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;def ternary_operator(condition, truth_value, false_value):&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if condition: return truth_value&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return false_value&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;But in the version 2.5 , after the PEP 308. Python gained its ternary operator:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;truth_value if condition else false_value&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The sintax is a little diferent from Java, c++ and others. But its really clean and easy to understand. try:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; 'first' if True else 'second'&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; 'first'&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; 'first' if False else 'second'&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; 'second'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lets check that old problem with the and-or-trick:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; print(None if True else 'second')&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; None&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;=] ... So thats how we use ternary operation in Python after 2.5.&lt;br /&gt;thanks&lt;br /&gt;&lt;br /&gt;Anderson Pierre Cardoso&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-688268386038326655?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/688268386038326655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/ternary-operator-in-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/688268386038326655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/688268386038326655'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2011/01/ternary-operator-in-python.html' title='ternary operator in Python'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-7196745889014026328</id><published>2010-12-28T16:22:00.000-08:00</published><updated>2010-12-28T16:25:29.322-08:00</updated><title type='text'>links interessantes</title><content type='html'>Hoje somente vou compartilhar alguns links que eu achei interessante =] :&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;a href="http://thegeektalk.com/interviews/"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;http://thegeektalk.com/interviews/&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Coletânea de entrevistas com vários desenvolvedores, muito bacana. Praticamente todos são desenvolvedores web. Apesar da maioria usar Ruby, tem alguns nomes interessantes aí no meio como Scott Chacon do github, David Heinemeier (criador do ruby on rails), Leah Culver (criadora do Pownce e fez uma das melhores palestras q eu já vi na python-br desse ano)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;a href="http://espacoliberdade.blog.br/blog/2010/12/2000-2010-relembre-os-principais-fatos-da-decada/"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;http://espacoliberdade.blog.br/blog/2010/12/2000-2010-relembre-os-principais-fatos-da-decada/&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;retrospectiva de alguns fatos marcantes no mundo da computação na última decada&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&lt;a href="http://idgnow.uol.com.br/computacao_corporativa/2010/12/28/e-oficial-russia-adota-o-software-livre"&gt;http://idgnow.uol.com.br/computacao_corporativa/2010/12/28/e-oficial-russia-adota-o-software-livre&lt;/a&gt;/&lt;/span&gt;&lt;/div&gt;&lt;div&gt;governo Russo migrará toda sua plataforma para software livre =]&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;-&amp;nbsp;&lt;a href="http://tableless.com.br/html5/"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;http://tableless.com.br/html5/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;-&amp;nbsp;&lt;a href="http://www.html5rocks.com/"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;http://www.html5rocks.com/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;html5&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&lt;a href="http://code.google.com/edu/"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;http://code.google.com/edu/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;material bacana do google&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;a href="http://uni.xkcd.com/"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;http://uni.xkcd.com/&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;a href="http://www.geekherocomic.com/"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;http://www.geekherocomic.com/&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;a href="http://nerdson.com/blog/"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;http://nerdson.com/blog/&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;para diversão =]..apesar de xkcd e nerdson serem bem conhecidos, geek hero é bem legal tbm, vale conferir&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;a href="http://pythonbrasil.blip.tv/posts?view=archive&amp;amp;nsfw=dc"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;http://pythonbrasil.blip.tv/posts?view=archive&amp;amp;nsfw=dc&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;palestras da python brasil [5] (2009 eu creio)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;só isso , sem mais nada de útil para falar hoje.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anderson Pierre Cardoso&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-7196745889014026328?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/7196745889014026328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/12/links-interessantes.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/7196745889014026328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/7196745889014026328'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/12/links-interessantes.html' title='links interessantes'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-4920560089708755714</id><published>2010-12-27T09:00:00.000-08:00</published><updated>2011-01-25T11:35:33.142-08:00</updated><title type='text'>challenging your brain with a "self"(?) mixed coding dojo (whaaaat?)</title><content type='html'>For the title: I don't know the name for this, but the thing is quite fun..so check it out:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I was in a coding dojo of the grupy-sp these days and someone talked about style of dojo in wich we use different computer, with different problems, with different languages. You keep swapping through the problems/languages/computers every 5 to 7 minutes.&lt;br /&gt;&lt;br /&gt;I decide to do one of these, on my own =].&lt;br /&gt;&lt;br /&gt;first I had to control my time. For this i created a little script wich counts 5 minutes then make an alarm noise.&lt;br /&gt;I used a little framework I created with some friends (pypp4gamers) and solved it with 2 lines of code =P&lt;br /&gt;&lt;br /&gt;after I separated 2 computers ..my GNU/Linux box for programming in C, and a Mac for using with Python.&lt;br /&gt;For working with C, I get a much smaller and simpler problem. Because I'm rusty on C programming and because is much more verbose/slow.&lt;br /&gt;For Python I caught a heavier problem.&lt;br /&gt;At first I thought that would not work because I would finish the C problem much faster than the other one, and keep the most of the time trying to finish the more complex.&lt;br /&gt;&lt;br /&gt;Well ..the dynamic of this game is crazy...your head give quite some spins. It's hell of fun. The moment you get used to the problem/platform/language the siren rings and you have to swap and readapt all over again.&lt;br /&gt;&lt;br /&gt;At the end I verified that I remember much more of C than i thought. And that Python is much, really much, faster/easier/funnier to develop, because I'd solved first the more complex problem in Python than the easier in C.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This dynamic it's really good to challenge your brain a little bit. I'm thinking in doing a bigger one =].&lt;br /&gt;&lt;br /&gt;If someone wants to try, i recommend.&lt;br /&gt;here is some sets of nice problems to solve:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/codejam/contests.html"&gt;http://code.google.com/codejam/contests.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://projecteuler.net/"&gt;http://projecteuler.net/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/careers/puzzles.php"&gt;http://www.facebook.com/careers/puzzles.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;thanks,&lt;br /&gt;&lt;br /&gt;Anderson Pierre Cardoso&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-4920560089708755714?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/4920560089708755714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/12/challenging-your-brain-with-self-mixed.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/4920560089708755714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/4920560089708755714'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/12/challenging-your-brain-with-self-mixed.html' title='challenging your brain with a &quot;self&quot;(?) mixed coding dojo (whaaaat?)'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-8905798210843390564</id><published>2010-12-21T04:40:00.000-08:00</published><updated>2010-12-21T04:40:23.565-08:00</updated><title type='text'>facebook hackercup</title><content type='html'>Just passing by to promote the hacker cup being held by facebook.&lt;br /&gt;I subscribed today, just to have some fun during this vacations =]. I don't expect doing very well, since I never participated of such a thing (like google code jam and others programming competitions), but it's just for playing around with some neat challenges...always fun ! =]&lt;br /&gt;I hope anyone who read this could get excited and participate too.&lt;br /&gt;The qualifications are in 7/jan to 10/jan over the internet.&lt;br /&gt;the site is: &lt;a href="http://www.facebook.com/hackercup"&gt;http://www.facebook.com/hackercup&lt;/a&gt;&lt;br /&gt;see you there o/&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Anderson Pierre Cardoso&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-8905798210843390564?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/8905798210843390564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/12/facebook-hackercup.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/8905798210843390564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/8905798210843390564'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/12/facebook-hackercup.html' title='facebook hackercup'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-3660748855208643739</id><published>2010-12-15T04:38:00.000-08:00</published><updated>2010-12-15T04:38:26.811-08:00</updated><title type='text'>life at university</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_e7VAr7fQRog/TQi2W4v2FkI/AAAAAAAAABU/KuQ_wAp4k1I/s1600/university_chart.001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_e7VAr7fQRog/TQi2W4v2FkI/AAAAAAAAABU/KuQ_wAp4k1I/s400/university_chart.001.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;well ..the image say it all&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-3660748855208643739?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/3660748855208643739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/12/life-at-university.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/3660748855208643739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/3660748855208643739'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/12/life-at-university.html' title='life at university'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_e7VAr7fQRog/TQi2W4v2FkI/AAAAAAAAABU/KuQ_wAp4k1I/s72-c/university_chart.001.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-5544185446030041544</id><published>2010-12-13T14:51:00.000-08:00</published><updated>2010-12-14T15:09:17.135-08:00</updated><title type='text'>finally vacations</title><content type='html'>what an year x__x"&amp;nbsp; !!!&lt;br /&gt;but now some deserved "rest". Why the quotes??&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Anderson = developerPassionateForHisProfession()&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;if Anderson and free_time:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hacking_mode = True&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "let the fun begin =D!!!"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while hacking_mode:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Anderson.status = 'happy'&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;doSomeNeatStuff()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;\o/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-5544185446030041544?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/5544185446030041544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/12/finally-vacations.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/5544185446030041544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/5544185446030041544'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/12/finally-vacations.html' title='finally vacations'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-3470268657828241312</id><published>2010-11-21T16:31:00.000-08:00</published><updated>2010-11-23T06:52:56.176-08:00</updated><title type='text'>Otimizando o linux no Ubuntu sem recompilar o kernel</title><content type='html'>&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Durante essa semana estourou a notícia de um patch para o kernel do linux que aumenta sua performance em cerca de 60 vezes, ao agrupar processos no escalonador (&lt;a href="http://www.phoronix.com/scan.php?page=article&amp;amp;item=linux_2637_video&amp;amp;num=1"&gt;http://www.phoronix.com/scan.php?page=article&amp;amp;item=linux_2637_video&amp;amp;num=1&lt;/a&gt;).&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;A solução possivelmente será integrada ao kernel em versões posteriores, mas para aquele mais afoitos, um desenvolvedor da RedHat criou uma solução que gera o mesmo efeito apenas reconfigurando três arquivos do seu pc, sem precisar recompilar o kernel.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;abaixo segue a solução (que também pode ser vista aqui -&amp;gt; &lt;a href="http://blog.coderepository.net/2010/11/19/otimizando-o-kernel-de-seu-desktop-linux/"&gt;http://blog.coderepository.net/2010/11/19/otimizando-o-kernel-de-seu-desktop-linux/&lt;/a&gt;):&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;num terminal:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash plain"&gt;&lt;/code&gt;&lt;code class="bash functions"&gt;sudo&lt;/code&gt; &lt;code class="bash plain"&gt;gedit &lt;/code&gt;&lt;code class="bash plain"&gt;/etc/rc&lt;/code&gt;&lt;code class="bash plain"&gt;.&lt;/code&gt;&lt;code class="bash functions"&gt;local&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash functions"&gt;Adicione as seguintes linhas no arquivo antes da linha com "exit 0":&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="container" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;div class="line number1 index0 alt2"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash functions"&gt;mkdir&lt;/code&gt; &lt;code class="bash plain"&gt;-p &lt;/code&gt;&lt;code class="bash plain"&gt;/dev/cgroup/cpu&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number2 index1 alt1"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash functions"&gt;mount&lt;/code&gt; &lt;code class="bash plain"&gt;-t cgroup cgroup &lt;/code&gt;&lt;code class="bash plain"&gt;/dev/cgroup/cpu&lt;/code&gt; &lt;code class="bash plain"&gt;-o cpu&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number3 index2 alt2"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash functions"&gt;mkdir&lt;/code&gt; &lt;code class="bash plain"&gt;-m 0777 &lt;/code&gt;&lt;code class="bash plain"&gt;/dev/cgroup/cpu/user&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash functions"&gt;echo&lt;/code&gt; &lt;code class="bash string"&gt;"1"&lt;/code&gt; &lt;code class="bash plain"&gt;&amp;gt; &lt;/code&gt;&lt;code class="bash plain"&gt;/dev/cgroup/cpu/user/notify_on_release&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number5 index4 alt2"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash functions"&gt;echo&lt;/code&gt; &lt;code class="bash string"&gt;"/usr/local/sbin/cgroup_clean"&lt;/code&gt; &lt;code class="bash plain"&gt;&amp;gt; &lt;/code&gt;&lt;code class="bash plain"&gt;/dev/cgroup/cpu/release_agent&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number5 index4 alt2"&gt;&lt;/div&gt;&lt;div class="line number5 index4 alt2" style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Salve, feche e dê permissão de execução para o rc.local -&amp;gt;&amp;nbsp; sudo chmod +x /etc/rc.local&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line number5 index4 alt2"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash plain"&gt; &lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number5 index4 alt2"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash plain"&gt;&lt;/code&gt;&lt;code class="bash functions"&gt;sudo&lt;/code&gt; &lt;code class="bash plain"&gt;gedit &lt;/code&gt;&lt;code class="bash plain"&gt;/usr/local/sbin/cgroup_clean&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number5 index4 alt2"&gt;&lt;/div&gt;&lt;div class="line number5 index4 alt2"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash plain"&gt;insira as linhas:&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number5 index4 alt2"&gt;&lt;/div&gt;&lt;div class="line number5 index4 alt2"&gt;&lt;div class="container"&gt;&lt;div class="line number1 index0 alt2"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash preprocessor bold"&gt;#!/bin/sh&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number2 index1 alt1"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash keyword"&gt;if&lt;/code&gt; &lt;code class="bash plain"&gt;[ &lt;/code&gt;&lt;code class="bash string"&gt;"$1"&lt;/code&gt; &lt;code class="bash plain"&gt;!= &lt;/code&gt;&lt;code class="bash string"&gt;"/user"&lt;/code&gt; &lt;code class="bash plain"&gt;-a &lt;/code&gt;&lt;code class="bash string"&gt;"$1"&lt;/code&gt; &lt;code class="bash plain"&gt;!= &lt;/code&gt;&lt;code class="bash string"&gt;"/user/"&lt;/code&gt; &lt;code class="bash plain"&gt;]; &lt;/code&gt;&lt;code class="bash keyword"&gt;then&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number3 index2 alt2"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash spaces"&gt;&amp;nbsp;&lt;/code&gt;&lt;code class="bash functions"&gt;rmdir&lt;/code&gt; &lt;code class="bash plain"&gt;/dev/cgroup/cpu&lt;/code&gt;&lt;code class="bash plain"&gt;$1&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash keyword"&gt;fi&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash keyword"&gt;salve, feche e de permissão de execução no arquivo: sudo chmod +x /usr/local/sbin/cgroup_clean&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash keyword"&gt; &lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash functions"&gt;sudo&lt;/code&gt; &lt;code class="bash plain"&gt;gedit &lt;/code&gt;&lt;code class="bash plain"&gt;/etc/bash&lt;/code&gt;&lt;code class="bash plain"&gt;.bashrc&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash plain"&gt;inserir no começo do arquivo:&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;div class="container"&gt;&lt;div class="line number1 index0 alt2"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash keyword"&gt;if&lt;/code&gt; &lt;code class="bash plain"&gt;[ &lt;/code&gt;&lt;code class="bash string"&gt;"$PS1"&lt;/code&gt; &lt;code class="bash plain"&gt;] ; &lt;/code&gt;&lt;code class="bash keyword"&gt;then&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number2 index1 alt1"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash functions"&gt;mkdir&lt;/code&gt; &lt;code class="bash plain"&gt;-m 0700 &lt;/code&gt;&lt;code class="bash plain"&gt;/dev/cgroup/cpu/user/&lt;/code&gt;&lt;code class="bash plain"&gt;$$&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number3 index2 alt2"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash functions"&gt;echo&lt;/code&gt; &lt;code class="bash plain"&gt;$$ &amp;gt; &lt;/code&gt;&lt;code class="bash plain"&gt;/dev/cgroup/cpu/user/&lt;/code&gt;&lt;code class="bash plain"&gt;$$&lt;/code&gt;&lt;code class="bash plain"&gt;/tasks&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash keyword"&gt;fi&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash keyword"&gt;reinicie e voi lá!!&amp;nbsp;&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash keyword"&gt; &lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash keyword"&gt;boa diversão =]&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash keyword"&gt;&lt;br /&gt;&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash keyword"&gt;Anderson Pierre Cardoso&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash plain"&gt;&amp;nbsp;&lt;/code&gt;&lt;code class="bash keyword"&gt; &lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash plain"&gt;&amp;nbsp;&lt;/code&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash plain"&gt; &lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;code class="bash functions"&gt; &lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-3470268657828241312?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/3470268657828241312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/11/otimizando-o-linux-no-ubuntu-sem.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/3470268657828241312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/3470268657828241312'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/11/otimizando-o-linux-no-ubuntu-sem.html' title='Otimizando o linux no Ubuntu sem recompilar o kernel'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-6362121957960073712</id><published>2010-11-06T09:05:00.000-07:00</published><updated>2010-11-07T04:23:11.209-08:00</updated><title type='text'>Criando aplicações rápidas com interface gráfica no Ubuntu usando Quickly</title><content type='html'>Essa dica foi dada primeiramente pelo Luciano Ramalho na lista da Python Brasil.&lt;br /&gt;O Quickly é uma ferramenta para você construir aplicações com interface gráfica rapidamente no Ubuntu. &lt;br /&gt;Ela usa python como liguagem de programação e o Glade para construção das intefaces gtk.&lt;br /&gt;Para instala-lo basta :&lt;br /&gt;sudo apt-get install quickly&lt;br /&gt;&lt;br /&gt;após instalado execute: $quickly tutorial ubuntu-application&lt;br /&gt;e siga o tutorial, ele é incrivelmente simples, basta seguir o ciclo:&lt;br /&gt;quickly create ubuntu-application nome_da_aplicacao&lt;nome aplicativo="" do=""&gt;&lt;/nome&gt;&lt;br /&gt;cd nome_da_aplicacao&lt;nome aplicativo="" do=""&gt;/ &lt;/nome&gt;&lt;br /&gt;quickly design&lt;br /&gt;quickly edit&lt;br /&gt;quickly run&lt;br /&gt;&lt;br /&gt;para maiores informações:&lt;br /&gt;&lt;a href="https://wiki.ubuntu.com/Quickly"&gt;https://wiki.ubuntu.com/Quickly&lt;/a&gt;&lt;br /&gt;&lt;a href="https://wiki.ubuntu.com/Quickly/Snippets"&gt;https://wiki.ubuntu.com/Quickly/Snippets&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Eu brinquei um pouco e realmente gostei bastante, recomendo para qualuqer um esteja querendo fazer uma interface gráfica ou pequeno aplicativo no Ubuntu rapidamente.&lt;br /&gt;&lt;br /&gt;abs,&lt;br /&gt;&lt;br /&gt;Anderson Pierre Cardoso&lt;br /&gt;&lt;br /&gt;obs: para instalar o couchDB caso for usa-lo:&lt;br /&gt;sudo apt-get install couchdb desktopcouch&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-6362121957960073712?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/6362121957960073712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/11/criando-aplicacoes-rapidas-com.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/6362121957960073712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/6362121957960073712'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/11/criando-aplicacoes-rapidas-com.html' title='Criando aplicações rápidas com interface gráfica no Ubuntu usando Quickly'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-7379918629870449587</id><published>2010-10-31T16:39:00.000-07:00</published><updated>2010-10-31T16:39:15.266-07:00</updated><title type='text'>Google Developer Day 2010</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;u&gt;Para este post em português, va para baixo&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This friday I had the pleasure of participating of the Google Developer Day 2010 in Sao Paulo, Brazil.&lt;br /&gt;I had high spectations for this, and I can say that I really got surprised. The event was bigger than I thought and the level of the talks was much better either.&lt;br /&gt;&lt;br /&gt;I'd gone to the event to see more talks about Android technologies and after the opening talk, I got so amazed by the html5 that I watched mostly html5 and appengine talks.&lt;br /&gt;&lt;br /&gt;The demos presented for the new html5 and css3 features where really applauded. I also really liked the Eric Bidelman talks, it was some of the bests.&lt;br /&gt;&lt;br /&gt;To be short I will just say that was awesome, when the talks got available on the internet you should see some of then because realy worth, and if you want to know more about html5 enter: www.html5rocks.com&lt;br /&gt;&lt;br /&gt;thanks, &lt;br /&gt;&lt;br /&gt;Anderson Pierre Cardoso&lt;br /&gt;&lt;br /&gt;PS: by the way: the food was really good!!! =D&lt;br /&gt;&lt;br /&gt;--------------------------------------------------------------------------&lt;br /&gt;post em português: &lt;br /&gt;&lt;br /&gt;Essa sexta eu tive o prazer de ir ao Google developer day em Sao Paulo.&lt;br /&gt;Eu tinha grandes expectativas para esse evento e posso dizer que fiquei muito surpreso. O evento era muito maior do que eu achei que seria, e o nível das palestras também foi muito melhor.&lt;br /&gt;&lt;br /&gt;Eu fui ao evento para ver mais palestras sobre o Android e tecnologias móveis e após a palestra inicial eu fiquei tão impressionado com o html5 que eu acabei todas as palestras sobre html5 ou appengine.&lt;br /&gt;&lt;br /&gt;Os demos apresentados para as novas caratecteristcas do html5 e do css3 foram realmente aplaudidos. Eu curti muito as palestras do Eric Bidelman que foram algumas das melhoras na minha opinião.&lt;br /&gt;&lt;br /&gt;Para ser curto direi que foi incrível, e quando as palestras ficarem disponíveis na internet se vcs puderem dar uma olhada, vale muito&amp;nbsp; a pena.&lt;br /&gt;Se vc quer saber mais sobre html5 entre: www.html5rocks.com&lt;br /&gt;&lt;br /&gt;Obrigado,&lt;br /&gt;&lt;br /&gt;Anderson Pierre Cardos&lt;br /&gt;&lt;br /&gt;obs: A proposito: A comida era muito boa!!!! =D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-7379918629870449587?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/7379918629870449587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/10/google-developer-day-2010.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/7379918629870449587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/7379918629870449587'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/10/google-developer-day-2010.html' title='Google Developer Day 2010'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-7691348234460935753</id><published>2010-10-30T08:36:00.000-07:00</published><updated>2010-10-30T08:39:01.931-07:00</updated><title type='text'>Editor simples usando Tkinter e Python</title><content type='html'>Esse código abaixo é um pequeno editor simples em python usando Tkinter.&lt;br /&gt;Eu fiz esse código junto ao Vinicius para o projeto pypp4gamers (&lt;a href="http://code.google.com/p/pypp4gamers"&gt;http://code.google.com/p/pypp4gamers&lt;/a&gt;/), no código original tem algumas coisas a mais, mas como são especificas do projeto (como botão de executar, além de ferramentas de cores e etc) deixei de fora =].&lt;br /&gt;Ele tem um pequeno workround (palavra bonita para gambiarra) para integrar o copy/paste dele com o do SO, mas funciona muito bem =P.&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;#! /usr/bin/python&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;from Tkinter import *&lt;br /&gt;import tkFileDialog as dialog&lt;br /&gt;import tkColorChooser as color&lt;br /&gt;import os&lt;br /&gt;from shutil import copy2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;class Tk_notepad:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def __init__(self):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.create_window()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def create_window(self):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.window = Tk()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.window.resizable(False,False)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.window.wm_title("Tk notepad")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scrollbar = Scrollbar(self.window)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scrollbar.pack(side=RIGHT, fill=Y)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.text = Text(self.window,\&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yscrollcommand=scrollbar.set, undo=True)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.text.pack()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.text.focus_set()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scrollbar.config(command=self.text.yview)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.text.bind("&lt;button-3&gt;", self.popup_menu)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.cascade_menu()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def run(self):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.window.mainloop()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def popup_menu(self,event):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Right-Click menu&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.popup = Menu(self.window, tearoff=0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.popup.add_command(label="Desfazer",\&lt;/button-3&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command=lambda: self.undo())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.popup.add_command(label="Refazer", \&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command=lambda: self.redo())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.popup.add_separator()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.popup.add_command(label="Recortar",\&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = lambda : self.cut())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.popup.add_command(label="Copiar", \&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = lambda : self.copy())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.popup.add_command(label="Colar",\&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = lambda : self.paste(origin='button'))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.popup.add_separator()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.popup.add_command(label="Selecionar tudo", \&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = lambda : self.select_all())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.popup.tk_popup(event.x_root, event.y_root, 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finally:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.popup.grab_release()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def cascade_menu(self):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menubar = Menu(self.window)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Menu Arquivo&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filemenu = Menu(menubar)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filemenu.add_command(label='Novo', \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = lambda : self.clear_dialog(), underline =0, accelerator="Ctrl+N")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filemenu.add_command(label='Abrir ...', \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = lambda : self.open(), underline=0, accelerator="Ctrl+O")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filemenu.add_command(label='Salvar', \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = lambda : self.save(), underline=0, accelerator="Ctrl+S")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filemenu.add_separator()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filemenu.add_command(label='Sair', \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = lambda : self.quit(), underline=2, accelerator="Ctrl+Q" )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Menu Editar&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editmenu = Menu(menubar)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editmenu.add_command(label='Desfazer', \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = lambda :self. undo(), accelerator="Ctrl+Z")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editmenu.add_command(label='Refazer',\&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = lambda: self.redo(), accelerator="Ctrl+Shift+Z")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editmenu.add_separator()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editmenu.add_command(label='Copiar', \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = lambda : self.copy(), accelerator="Ctrl+C")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editmenu.add_command(label='Recortar', \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = lambda : self.cut(), accelerator="Ctrl+X")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editmenu.add_command(label='Colar', \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = lambda : self.paste(origin='button'), accelerator="Ctrl+V")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editmenu.add_separator()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editmenu.add_command(label='Selecionar Tudo', \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = lambda : self.select_all(), accelerator="Ctrl+A")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menubar.add_cascade(label = 'Arquivo', menu=filemenu)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menubar.add_cascade(label = 'Editar', menu=editmenu)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.window.config(menu=menubar) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #bind shortcuts&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.window.bind_all("&lt;control-q&gt;", self.quit)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.window.bind_all("&lt;control-n&gt;", self.clear_dialog) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.window.bind_all("&lt;control-s&gt;", self.save)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.window.bind_all("&lt;control-o&gt;", self.open)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.window.bind_all("&lt;control-v&gt;", self.paste)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.window.bind_all("&lt;control-a&gt;", self.select_all)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.window.bind_all("&lt;control-z&gt;",self.undo)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.window.bind_all("&lt;control-shift-z&gt;", self.redo)&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #== menu Arquivos functions =========================== &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def clear_dialog(self, event=None):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.dialog = Tk()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.dialog.resizable(False,False)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.dialog.wm_title("Tk_notepad")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Label(self.dialog, text="Deseja Salvar as alteracoes feitas?")\&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .grid(row=0, columnspan=6)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Button(self.dialog, text="Salvar", \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = lambda : self.clear_options("save")).grid(row=1, column=1) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Button(self.dialog, text="Descartar", \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = lambda : self.clear_options("discard")).grid(row=1, column=3)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Button(self.dialog, text="Cancelar", \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command = lambda : self.clear_options("cancel")).grid(row=1, column=5)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.dialog.mainloop()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def clear_options(self,option):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Controla as opcoes de Criar Novo Documento&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if option == 'save':&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.save()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.clear()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.dialog.destroy()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if option == 'discard':&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.clear()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.dialog.destroy()&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if option == 'cancel':&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.dialog.destroy()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def save(self, event=None):&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fileName = dialog.asksaveasfilename( parent=self.window,\&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filetypes=[('Text', '*.txt'),('Python source', '*.py')], title='Salvar como ...')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; with open(fileName,'w') as file:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file.write(self.text.get(0.0, END))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def open(self, event=None):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Load file function&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fileName = dialog.askopenfilename(parent=self.window, \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filetypes=[('Text','*.txt'),('Python source', '*.py')], title='Abrir Arquivo ...')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; with open(fileName, 'r') as file:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.clear()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.text.insert(0.0, file.read())&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def quit(self, event=None):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.window.destroy()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def clear(self):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.text.delete(0.0, END)&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #== menu Editar functions =============================&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def copy(self, event=None):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.text.clipboard_clear()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.text.clipboard_append(self.text.get(SEL_FIRST,SEL_LAST))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pass&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def cut(self, event=None):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.text.clipboard_clear()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.text.clipboard_append(self.text.get(SEL_FIRST,SEL_LAST))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.text.delete(SEL_FIRST,SEL_LAST)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; except:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pass&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def paste(self, origin='', event=None):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if origin == 'button': &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.text.insert(INSERT, self.text.clipboard_get())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.text.delete(SEL_FIRST,SEL_LAST)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; except:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pass&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def select_all(self, event=None):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.text.tag_add(SEL,0.0,END)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def undo(self, event=None):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.text.edit_undo()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; except:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'Nothing to undo'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def redo(self, event=None):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.text.edit_redo()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; except:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'Nothing to redo'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;note = Tk_notepad()&lt;br /&gt;note.run()&lt;/control-shift-z&gt;&lt;/control-z&gt;&lt;/control-a&gt;&lt;/control-v&gt;&lt;/control-o&gt;&lt;/control-s&gt;&lt;/control-n&gt;&lt;/control-q&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Como algumas dessas features eu tive que procurar bastante pela documentação deixo aqui pronto caso alguém queira um snipet para facilitar a vida.&lt;br /&gt;valeu,&lt;br /&gt;&lt;br /&gt;Anderson Pierre Cardoso&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-7691348234460935753?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/7691348234460935753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/10/esse-codigo-abaixo-e-um-pequeno-editor.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/7691348234460935753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/7691348234460935753'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/10/esse-codigo-abaixo-e-um-pequeno-editor.html' title='Editor simples usando Tkinter e Python'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-1631605613195906641</id><published>2010-10-23T17:47:00.000-07:00</published><updated>2010-10-24T17:01:01.507-07:00</updated><title type='text'>python e svn no eclipse</title><content type='html'>um pequeno tutorial de como trabalhar no eclipse com algum projeto do google code (ou qualquer outro projeto que svn) no eclipse. Em python claro! &lt;br /&gt;&lt;br /&gt;- instale o eclipse:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ubuntu software center -&amp;gt; eclipse &lt;/li&gt;&lt;li&gt;instale tbm o "eclipse pde" e o eclipse "jdt"&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;- instale o pydev: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;va em Help &amp;gt; Install New Software &lt;br /&gt;&lt;/li&gt;&lt;li&gt;em "add" coloque a url: &lt;a href="http://pydev.org/updates" rel="nofollow"&gt;http://pydev.org/updates&lt;/a&gt; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;espere instalar pelo repositorio =] &lt;br /&gt;&lt;/li&gt;&lt;li&gt;o eclipse deve ser reiniciado sempre apos instalar um novo plugin &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;- para configurar o pydev:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;va em window &amp;gt; preferences&lt;br /&gt;&lt;/li&gt;&lt;li&gt;va em pydev &amp;gt; interpreter - Python  e clique em "auto config"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;apply&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;- instale o supporte a svn:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;va em Help &amp;gt; Install New Software&lt;br /&gt;&lt;/li&gt;&lt;li&gt;va em galileo software updates (ou equivalente do seu eclipse, helios por exemplo)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;va em collaboration e selecione "Subversive SVN Team Provider (incubation)"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;siga os passos indicados e espere instalar e reiniciair&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;- Instale o connector para o svn:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;va em window &amp;gt; Team &amp;gt; SVN&lt;br /&gt;&lt;/li&gt;&lt;li&gt;deverá aparecer uma janela para vc instalar o connector&lt;br /&gt;&lt;/li&gt;&lt;li&gt;escolha o svnKit com a versão mais recente (1.3 se não me engano)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;next...next...next...reinicia eclipse&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;- Checkout do projeto:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;va em File &amp;gt; new &amp;gt; project &amp;gt; SVN &amp;gt; project from SVN&lt;br /&gt;&lt;/li&gt;&lt;li&gt;coloque a URL do svn de seu projeto, no caso do google code https://seu_projeto_aqui.googlecode.com/svn&lt;br /&gt;&lt;/li&gt;&lt;li&gt;coloque seu username do google&lt;br /&gt;&lt;/li&gt;&lt;li&gt;coloque  o Password (do google code, aquele que é dado no google code, nao da  sua conta do google) (marque a opcao de salvar senha pra ele nao ficar  perguntando o tempo todo)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;cliquem em browse e selecione o "trunk" e cliquem em OK&lt;br /&gt;&lt;/li&gt;&lt;li&gt;na aba "checkout as" clique em "Check out as a project with the name specified" e coloque o nome do projeto&lt;br /&gt;&lt;/li&gt;&lt;li&gt;finish =]&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;- agora é só se divertir:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;quando  for começar a programar, clique com o botao direito no projeto (na  area a esquerda), va em  Team &amp;gt; synchronize with repository&lt;/li&gt;&lt;li&gt;na view de repositorio:&lt;/li&gt;&lt;li&gt;clique com o botao direito nos arquivos com a fechinha azul para esquerda, e selecione update, para atualizar aquele modulo&lt;/li&gt;&lt;li&gt;volte para a view do pydev (no canto superior direito tem um widgetzinho de view clica la, e escolhe pydev)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;programe a vontade&lt;br /&gt;&lt;/li&gt;&lt;li&gt;quando for commitar:&lt;/li&gt;&lt;li&gt;clique com o botao direito no projeto, va para view de repositorio&lt;/li&gt;&lt;li&gt;na view de repositorio para comitar clique com botao direito nos modulos com a flecha cinza para direita. e selecione commit, coloque sua mensagem de commit.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;caso  haja algum modulo com uma flecha vermelha nos dois sentidos é pq  precisa dar merge. Double-click nele que a view de diff, ai é soh fazer o  diff (tomando cuidado). clique com o botao direito no modulo depois de  dar merge e selecione "mark as merged", ai eh soh commitar normalmente.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;- lembrando:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;botao direito no projeto, team&amp;gt; synchronize&lt;br /&gt;&lt;/li&gt;&lt;li&gt;modulo com flecha cinza para direita-&amp;gt; commit&lt;br /&gt;&lt;/li&gt;&lt;li&gt;modulo com flecha azul para esquerda-&amp;gt; update&lt;br /&gt;&lt;/li&gt;&lt;li&gt;modulo com flecha vermelha -&amp;gt; double-click para fazer merge, depois "mark as merged", ai commita&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;acho que é isso, agora vc já pode trabalhar e commitar seu projeto diretamente do eclipse.&lt;br /&gt;valeu&lt;br /&gt;&lt;br /&gt;Anderson Pierre Cardoso&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-1631605613195906641?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/1631605613195906641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/10/python-e-svn-no-eclipseide.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/1631605613195906641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/1631605613195906641'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/10/python-e-svn-no-eclipseide.html' title='python e svn no eclipse'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-5822663633281410037</id><published>2010-10-23T07:35:00.000-07:00</published><updated>2010-10-23T07:35:47.859-07:00</updated><title type='text'>python brasil [6]</title><content type='html'>Estou aqui em Curitiba na python Brasil [6]. E caramba, que experiência bacana!&lt;br /&gt;a comunidade python realmente me surpreende cada vez mais, pela união e entusiasmo.&lt;br /&gt;As palestras e cursos estão sendo realmente magnificos, e para todos que não puderam vir esse ano, recomendo se programar para o ano que vem e ir, pois vale muito a pena.&lt;br /&gt;Agora to aqui trabalhando em um projeto pessoal, no intervalo de almoço. Não tenho durmido quase nada pois passei as ultimas duas madrugadas programando, e sinceramente to amando isso daqui.&lt;br /&gt;filosofia "Extreme Go Horse!!" =D&lt;br /&gt;valeu&lt;br /&gt;&lt;br /&gt;Anderson&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-5822663633281410037?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/5822663633281410037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/10/python-brasil-6.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/5822663633281410037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/5822663633281410037'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/10/python-brasil-6.html' title='python brasil [6]'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-975084347636605847</id><published>2010-10-20T18:52:00.000-07:00</published><updated>2010-10-20T18:52:14.438-07:00</updated><title type='text'>post especial para um dia especial</title><content type='html'>eu não criei esse blog pra colocar coisas pessoais, mas hj vou abrir uma excesão pois é um dia muito especial, já que é o aniversário da pessoa q eu mais amo no mundo.&lt;br /&gt;Parabéns LU, de todo coração eu te desejo tudo de maravilhoso sempre, e quero sempre estar ao seu lado. Obrigado por me fazer sempre tão feliz, e espero fazer o mesmo por vc.&lt;br /&gt;Feliz aninhos =]...ta ficando vovóooooo lalala =P ...brincadeira, fica mais linda a cada dia.&lt;br /&gt;TE AMO muito ta!?&lt;br /&gt;&lt;br /&gt;beijaaao&amp;nbsp; e Feliz Aniversário.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-975084347636605847?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/975084347636605847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/10/post-especial-para-um-dia-especial.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/975084347636605847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/975084347636605847'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/10/post-especial-para-um-dia-especial.html' title='post especial para um dia especial'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-3775387059177255026</id><published>2010-09-26T20:33:00.000-07:00</published><updated>2010-09-26T20:33:34.543-07:00</updated><title type='text'>resgatando dados da sua home criptografada</title><content type='html'>&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&lt;/span&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Esse incidente se deu no sabádo. Foi uma mistura de uma home criptografada, um sistemas instável (estava usando a versão de testes no meu dia-a-dia...sim eu sei...dumb), eu fuçando aonde não devia no kernel e uma falta de backup(sim eu sei, mais dumb ainda).&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Ou seja uma sucessão de erros idiotas o que resultou num merecido problema.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Meus sistema(ubuntu) pifou completamente e nem bootava mais, eu nem conseguia um shell no modo monousuario.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Eu já estava para formatar tudo antes mesmo, então resolvi aproveitar o ganho. Mas precisava fazer backup dos meus dados, que estavam criptografados na minha home. &lt;br /&gt;A solução está logo abaixo:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Eu recuperei meus dados a apartir de uma outra partição(ubuntu 10.04) que tinha no meu pc, mas tudo que tá aqui deve funcionar de um live-cd:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;1)Eu mandei montar o sistema bugado só clicando nele na aba places do ubuntu. &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt; &lt;span style="font-size: small;"&gt;2) abra um terminal:&lt;br /&gt;3) instale ecryptfs:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo apt-get install ecryptfs-utils&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;4) recuperando sua Mount Passphrase:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;ecryptfs-unwrap-passphrase /media/&lt;i&gt;seus_sistema&lt;/i&gt;/home/.ecryptfs/&lt;i&gt;username&lt;/i&gt;/.ecryptfs/wrapped-passphrase&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; entre com sua senha de login&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; guarde a senha grandona que ele vai te retornar, vc vai precisar dela&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;OBS: o inicio dos paths com /media/&lt;i&gt;seusistemaqui&lt;/i&gt; é aonde tava montado o sisetma com a partição encriptada, entre o caminho que for no seu caso&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;5) va para /media/&lt;i&gt;seu sistema&lt;/i&gt;/&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;6)&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt; sudo&amp;nbsp;ecryptfs-add-passphrase&amp;nbsp;--fnek&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;quando ele pedir a passphrase use a senha que obtemos acima:&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;7)vc obterá algo assim:&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;Inserted&amp;nbsp;auth&amp;nbsp;tok&amp;nbsp;with&amp;nbsp;sig&amp;nbsp;[&lt;i&gt;um numero&lt;/i&gt;]&amp;nbsp;into&amp;nbsp;the&amp;nbsp;user&amp;nbsp;session&amp;nbsp;keyring&amp;nbsp;&lt;span class="anchor" id="line-57"&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;Inserted&amp;nbsp;auth&amp;nbsp;tok&amp;nbsp;with&amp;nbsp;sig&amp;nbsp;[&lt;i&gt;outro numero&lt;/i&gt;]&amp;nbsp;into&amp;nbsp;the&amp;nbsp;user&amp;nbsp;session&amp;nbsp;keyring&amp;nbsp;&lt;/span&gt; &lt;/div&gt;&lt;div class="line891" style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;guarde esse segundo número.&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;8)montando:&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;sudo&amp;nbsp;mount&amp;nbsp;-t&amp;nbsp;ecryptfs /media/&lt;i&gt;seusistema&lt;/i&gt;/home/.ecryptfs/username/.Private&amp;nbsp;/home/&lt;i&gt;username&lt;/i&gt;/Private&lt;/span&gt;(ou qquer outra pasta na qual vc queira montar)&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;9)selection: aes&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;selection: 16 bits&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;enable plaintext passthrough: n&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;enable filename encryption: y&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;filename encrypption key: use aquele segundo número que vc anotou&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;assumindo que deu tudo certo, vc encontrará seus dados na pasta que vc mandou montar.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Divirta-se faça seu backup. Conserte a bobagem. E tente não fazer essa besteira denovo =P&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Lição-do-dia: faça backups sempre!!&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;valeu e até a próxima&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line891" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;OBS: essa solução funcionou comigo num ubuntu 10.04, em outras distros/versões pode divergir.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-3775387059177255026?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/3775387059177255026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/09/resgatando-dados-da-sua-home.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/3775387059177255026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/3775387059177255026'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/09/resgatando-dados-da-sua-home.html' title='resgatando dados da sua home criptografada'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-2057700983752032887</id><published>2010-09-19T07:18:00.000-07:00</published><updated>2010-09-19T07:18:46.162-07:00</updated><title type='text'>HypeMachine</title><content type='html'>Its been a lot since I dont came here.&lt;br /&gt;&lt;br /&gt;Well today I will just talk some random stuff: &lt;br /&gt;&lt;br /&gt;I discovered this freakin cool site called Hype machine (&lt;a href="http://www.hypem.com/"&gt;http://www.hypem.com&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;This is the best site I discovered since a long time. I'm really having great fun.&lt;br /&gt;Its a site that centralizes other music blog, as the blogs upload music they available over there via streaming. Really fun to discover new songs and pass your time. You also create your profile and select your loved songs, and kind of mount your own radio.&lt;br /&gt;&lt;br /&gt;I really recommend, specially for those who love to discover new songs like I do.&lt;br /&gt;&lt;br /&gt;Also, looks like they are searching for a developer, and even more awesome, to work in NY. But I'm still in college -.-, in Brazil -.-, and I dont know/like PHP, my bussines is Python (and unfortunately some Java XP)...well Ce la vie =P.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-2057700983752032887?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/2057700983752032887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/09/hypemachine.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/2057700983752032887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/2057700983752032887'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/09/hypemachine.html' title='HypeMachine'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-3898605739107079795</id><published>2010-09-02T13:36:00.000-07:00</published><updated>2010-09-02T13:37:09.682-07:00</updated><title type='text'>neutralidade de rede</title><content type='html'>Post bem interessante, sobre algo fundamental, vale a pena a leitura: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://idgnow.uol.com.br/internet/2010/08/30/neutralidade-de-rede-o-que-e-e-por-que-voce-deveria-se-preocupar/"&gt;http://idgnow.uol.com.br/internet/2010/08/30/neutralidade-de-rede-o-que-e-e-por-que-voce-deveria-se-preocupar/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-3898605739107079795?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/3898605739107079795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/09/neutralidade-de-rede.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/3898605739107079795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/3898605739107079795'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/09/neutralidade-de-rede.html' title='neutralidade de rede'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-4167691064587123293</id><published>2010-09-01T06:35:00.000-07:00</published><updated>2010-09-01T06:39:15.804-07:00</updated><title type='text'>Documentos livres</title><content type='html'>Muito se fala sobre software livre e a necessidade de informação livre. Mas as pessoas se esquecem que nada adianta vc prezar por informação livre se seus documentos estão em formatos proprietários. Portanto o uso de formato livres em seus documentos é tão importante quanto, senão mais, que o uso do SL.&lt;br /&gt;Para entender melhor leia o link abaixo, onde ta muito bem explicado o porque e as vantagens de uso de ODF:&lt;br /&gt;&lt;a href="http://www.infowester.com/odf.php"&gt;http://www.infowester.com/odf.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;e por falar em documentos livres confiram também a LibreDWG, biblioteca (livre) de compatibilidade para CAD (formato dwg) : &lt;a href="http://www.gnu.org/software/libredwg/"&gt;http://www.gnu.org/software/libredwg/&lt;/a&gt;&lt;br /&gt;esse projeto esta sendo desenvolvido por mim e outros desenvolvedores (principalmente o Juca e o Pitanga, também aqui da poli, que são os criadores e mantenedores do projeto).&lt;br /&gt;&lt;br /&gt;valeu, abs&lt;br /&gt;&lt;br /&gt;Anderson Pierre Cardoso&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-4167691064587123293?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/4167691064587123293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/09/documentos-livres.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/4167691064587123293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/4167691064587123293'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/09/documentos-livres.html' title='Documentos livres'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-4498252830032145519</id><published>2010-08-31T07:33:00.000-07:00</published><updated>2010-08-31T07:36:01.607-07:00</updated><title type='text'>blogagem coletiva em repúdio ao AI5 digital</title><content type='html'>&lt;a href="http://gutocarvalho.net/wordpress/wp-content/uploads/2010/08/contra_azeredo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://gutocarvalho.net/wordpress/wp-content/uploads/2010/08/contra_azeredo.jpg" width="354" /&gt;&lt;/a&gt; &lt;br /&gt;Galera AI5 em 2010 não tem o menor cabimento, o país precisa evoluir,  crescer e se libertar, se aprovado isso significará retrocesso, vamos  juntos nos unir na blogagem coletiva, ajude a barrar esse projeto  absurdo.&lt;br /&gt;&lt;h4 id="post-510" style="text-align: justify;"&gt;Blogagem Coletiva em repúdio ao AI5 Digital –&amp;nbsp;31/08&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;Amigos, os adoradores do &lt;a href="http://meganao.wordpress.com/o-mega-nao/o-que-combatemos/"&gt;AI5Digital&lt;/a&gt;  e da ditadura,&amp;nbsp; os amantes do vigilantismo, os defensores dos direitos   econômicos em detrimento dos direitos civis que formam o &lt;a href="http://entropia.blog.br/2010/04/23/acta-e-o-tripe-do-atraso/"&gt;tripé do atraso&lt;/a&gt;,   estão se movimentando para aprovar o famigerado e monstruoso  AI5Digital  que há muito deveria ter sido fulminado, destruído e  acabado.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A turma do Grande Irmão: Azeredo,  Febraban, Fecomercio e outros do  mesmo quilate estão fazendo uma força  tremenda para nos empurrar o  AI5Digital guela abaixo de qualquer forma,  vamos aos fatos:&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;A mídia continua repetindo o &lt;a href="http://entropia.blog.br/2009/01/10/mantras-da-irracionalidade/"&gt;Mantra da Irracionalidade&lt;/a&gt; contra a Internet&lt;/li&gt;&lt;li&gt;No dia 05/08/10&amp;nbsp; O Deputado Pinto Itamaraty do PSDB apresentou &lt;a href="http://www.camara.gov.br/internet/sileg/Prop_Detalhe.asp?id=15028"&gt;parecer favorável ao AI5Digital&lt;/a&gt;, ignorando todos os argumentos e movimentos sociais dos últimos três anos.&lt;/li&gt;&lt;li&gt;Seis dias depois aparece uma &lt;a href="http://www2.camara.gov.br/agencia/noticias/150005-DEPUTADOS-BUSCARAO-ACORDO-PARA-VOTAR-LEI-DE-CRIMES-NA-INTERNET.html"&gt;matéria dizendo que os Deputados buscarão acordo para votar a lei de crimes na Internet&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;E agora um evento para lá de esquisito organizado pela revista &lt;a href="http://www.decisionreport.com.br/"&gt;Decision Report&lt;/a&gt;,   uma publicação que parece estar à serviço do Azeredo e do  vigilantismo,  se anuncia para o dia 31/08 com o título oportuno (para o  tripé do  atraso) de: &lt;a href="http://www.decisionreport.com.br/meeting/CrimesEletronicos/presen%C3%A7a/confirmados.html"&gt;Crimes Eletrônicos – A urgência da lei&lt;/a&gt;. O curioso e que este evento conta com 19 palestrantes para falarem em 2:30h, o que dá um pouco mais de 7 minutos para cada um.&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;Por estas e por outras que estamos  convocando uma blogagem coletiva  para o dia 31/08/10, justamente no dia  do tal evento à serviço do  Azeredo e do AI5digital, vamos fazer uma  blogagem coletiva contra o  AI5Digital para lembrar a todos que queremos  a Internet como um espaço  livre e democrático!!!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-4498252830032145519?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/4498252830032145519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/08/galera-ai5-em-2010-nao-tem-o-menor.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/4498252830032145519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/4498252830032145519'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/08/galera-ai5-em-2010-nao-tem-o-menor.html' title='blogagem coletiva em repúdio ao AI5 digital'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-4626732672747018657</id><published>2010-08-24T06:15:00.000-07:00</published><updated>2010-08-24T06:15:20.130-07:00</updated><title type='text'>Introdução ao SQLite com Python</title><content type='html'>Brincando um pouco mais com python eu descobri esse módulo muito interessante o sqlite, então vou fazer um breve tutorial de como iniciar a brincar com os dois:&lt;br /&gt;&lt;br /&gt;O Sqlite é um banco de dados em um único arquivo auto-contido, sem servidor ou configuraçao e transacional. Realmente simples de mexer. Seu código é aberto e esta em domínio público.&lt;br /&gt;O sqlite3 já vem por padrão no python, se vc não tiver, basta dar um apt-get install (no debian ou ubuntu, para outras distros/OS procure como) .&lt;br /&gt;&lt;br /&gt;vejamos como criar uma aplicação bem simples, que apenas cria uma tabela com contatos(nome e email) nele abaixo:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;import sqlite3&lt;br /&gt;from sqlite3 import *&lt;br /&gt;&lt;br /&gt;if __name__ == '__main__':&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; # cria uma conexao com o banco&lt;br /&gt;&amp;nbsp; conn = sqlite3.connect('test_sqlite.sqlite')&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; # cria um cursor, que usaremos para executar nossas querys&lt;br /&gt;&amp;nbsp; cursor = conn.cursor()&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&amp;nbsp; # cria a tabela&lt;br /&gt;&amp;nbsp; cursor.execute('CREATE TABLE contatos (id INTEGER PRIMARY KEY, nome VARCHAR(50), email VARCHAR(50))')&lt;br /&gt;&lt;br /&gt;&amp;nbsp; # entra novos contatos, enqto vc entrar 'y'&lt;br /&gt;&amp;nbsp; while(raw_input('entrar novo contato?') == 'y'): &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nome = raw_input('Entre um nome: ')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; email = raw_input('Entre um email: ')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor.execute('INSERT INTO contatos VALUES (null,?,?)',(nome,email))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; conn.commit()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; # le os valores da sua tabela&lt;br /&gt;&amp;nbsp; cursor.execute('SELECT * FROM contatos')&lt;br /&gt;&amp;nbsp; for valor in cursor:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'contato: ', valor&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; #fecha as conexoes&lt;br /&gt;&amp;nbsp; cursor.close()&lt;br /&gt;&amp;nbsp; conn.close()&lt;/div&gt;&lt;br /&gt;Esse código irá criar um banco "test_sqlite.sqlite" num arquivo no mesmo diretório que sua aplicaçao se encontrar (vc pode especificar o path completo para o DB ir para outro canto se vc quiser). Esse banco terá a tabela names com os nossos contatos. Se quiser explorar os dados na sua tabela pode usar "SQLite database browser".&lt;br /&gt;&lt;br /&gt;Dê uma explorada no pydoc do sqlite, que têm bastante coisa divertida =]&lt;br /&gt;Depois coloco mais aqui.&lt;br /&gt;&lt;br /&gt;valeu,&lt;br /&gt;&lt;br /&gt;Anderson Pierre Cardoso&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-4626732672747018657?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/4626732672747018657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/08/introducao-ao-sqlite-com-python.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/4626732672747018657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/4626732672747018657'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/08/introducao-ao-sqlite-com-python.html' title='Introdução ao SQLite com Python'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-8180021224373193481</id><published>2010-08-19T06:58:00.000-07:00</published><updated>2010-08-19T06:58:44.659-07:00</updated><title type='text'></title><content type='html'>Woow, summer of code quase terminando. Foi bem divertido a participação, e estar envolvido em um projeto de software livre é bem&amp;nbsp; bacana, espero continuar nesse projeto mesmo depois do GSoC. &lt;br /&gt;Também estou participando de um outro projeto na faculdade chamado pypp4gamers (http://code.google.com/p/pypp4gamers/) . É um projeto que visa criar uma sdk de desenvolvimento em pyhton, bem simples, para o ensino de programação usando games como motivação.&lt;br /&gt;&lt;br /&gt;Estou bem empolgado com python, a linguagem me surprendeu bastante e qto mais estudo sobre ela mais gosto.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Estou eliminando um bocado minhas pendências e me focar em menos coisas, pra poder dar conta delas melhor. No meio de tantas entregas e coisas acontecendo simultaneamente a faculdade ta meio de lado, mas preciso correr atras hehe.&lt;br /&gt;&lt;br /&gt;ufa, mais um monte de blahblah pessoal sem muita ultilidade. Espero algum dia colocar algo util aqui =]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-8180021224373193481?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/8180021224373193481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/08/woow-summer-of-code-quase-terminando.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/8180021224373193481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/8180021224373193481'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/08/woow-summer-of-code-quase-terminando.html' title=''/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-1683470617379428568</id><published>2010-07-13T08:30:00.000-07:00</published><updated>2010-07-13T08:30:29.828-07:00</updated><title type='text'></title><content type='html'>Well, it's been quite a while since I don't came here. My classes at the university finally finished (and soon start again) and the extension course also finished. Now I'm just doing my internship, besides the Google summer of Code program.&lt;br /&gt;The program is going well, I'm a little behind the schedule, but it's walking.&lt;br /&gt;I also with a new project at the university now, I will be working on a gaming framework on python and a tool&amp;nbsp;for teaching programming concepts easily using games as motivation. I will actually catch some frameworks already used (like pygame) and encapsulated it on a very simple tool for programming. This project gonna be quite fun to work on.&lt;br /&gt;&lt;br /&gt;well, I'm still did not posted anything really usefull, but I'm still without much time. So for now it's just it =P, sorry!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-1683470617379428568?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/1683470617379428568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/07/well-its-been-quite-while-since-i-dont.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/1683470617379428568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/1683470617379428568'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/07/well-its-been-quite-while-since-i-dont.html' title=''/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-5818703000725744657</id><published>2010-05-24T14:47:00.000-07:00</published><updated>2010-05-24T14:47:19.050-07:00</updated><title type='text'>Let's the race begin</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I dont have something really interesting to say today.&amp;nbsp;&lt;/div&gt;&lt;div&gt;I was thinking on make a post about something introdutory on Java, JDBC and mysql on eclipse. But I'm kind of out of time lately. I will let this for other opportunity.&amp;nbsp;&lt;/div&gt;&lt;div&gt;I will just babble about GSoC and random things today:&lt;/div&gt;&lt;div&gt;I was thinking on doing this blog on both english and portuguese, but I'm re-thinking and probably will let everything in english. Because it's a good opportunity to me to develop my writing skill (that, all you can see, it's not good), and also it's the global language of programming and hacking.&lt;/div&gt;&lt;div&gt;If I write some article about programming/hacking I could post it (in portuguese) in the vivaolinux site. here I can put in english.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, today officialy begin the Google Summer of Code program.&amp;nbsp;&lt;/div&gt;&lt;div&gt;I am pretty excited about it, but confess I am a little bit scared too, of not handling the work. I never get anything so complicated and huge to work on, in my life. But I certainly gonna give the best I can.&lt;/div&gt;&lt;div&gt;The problem actually is the complete lack of time that I've right now.&amp;nbsp;&lt;/div&gt;&lt;div&gt;Beside the university and the GSoC, I'm also doing a intern, and a extension course at the university. With all this, I'm a bit stressed , but I still love everything I'm doing.&amp;nbsp;&lt;/div&gt;&lt;div&gt;I really hope I could manage to acomplish all the tasks.&lt;/div&gt;&lt;div&gt;Because of that my grades are falling down. and I believe I will not be posting much interesting things around here on the next 3 months.&amp;nbsp;&lt;/div&gt;&lt;div&gt;All I can say is: let's the race begin. Jump to the code and start hacking.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Have a happy hacking, everyone.&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-5818703000725744657?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/5818703000725744657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/05/lets-race-begin.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/5818703000725744657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/5818703000725744657'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/05/lets-race-begin.html' title='Let&apos;s the race begin'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-3800194341651713452</id><published>2010-05-17T14:25:00.000-07:00</published><updated>2010-05-17T14:25:46.810-07:00</updated><title type='text'>Primeiro post</title><content type='html'>&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;This post in English -&amp;gt;&amp;nbsp;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;a href="http://anderson-hacklife.blogspot.com/2010/05/first-post.html"&gt;http://anderson-hacklife.blogspot.com/2010/05/first-post.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Olá a todos, este é o meu primeiro post como blogger .&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Eu pretendo tratar aqui sobre Software Livre e Open Source, além de hacking e programação.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Eu sou novo em tudo isso, mas como estou aprendendo pretendo colocar minhas experiencias aqui de forma a ajudar alguem, ou só para manter um trace de tudo que eu tenho feito.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Vou me apresentar:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Meu nome é Anderson Pierre Cardoso. Eu moro em Sao Paulo, no Brasil.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Sou estudante de engenharia de computação na Universidade de Sao Paulo (Brasil)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Atualmente, estou participando do Google Summer of Code, um programa de desenvolvimento Open Source do Google. Estou trabalhando com o the GNU project na&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.gnu.org/software/libredwg/" style="text-decoration: none;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;LibreDWG&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp;(uma bibioteca livre de compatibilidade com o formato dwg da autocad). Eu também estou estagiando no LARC (laboratorio de arquitetura e redes de computadores) na universidade. La tralhamos com aplicaçoes web em java.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Também participo do poliGNU, um grupo de estudos de software livre, onde procuramos aprender mais e tabém difundir o SL.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-3800194341651713452?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/3800194341651713452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/05/primeiro-post.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/3800194341651713452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/3800194341651713452'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/05/primeiro-post.html' title='Primeiro post'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1301931137608599446.post-4120855594229357272</id><published>2010-05-17T11:49:00.000-07:00</published><updated>2010-05-17T14:27:25.073-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google summer of code'/><category scheme='http://www.blogger.com/atom/ns#' term='myself'/><title type='text'>First Post</title><content type='html'>Esse post em Portugues -&gt; &lt;a href="http://anderson-hacklife.blogspot.com/2010/05/primeiro-post.html"&gt;http://anderson-hacklife.blogspot.com/2010/05/primeiro-post.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hi, everyone this is my first post as a blogger.&lt;br /&gt;I intending to treat about Free/ Open Source Source software, hacking and programming around here.&lt;br /&gt;I'm kind of new to all of this. But since I'm learning I will be posting my experiences here to help someone or just keep a tracking of it.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lets present myself: &lt;/div&gt;&lt;div&gt;My name is Anderson Pierre Cardoso. I live in Sao Paulo - Brazil&lt;br /&gt;I'm a student of Computer Engineering at the University of Sao Paulo (Brazil).&lt;/div&gt;&lt;div&gt;Right now I'm participating of Google Summer of Code, a program for Open Source Software development. I'm working with the GNU project in the &lt;a href="http://www.gnu.org/software/libredwg/"&gt;LibreDWG&lt;/a&gt; (a free compatibility library for the DWG file format of autoCAD). I'm also making my intern in the LARC (Computer architecture and networks Laboratory) at the university, I work with Java web applications.&lt;/div&gt;&lt;div&gt;I also participate on the poliGNU, a free software study group at the university, were we try to learn and spread about free software.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1301931137608599446-4120855594229357272?l=anderson-hacklife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anderson-hacklife.blogspot.com/feeds/4120855594229357272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/05/first-post.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/4120855594229357272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1301931137608599446/posts/default/4120855594229357272'/><link rel='alternate' type='text/html' href='http://anderson-hacklife.blogspot.com/2010/05/first-post.html' title='First Post'/><author><name>Anderson Pierre Cardoso (acardoso)</name><uri>http://www.blogger.com/profile/09754426257350590568</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://4.bp.blogspot.com/-lLyM2xwzMk0/ThD69oxXd9I/AAAAAAAAAC4/Eq8_c-4nxII/s220/Eu_pb.jpg'/></author><thr:total>1</thr:total></entry></feed>
