Planet INdT

July 02, 2009

Ricardo Salveti

Yet another another FISL 10 report


So, as I told at the previous post, I went to FISL 10 last week, also with the opportunity to give a presentation about OpenEmbedded and Mamona.

The conference was quite good this year, not because the level of the technical presentations, but because a lot of important people from many communities went there also. The talks after the presentations, and also at the bar, were the most productive part of the event :-)

My presentation was actually quite cool, with many people interested in OpenEmbedded and also how to hack those Nokia Tablet Devices.

For those who can read portuguese, follow this link to get the presentation.

Some photos (Copyright from Otubo):

In the future I guess FISL will also let the videos of all presentations, so you can download it and see how it went.

Let’s see how the next FISL is going to be, but for sure I’ll try to participate again :-)

by rsalveti at July 02, 2009 05:19 AM

Francisco Alecrim

FISL10 : material, fotos, comentários e agradecimentos

27062009725

Abaixo os slides, fotos e alguns videos que fiz durante o evento:

Sobre o FISL10:

Estou muito feliz de ter participado do FISL10. Assisti poucas palestras, pois durante boa parte do evento estava no stand da Qt software falando sobre Mamona/Qt/BeagleBoard, mas o contato com outros desenvolvedores/usuários/mantenedores permitiu uma extraordinária troca de experiencias. Assisti as palestras do INdT que foram muito massa (Canola, Python-purple, kde pim, Qt e OpenEmbedded). Alem destas, assisti mais 2 palestras que achei excelentes, um delas sobre FPGA com Ricardo Bitencourt e a outra sobre Desenvolvimento do kernel com Breno, Douglas, Chehab, Arnaldo e Habkost.

Contato com Chehab:

Durante o evento tive acesso a sala dos palestrantes, onde conversei com Mauro Chehab(mantenedor do V4L/desenvolvedor da Red Hat). Trocamos várias idéias e ele comentou sobre os patches de um transmissor FM que vieram de um desenvolvedor da Nokia que trabalhou comigo aqui no INdT, Eduardo Valentin(Gente fina! Saudades dudes!).  Alem da necessidade de empresas investirem mais em kernel side.

Contato com Eduardo Marques da SEA:

Estive em contato com Eduardo Marques da SEA Tecnologia (adore a campanha dos caras). Trocamos boas experiências/idéias sobre a BeagleBoard e produtos que podem ser criados utilizando um HW com tais caracteristicas. Gostaria de agradecer ao Eduardo pelo post que ele fez no blog da SEA, falando sobre a palestra. Massa!! :)

Sobre minha palestra:

Valeu pela audiência na minha palestra! A sala era pequena e percebi algumas pessoas sentadas no corredor depois que iniciei a palestra. :) Neste dia eu estava bem agitado(como sempre :P ), afinal de contas era minha primeira vez no FISL e consegui ter uma palestra aceita. \o/ No final da palestra muitas pessoas falaram  foi massa e alguns até comentaram que havia sido a melhor palestra que eles haviam visto durante o evento. Este último não deve ter visto a palestra sobre FPGA. Hehe!!  Fiquei bem feliz com a viagem e contatos que fiz no evento!

Este foi o meu primeiro FISL e pretendo estar neste evento nos próximos anos! \o/

PARABÉNS PELO EVENTO !!

PS: Espero conseguir ter acesso ao video da minha palestra nas próximas semanas. ;)

by Francisco Keppler Silva Alecrim at July 02, 2009 12:44 AM

July 01, 2009

Larry Jr

Curso de Python na Especializa


Estarei daqui a poucas horas (14hs - 18hs) dando um Mini-curso de Python no evento Tardes na Especializa

Eu sei que está em cima da hora, desculpa.

Então faz o seguinte, se não der pra você dar uma passadinha lá, entra no site da Especializa e se inscreve no curso Python Programer que estará começando agora no dia 06/07 de segunda a sexta das 19hs as 22hs.

Aguardo vocês por lá

Mais sobre Python:
Diferencas entre o Python 3 vs Python 2.x
O input do python 3
Vantagens do novo print do Python 3
Edje / QEdje (usando Python)
Receitas com Python
Mini Curso PyGame - JED 2008


by Larry Jr. (noreply@blogger.com) at July 01, 2009 12:54 PM

Ademar de Souza Reis Jr.

Viagem à Patagônia: 30 dias no sul da Argentina e Chile

Foram 30 dias de viagem pela Patagônia, alternando entre Chile e Argentina. Quem já nos conhece sabe que não somos “turistinhas”: gostamos de viajar em baixa temporada e tentamos sair do lugar comum. E assim foi essa viagem: rodamos por estradas do interior, conhecemos pequenas vilas, fizemos trekking, acampamos, pedimos carona e nos hospedamos ou pelo menos conhecemos vários outros couchsurfers.

Fim do outono e início do inverno é a baixa temporada na Patagônia, com tempo frio, cidades desertas e chuva, vento e neve. A maior parte da infra-estrutura turística das pequenas cidades está fechada e algumas estradas ou trilhas pra trekking bloqueadas. Mas no geral tivemos muita sorte: conseguimos dias de sol onde era mais importante e a chuva atrapalhou bem menos do que esperávamos.

Algumas fotos da viagem

Algumas fotos da viagem (clique para ampliar)

Mas enfim, isso tudo é assunto pros posts futuros onde relatarei a viagem em detalhes. Esse aqui é só pra dizer que chegamos bem e que a viagem foi ótima, com pouquíssimos contratempos. Seguem algumas estatísticas da viagem:

  • 15 cidades
  • 2300 km de carro (alugado)
  • 2400 km de ônibus
  • 3 voos domésticos (2 na Argentina e 1 no Chile)
  • 15 noites em 9 diferentes pousadas, chalés ou hotéis
  • 12 noites em 6 diferentes couchsurfers
  • 01 noite no carro ao lado da pequena Vila Traful (numa noite de -2C)
  • 01 noite em barraca (Torres del Paine)
  • 01 noite no ônibus (Osorno - Santiago)
  • 4228 fotos (14GiB)
  • 5h10m de vídeos (22GiB)
  • 52MiB de logs de GPS

Ao longo dos próximos meses, conforme eu for precessando a massa de dados, reporto as diferentes etapas da viagem e disponibilizo os álbuns de fotos e principais vídeos. Obrigado a todos os que ajudaram a tornar essa viagem uma realidade.

Posts Relacionados:

  1. Viagem à Patagônia: Argentina e Chile no Outono/Inverno
  2. Viagem à Africa do Sul: The Elephants Sanctuary
  3. Viagem à África do Sul: Skydive em Plettenberg Bay


Link Permanente | Um comentário
Post tags: , , , ,

by ademar at July 01, 2009 05:09 AM

June 30, 2009

Everton Arruda

June 26, 2009

Bruno Abinader

Python-purple at FISL 10

(Me, Ricardo Salveti and Anderson Briglia - thanks to Henry Vieira for the picture!)Yesterday me and Anderson Briglia spoke about python-purple (a libpurple binding for Python written using Cython) at FISL 10, the most valuable free software event in Latin America. Actually, we had to compete with Richard Stallman's presentation together with the brazilliam soccer team game (which was happening

by Bruno de Oliveira Abinader (noreply@blogger.com) at June 26, 2009 03:12 PM

Anderson Briglia

Python-purple presentation at FISL10

The presentation about Cython develpment and python-purple was very good. Bruno Abinader talked about how INdT used Cython to develop a python binding for Libpurple (which is used by Pidgin, Adium and Meebo).

I demonstrated a very basic demo using python-tk as UI toolkit. The presentation and demo can be found on the project website under “Documentation” section.

by briglia at June 26, 2009 01:53 PM

June 24, 2009

Everton Arruda

[JavaScript+CSS+PHP] Changing style of actual menu link

I was looking for a way to change the style of the actual menu link (the last clicked link in the menu), so that the user could know what page he is seeing, or the last link he clicked. My first attempt was to use only CSS, but i didn’t find anything. Then i read somewhere that it was not able to what i wanted only with CSS, that i needed JavaScript to do it. Well, i’ve done it and here i’ll teach how to do it:

The first thing we have to do is to create the menu and it’s style:
Style:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#menu {
    border-top: 2px solid black;
    border-bottom: 2px solid black;
    padding: 10px;
    text-align: center;
    width: 300px;
}

#menu a {
    padding: 10px;
    text-decoration: none;
    margin: 0px 5px;
    color: black;
    background-color: "white";
}

#menu a:hover {
    text-decoration: underline;
}

Note that i didn’t set the a:visited style.

Menu:

1
2
3
4
5
<div id="menu">
    <a id="link1" href="<?php $_SERVER['php_self'] ?>?p=link1">link1</a>
    <a id="link2" href="<?php $_SERVER['php_self'] ?>?p=link2">link2</a>
    <a id="link3" href="<?php $_SERVER['php_self'] ?>?p=link3">link3</a>
</div>

Now we have our menu, but it’s still not showing what is the actual menu link, so we will need a function that will change the style of the actual menu link:

Javascript Function:

1
2
3
4
5
function setActualLink(item)
{
    item.style.backgroundColor = "black";
    item.style.color = "white";
}

Now that we have the function it’s necessary to make it be executed after the menu is loaded, adding this line:

1
<script>setActualLink(<?php echo $p; ?>);</script>

You could also create a class for the actual menu link and assign the class to the actual menu link, instead of setting the styles directly inside the javascript function, as shown below:

Actual Menu Link Class:

1
2
3
4
#menu a.actualLink:visited {
    background-color: black;
    color: white;
}

And the javascript function would change to:
JavaScript Function:

1
2
3
4
function setActualLink(item)
{
    item.className = "actualLink";
}

You can see the examples in the links below:
Using class
Not using class
The php codes are commented in the source.

Remeber that the pages must be .php .

:wq

by Éverton Arruda at June 24, 2009 10:09 PM

Ricardo Salveti

OpenEmbedded and Mamona at Fisl 10


For those who are going to FISL this year, I’m going to make a presentation about OpenEmbedded and Mamona, showing how the OE woks and also how OE can support so many different machines, distros and packages.

The presentation is going to happen this wednesday (24/06) at 17h. If you are planning to understand more about how the embedded environment works, learn about it’s problems and how OE is handling that, you can’t miss it ;)

Besides the presentation I’m quite happy that I’m going to meet some good old friends. Hopefully we’ll learn more about what each other are doing and also to drink some beers together :)

See you all there :)

by rsalveti at June 24, 2009 06:40 AM

June 18, 2009

Eduardo Lima

A Bunch of Updates

Warning! Long long post ahead!

Well, I was supposed to post news here more often, but it's been quite impossible to do it due to the day to day work. Bullet point to the rescue!!!

  • Google Summer of Code

    Thanks to Valério who arranged everything, Maemo has got 10 slots in this year edition of Google Summer of Code. We received very good proposals for projects, but I never expected as much interest in Canola as we got in the end: 5 out of 10 projects are related to Canola. We'll surely have great results by the end of the program in August.

  • Mozilla/Maemo Danish Weekend

    The hackfest was really great. The idea of gathering together the main Firefox add-ons developers to get them ported to Fennec and the developers of Fremantle Stars at first seemed a bit weird in my point of view, but in the end it proved its worth. My travel was ok, but I felt really confused because of the jetlag. I only managed to get used to the timezone in Lisbon, during my trip back to Brazil.

    The IT University is a wonderful place, and the architecture of the building is just stunning.





    The opening party on Friday was a great opportunity to meet the already known and new faces. I could take part on some good discussions about Free Software, mobile devices, traveling, and many other things I can't remeber by now.





    In the way back to the hotel we realized how fun can it be to get a train in Copenhagen after having drunk some beers.



    It felt like we were traveling through time. Niels could express it better :D.



    Saturday morning after a quick kick-off by Quim and William, we had a track with presentations related to Mozilla. Time for the Maemo guys, myself included, to start working on their projects. I managed to get together with 3 of the 5 students that are participating in this year edition of Google Summer of Code: Andrey Popelo (Remember the Milk plugin), Andrei Mirestean (Picasa plugin), Lauri Võsandi (Bittorrent plugin).

    In the afternoon it was time of the Maemo track. We had very interesting talks: The first one about the new version of the platform and device. Quim showed us a development prototype unit and it seems really promising. Can't wait to see the final product. After that, quick presentations about the Fremantle Stars and a presentation about Canola, where I made the announcement about the exception in the GPLv3 that we adopted targeting new opportunities of adoption of our software.



    During my presentation I also demoed the new version of Canola, yet to be released, and the students working on the GSoC projects introduced themselves and their projects to the attendees. In the end of the talk, I presented some rough plans of the points we expect to work on for the near future.

    After my talk, we had the last two presentations about the awesome Mer project. :)

    On Sunday we were able to hack almost all day long. It was quite productive and I could help the students a bit and fix some nasty bugs in Canola and plugins. I also kicked off the work of porting the EFL packages to Fremantle, thanks to Jeremiah's valuable tips.





    It was a great event, thanks to everyone who worked to make it happen and also to Nokia/Mozilla for sponsoring my travel and accommodation. I really hope to be able to attend the Maemo Summit later this year in Amsterdam. :)


  • FISL

    That's what has keeping me busy lately. There are about 15 people from INdT going to Porto Alegre to attend the tenth edition of the Fórum Internacional de Software Livre (FISL). I'll give a talk about Canola and how it can be extended to bring new experiences to the users. Some guys from Qt Software are coming to FISL as well, and we're helping them to arrange everything with their booth.

    We are also organizing a challenge where the winner will receive a N810 Internet Tablet, Nokia Bluetooth Speakers and one week stay in Recife for a training on the latest Qt technologies which we're helping to develop.


  • Canola

    After the Mozilla/Maemo hackfest I started to work on the new release of Canola and consequently, EFL. At the moment we already have the core packages uploaded and working. Unfortunately I wasn't able to start working on the Python packages yet. Hope to start them on next week after we finish the arrangements for FISL. More to come soon. ;)

by noreply@blogger.com (etrunko) at June 18, 2009 05:56 PM

June 17, 2009

Milton Soares

Qt/openBossa Challenge

Nice opportunity to win a Nokia N810 tablet at the FISL. (Free translation from pt_BR)

Do you have a good idea? Do you know the Qt library? Would you like to be awarded for that?

The INdT (Nokia Technology Institute), nowadays one of the main development excellence centers in Brazil, promotes the first Qt/openBossa challenge.

We look for developers capable of putting your ideas into practice and build Qt applications designed to Nokia’s mobile devices. Participants will create innovations which will be evaluated and awarded during the 10th International Free Software Forum (FISL).

More at http://openbossa.org/fisl/index.html.

by milton at June 17, 2009 03:04 PM

Antonio

WebKit/EFL 0.1 released

The Browser team at INdT's OpenBossa Labs is proud to announce the 0.1 release of WebKit/EFL, a development milestone targeted the Enlightenment community.

We hope the release will give feedback about the overall usage of the web runtime and embedding API, as well as encouraging people in contributing to the port. Due to a change in focus, our team at INdT will have to minimize our envolvement somewhat, but we will still do maintenance and patch reviews.

Since the first announcement of the port during December last year, the code has been refactored in many of its crucial parts, resulting in good performance improvements. Now, six months later, we believe the project is mature enough to gain wider testing.

Quick start

1) About WebKit

WebKit is an open source web contents engine powering products such as Google Chrome and Android browser, Apple's Safari and iPhone browser, as well as Nokia's web runtime for S60.

2) About EFL

The Enlightenment Foundation Libraries (EFL for short) are a set of graphical libraries intended to provide easy-to-use resources for building rich user interfaces based applications. It is the core of the Enlightenment window environment. As mentioned in its official web site, "the libraries are meant to be portable and optimized to be functional even on devices such as mobile devices". Its core components are:
  • Evas: Highly optimized raster canvas
  • Edje: Declarative UI library
  • Ecore: Event loop and utility classes
  • Eina: Basic data types
  • Embryo: Scripting

3) About the port


WebKit was born to be toolkit independent: "WebKit's HTML and JavaScript code began as a branch of the KHTML and KJS libraries from KDE. As part of KDE framework KHTML was based on Qt but during their porting efforts Apple's engineers made WebKit toolkit independent". Currently there are browser components based on WebKit for the following toolkits (officially upstream only): Qt, Gtk+, wxWidgets, Windows, among others. This port is about adding EFL to the list of supported toolkits, providing an easy-to-embed browser component/widget into EFL based applications. As the developers also work on the Qt port, we try to keep the implementation as close as possible to that of QtWebKit. The build system was based on Gtk+'s though.

WebKit/EFL currently compiles and runs on Linux, and is not yet upstreamed, however tries to follow WebKit trunk as much as possible, though it might be a week or two behind.

_Painting

Painting is performed using Cairo on an offscreen surface, thus all painting is double buffered. For this to work on 16 bit devices such as the Nokia Internet Tablet, some patches needs to be applied to the shipped Cairo version.

_Networking:

Networking is based on Libcurl, which is used elsewhere by EFL, and was thus a natural choice. Cookies are supported.

What is in this version ?
  • API for navigation browsing (back, forward, reload, stop), session and global history, zooming, among others. See API here.
  • Configurable flash plugin via the "--enable-glib-integration" configure option. Default: true.
  • Configurable Windows like panning support via the "--enable-pan-scrolling" configure option. Default: false.
Performance

In order to better demostrate its performance (which is just great on Desktop), we have ran it on an Linux embedded device (in our case, an n810 running manoma). Alecrim, also from INdT, has written some nice blogposts about it. Below are two of the videos he made showing WebKit/EFL running on a n810 with mamona.



Andre Pedralho is also updating EVE browser to work with this version.




Some highlights about the performance is the startup time: ~3 secs on cold launch and ~1 second on hot launch.

Known issues


  • Flash crash on GMail.
  • Flash content not zooming synced with page content zooming (This has been disabled due to Flash Player issue (FP-2140).


Building and Running WebKit/EFL (trunk)
  • git clone git://gitorious.org/webkit-efl/webkit-efl.git webkit
  • cd webkit
  • git checkout origin/master
  • git checkout -b # e.g. webkit-efl
  • get all dependencies installed - run |configure| to get a list of needed packages
  • WebKitTools/Scripts/build-webkit --efl --makeargs=-s -jXX> --no-video # OR ./autogen.sh --with-port=efl --disable-video
  • WebKitTools/Scripts/run-launcher --efl
This 0.1 release has been tagged to "webkit-efl-0.1". Feel free to use it as well.

Where to get in touch

Join #webkit-efl channel on irc.freenode.net, send patches and emails ... Your contributions are be very welcome.

About the Development Team

  • Kenneth Christiansen (lead programmer) - kenneth dot christiansen at openbossa dot org
  • André Pedralho - andre dot pedralho at openbossa dot org
  • Antônio Gomes - antonio dot gomes at openbossa dot org
  • Diego Gonzalez - diego dot gonzalez at openbossa dot org
  • Afonso Costa - afonso dot costa at openbossa dot org
  • Marcelo Morais - marcelo dot morais at openbossa dot org

by Antonio (tonikitoo@gmail.com) at June 17, 2009 03:23 PM

June 15, 2009

Larry Jr

O input do python 3

No Python 2.x nós temos 2 modos de entrada de dados o input() e raw_input()
Primeiro vamos entender como cada um funciona pra depois sabermos como ficou agora e porque a mudança no Python 3

raw_input()
o raw_input() captura pela entrada padrão (sys.stdin.readline) tudo o que você digita (até apertar "enter") e lhe retorna como uma string, mais simples que isso impossivel, opcionalmente você pode também colocar uma mensagem quando chama o raw_input()
ex:
>>> raw_input()
1, 2, 3 # <-- usuario digita
'1, 2, 3'
raw_input retornou a string "1, 2, 3"
Se quisermos avisar o que tipo de dado estamos esperando podemos fazer:
>>> raw_input("Digite seu nome: ")
Digite seu nome: Larry # <-- usuario digita
'Larry'
Simples sem misterios.

input()
o input por outro lado é muito mais "esperto", tão esperto que a maioria embora acha que saiba, na verdade não tem noção de como ele funciona (eu já estive nesta lista)
muitos o input() é muito parecido com o raw_input() com a diferenca dele "avaliar" os tipo de dados e retornar os tipo "certo"
ex:
>>> x = input()
1
>>> type(x)
#input avalia a entrada como um inteiro
>>> input()
1, 2, 3
(1, 2, 3) # input retornava uma tupla de 3 inteiros

>>> input()
1, haha, 4.8
(1, 'haha', 4.8) #input retornava uma tupla com um inteiro uma string e um float
Então você pensa: "esse é o kra que eu vou usar sempre"
Mas o buraco é mais embaixo do que você pensa
ex:
>>> input("usuario digita: ")
usuario digita: if x
Traceback (most recent call last):
File "", line 1, in ;
File "", line 1
if x
^
SyntaxError: invalid syntax
WTF???
Sim amigo ele faz mais do que você pensa.
O "esperado" seria uma string "if x"
Na verdade o input() pega o que você digita, roda e da um retorno como uma expressão python, na verdade você disponibiliza um "terminal" python e pega o retorno
ex:
>>> x = 2
>>> input("usuario digita: ")
usuario digita: x + 3
5 #retorno de input() sera o valor da variavel x mais o int 3

>>> input("usuario digita: ")
usuario digita: x == 4 and "ola" or "NAUM e PAH"
"NAUM e PAH"
Se não for bem tratado isso pode ser MUITO perigoso.

Enquanto isso no Python 3...

No python 3.0 isso foi mudado, o raw_input() foi renomeado para input() se tornando o input padrão
- E o input() antigo?
Foi sumariamente REMOVIDO, exterminado, jogaram ele no marmore do inferno
Mas nem tudo está perdido, se você prestou atenção deve ter percebido que existe alguém que praticamente a mesma coisa que o antigo input com um pequena diferença. Eu estou falando do eval():
O eval() recebe um string faz e o mesmo que o antigo input() (na verdade seria o contrario, o input() faz o mesmo que o eval()), ele
avalia a string no interpretador python e retorna o resultado da expressão, da mesma forma que o console python faz.
Entao para se ter o mesmo efeito do antigo input basta chamar a funcao eval() pro retorno de input
>>> input()
1, 2, 3 # <-- usario digita
'1, 2, 3" # <-- string

>>> eval('1, 2, 3")
(1, 2, 3)

#portanto
>>> eval(input())
1, 2, 3 # <-- usario digita
(1, 2, 3) # <-- tupla
Quando você for converter seus programas python 2.x para 3 bastar usar eval(input()) e você terá o mesmo efeito (mas agora você sabe o motivo ;-) )

mais posts sobre Python:
1 - Vantagens do novo print do Python 3
2 - Diferencas entre o Python 3 vs Python 2.x
3 - Edje / QEdje (usando Python)
4 - Receitas com Python
5 - Mini Curso PyGame - JED 2008


by Larry Jr. (noreply@blogger.com) at June 15, 2009 06:36 PM

Diferencas entre o Python 3 vs Python 2.x

Na universidade que eu faço, a UFRPE, nós temos a tradição de usar o python como linguagem "oficial". Portanto eu tenho usado Python a pelo menos 3 anos e a 2 profissionalmente, a algum tempo (+- 6 meses atrás) saiu uma nova versão do Python a 3 ou 3000 ou 3k (escolha o nome que achar melhor), e as opiniões são as mais variadas possíveis, algumas mudanças a tempos era discutida e os caminhos que a linguagem seguia pedia algumas dessas mudanças, e o "Ditador Benevolente do Python" vulgo Guido van Rossum juntamente com os hacker do python após grande discussões chegaram a várias mudanças, algumas, mesmo na versão 3.0, ainda não estão totalmente implementadas e alguns problemas de desempenho ainda existem.
Entre as mudanças mais pedidas e que não foram colocadas no python 3 é o polémico self obrigatório em todos os métodos de uma classe, (assunto de post futuro).
O grande problema para a maioria está na não compatibilidade entre as versões, programas pequenos podem ser facilmente alterados, basicamente substituindo print por print() e input() por eval(input()), mas grandes aplicativos, principalmente os que fazem uso de módulos externos, terão grande trabalho para portar seus aplicativos. Agora é principalmente o momento de portar módulos, vai demorar um tempo até termos tomos os módulos devidamente portados, por esses e outros motivos a comunidade vai continuar por aproximadamente 3 anos mantendo e desenvolvendo em paralelo a versão 2.x, agora na versão 2.6 e que tem certo a saída de uma versão 2.7 (talvez até uma 2.8), com o objetivo de "suavizar" a transição do python 2.x pro 3.

Não era minha intenção falar sobre isso, mas devido as duvidas (minhas e de outros), resolvi dar uma estudada sobre o assunto e vou colocar por aqui as minhas impressões sempre que possível.

Ficarei atualizando este post com os novas postagens ficando um índice para os posts sobre esse assunto:
  1. Vantagens do print no Python 3
  2. O input do python 3
mais posts sobre Python:
- Edje / QEdje (usando Python)
- Receitas com Python
- Mini Curso PyGame - JED 2008

Mais informações sobre as "novidades" do python 3 no site oficial


by Larry Jr. (noreply@blogger.com) at June 15, 2009 06:27 PM

Vantagens do novo print do Python 3

A primeira diferença que se nota quando se muda para o python 3 e a mudança do print, que virou uma função e agora tem que ter os parênteses para funcionar
Antes o famoso "hello Word" era assim:
>>> print 'ola mundo'
agora fica assim:
>>> print ('ola mundo')
A principal vantagem está na padronização da função e na possibilidade de testar o print() com funções como o dir() e help(),
Antes:
>>> dir(print)
File "<stdin>", line 1
dir(print)
^
SyntaxError: invalid syntax
Agora:
>>> dir(print)
['__call__', '__class__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
O mesmo acontecia com o help(), por falar nele fica mais fácil para os iniciantes saberem como fazer para, por exemplo, enviar a saída do print para um arquivo, e usar o print como um log, (ou mudar a saída padrão)
Antes:
>>> arquivoLog = open("log.txt", "a")
>>> print>>arquivoLog, "imprimindo no arquivo de log"

>>> print>>sys.stderr, "imprimindo na saida padrao"
Agora:
>>> arquivoLog = open("log.txt", "a")
>>> print("imprimindo no arquivo de log", file=arquivoLog

>>> print("imprimindo no saida padrao", file=sys.stderr)
Agora é possivel usar separadores quando temos varios objetos para imprimir:
>>>print(1, 2, 3, sep=" - ")
1 - 2 - 3
E definir o caractere de fim de linha (o padrão é o '\n'):
>>>print("mensagem", end=" - log\n")
mensagem - log/n
A sintax da função print() ficou assim:
>>>print([objeto, ...][, sep='separador'][, end='caractere final de linha'][, file=arquivoDirecionado])

Pra mim o antigo print ja vai tarde ;)

mais posts sobre Python:
1- Diferencas entre o Python 3 vs Python 2.x
2 - Edje / QEdje (usando Python)
3 - Receitas com Python
4 - Mini Curso PyGame - JED 2008


by Larry Jr. (noreply@blogger.com) at June 15, 2009 06:24 PM

June 14, 2009

Marcelo Lira

Bible pr0n


Escrevo isso pra todos aqueles, incluindo a mim (fala, Amin!), que têm tanto receio de serem vistos lendo uma bíblia quanto de serem pegos pela mãe com uma Playboy da Cláudia Ohana na mão esquerda, fato vergonhoso pela mãe, pela outra mão, e ainda pelo gosto bizarro. (Fosse você um adolescente da família Van Helsing poderia alegar estudo privado de licantropia pubiana, mas isso ainda não explicaria a estaca na outra mão, que todos Van Helsing sabem se tratar de arma contra vampiros, não com lobis… seja lá o que for que está escondido embaixo daqueles pêlos.)

Imagino que o parêntese do último parágrafo cobre todo pr0n desse texto.

A repulsa pela a bíblia por parte das pessoas racionais e outros bichos parecidos provavelmente é gerada por causa do que ela e as pessoas que vendem esse peixe representam do que pelo conteúdo. Não vai faltar quem diga quantas mortes, guerras e manhãs de domingo entediantes aconteceram por causa de religião e tudo que lhe é relacionado. Também sobre a irracionalidade que causa nas pessoas e por aí vai. Por compartilhar vagamente dessas opiniões por muito tempo (e por ser importunado pra participar de grupos de estudo bíblicos de quanto em vez) algum mecanismo automático na minha cabeça colocava uma etiqueta de “anti- ou semi-racional” em qualquer pessoa segurando um livro preto de letras douradas e lateral das folhas vermelhas.

Moeda Romana

Moeda Romana com Otávio Augusto

Então eu esqueço esses problemas e vou ler qualquer outra coisa “de nível”, o que é esperado de uma pessoa racional. Vou de “A Desobediência Civil” de Henry Thoreau. “Sob um governo que prende qualquer homem injustamente, o único lugar digno para um homem justo é também a prisão.” É assim que se fala, Thoreau! (Embora eu mesmo não queira ir pra cadeia, e talvez você não tivesse ouvido falar de algo como Carandiru.) Texto vai, texto vem, chega na parte sobre governo, impostos e ele me vem com essa citação:

Cristo respondeu aos seguidores de Herodes de acordo com a situação deles. “Mostrem-me o dinheiro dos tributos”, disse ele; e um deles tirou do bolso uma moeda. Disse então Jesus Cristo: “Se vocês usam o dinheiro com a imagem de César, dinheiro que ele colocou em circulação e ao qual ele deu valor, ou seja, se vocês são homens do Estado e estão felizes de se aproveitar das vantagens do governo de César, então paguem-no por isso quando ele o exigir. Por­tanto, dai a César o que é de César, e a Deus o que é de Deus”; Cristo não lhes disse nada sobre como distinguir um do outro; eles não queriam saber isso.
A Desobediência Civil

Muito esperto Jesus, recebeu a bola e devolveu com efeito.

A Roda da Fortuna

A Roda da Fortuna

Depois fui pra George Orwell. Tem um ensaio chamado “Politics and the English Language”, onde ele discute como o pensamento de uma sociedade decadente corrompe a língua e como a língua corrompida aumenta ainda mais a decadência. Essa corrupção aparece na forma de textos vagos, usando uma colagem de frases prontas que esconde o que o autor quer dizer (às vezes dele mesmo) e ainda dão umas duas mãos de tinta de respeitabilidade em cima de baboseiras que se ditas claramente seriam rejeitadas no mesmo instante. Num dado momento Orwell mostra um texto claro, com imagens fortes e que passa a idéia básica do autor muito bem:

I returned, and saw under the sun, that the race is not to the swift, nor the battle to the strong, neither yet bread to the wise, nor yet riches to men of understanding, nor yet favor to men of skill; but time and chance to them all.

Voltei-me, e vi debaixo do sol que não é dos ligeiros a carreira, nem dos fortes a batalha, nem tampouco dos sábios o pão, nem tampouco dos prudentes as riquezas, nem tampouco dos entendidos o favor, mas que o tempo e a oportunidade ocorrem a todos. (Tradução de alguém na internet.)

E para demostrar seu ponto de vista reescreve o trecho no que ele chama de “inglês moderno”:

Objective consideration of contemporary phenomena compels the conclusion that success or failure in competitive activities exhibits no tendency to be commensurate with innate capacity, but that a considerable element of the unpredictable must invariably be taken into account.

Consideração objetiva de fenômenos contemporâneos compele a conclusão de que sucesso ou fracasso em atividades competitivas não exibe qualquer tendência a ser passível de redução à capacidades inatas, mas que a considerável influência do elemento da imprevisíbilidade deve ser levada em consideração. (Minha tradução.)

Essa comparação ilustra bem a idéia do ensaio, e o primeiro texto achei excelente (em português e inglês), quem o escreveu deve ter vivido o que dizia, e qualquer um lendo já deve ter passado algo assim. Quero dizer, é o tipo de preocupação com a qual todos podem se identificar. Recomendo duplamente o ensaio. E também o restante do texto-exemplo.

Holy Pr0n!

Holy Pr0n!

Outra coisa que acho legal é literatura inglesa, embora não tenha tempo e memória pra ficar esnobando nos círculos sociais por aí :P . Teve uma época que trabalhei numa biblioteca de faculdade e um livro encontrado por acaso (todos eram) e devorado (e os detalhes esquecidos. sabe, memória e tals, dammit!) chamava-se “A Literatura Inglesa” de Anthony Burgess (o cara de Laranja Mecânica (o autor, não o personagem)). O livro foi escrito como um mastigadão (no bom sentido) de literatura inglesa pra ajudar alunos do Burgess em algum lugar pela Malásia. A prova final de inglês incluía o conhecimento de obras literárias um tanto alienígenas pros caras de lá e o livro adicionava um pouco de contexto histórico. Pra um livro escolar achei esse um dos mais agradáveis de ler (não contando os trechos legais em livros de “Comunicação e Expressão”, mas esses acabavam logo e não tinha livraria na minha cidade pra comprar a versão integral) e demoliu uns muros velhos da minha antiga aversão à literatura.

Burgess começa falando das origens da língua, saxões, normandos e tudo mais, até que chega num capítulo sem número entre o 5 e o 6 com o seguinte título: “Interlúdio – A Bíblia inglesa”. E o primeiro parágrafo é o seguinte:

Vamos examinar muito sumariamente um livro cuja influência sobre a escrita, a fala e o pensamento inglês foi, e ainda é, imansa. A Bíblia não é basicamente literatura – é o livro sagrado do cristianismo -, mas recentemente vem se afirmando uma tendência crescente para apreciar a Bíblia por suas qualidades artísticas, para vê-la não só como a “Palavra de Deus”, mas como uma obra de grandes escritores. Sejam quais forem nossas crenças religiosas, se desejarmos ter uma apreciação integral do desenvolvimento da literatura inglesa, não podemos nos arriscar a negligenciar a Bíblia: seu impacto puramente literário nos escritores ingleses é talvez grande demais para ser medido.

A tradução da Bíblia (agora que tenho sua atenção posso usar o ‘B’ maiúsculo sem parecer um carola) para o inglês foi encomendada pelo Rei James I. A tarefa foi realizada (com muito cuidado) por 47 eruditos de 1604 até 1611 (foi muito cuidado mesmo). No final entregaram um texto tão bom que segura audiências até os dias de hoje. Segundo Burguess: “Não há escritopr que não tenha sido influenciado por ela – até mesmo escritores como Bernard Shaw e H. G. Wells, apesar de não serem cristãos, acabaram sucumbindo à sua força.”

Outro dia comprei uma King Jame’s Bible, logo de cara gostei dessa parte (Genesis 1:2):

The earth was formless and void, and darkness was over the surface of the deep, and the Spirit of God was moving over the surface of the waters.

(E a terra era sem forma e vazia; e havia trevas sobre a face do abismo; e o Espírito de Deus se movia sobre a face das águas.)

Não sei se é tietagem minha com a língua inglesa ou se a versão em português me lembra ser acordado à força no domingo pra continuar dormindo numa posição desconfortável na igreja, mas gosto mais da versão Jamesiana do que a tradução nos parênteses. As palavras em “formless and void” e “darkness was over the surface of the deep” soam tão bem. E “the Spirit of God was moving over the surface of the waters” gera uma imagem mental do “Espírito de Deus” sendo uma Jamanta (não o caminhão, ou aquele louco de uma novela esquecida – o que nos leva a outra tietagem: “Jamanta” simplesmente não soa tão bem quanto “Manta Ray”).

"Then God said, 'Let there be light'; and there was light."

"Then God said, 'Let there be light'; and there was light."

Saindo da literatura e me interessando por eventos recentes. Todos (que pensam) já se perguntaram quanto do terrorismo fundamentalista islâmico é coisa de fundamentalistas, se o islamismo é mesmo violento em seu núcleo, ou se é inerente de qualquer religião, já que elas causam mortes guerras e constrangimento, como quando você é flagrado por seus amigos racionais lendo a Bíblia.

Esse assunto em particular é bem espinhento. Se você se der ao trabalho de procurar vai ter seu saco ou ovários enchidos até o limite com opiniões que vão de um extremo politicamente correto onde tudo é bom, todos são bons, ninguém pode ser ofendido e que mulheres de burka trancadas em casa são felizes do jeito delas, até o outro extremo (lá pelo lado direito) com pessoas que tudo que precisam é uma desculpa pra expulsar/matar/desintegrar os “alienígenas indesejáveis” do seu país.

Oriana Fallaci

Oriana Fallaci (foto "emprestada" de El País)

Persistindo dá pra encontrar umas pessoas interessantes, como Ayaan Hirsi Ali, aquela moça da Somália que escapou da família pra Europa e chegou a parlamentar nos Países Baixos. Ou a menos famosa (pelo menos pra mim) Oriana Fallaci, que aos 10 anos participou da Resistência Italiana, aos 16 era repórter, foi ao Vietnam como correspondente 12 vezes, e por aí vai. Meu episódio preferido é o da entrevista com o aiatolá Khomeini em 1979:

“Como é possível nadar com um chador [traje feminino que cobre todo o corpo, deixando apenas os olhos de fora]?”. A resposta do líder, Oriana escreveu depois no New York Times, foi que ela não era obrigada a usar um, já que se tratava de uma peça de roupa para mulheres islâmicas respeitáveis. A jornalista, então, rasgou seu chador na frente de Khomeini.
Morre a polêmica jornalista e escritora italiana

Mas o que interessa nesse texto é como ela se define como Ateísta Cristã no livro A Força da Razão. Dizem que o livro em si é tão polêmico que devia vir com um martelo e uma caixa de vidro escrita “Quebre em Caso de Emergência”, mas voltemos à afirmação:

Sou uma Cristã porque gosto do discurso que está nas raízes do Cristianismo. Porque ele me convence. Ele me seduz… Quero dizer, o discurso concebido por Jesus de Nazaré… que… se concentra no Homem. Que adimitindo o livre-arbítrio, clama pela consciência do Homem, nos faz responsáveis por nossas ações. Mestres de nosso destino. Eu vejo um hino à Razão, uma renovação do pensamento claro… escolha… a redescoberta da liberdade. A redenção da liberdade… uma idéia que ninguém jamais teve… A idéia de um Deus que se tornou Homem… Que falando de um Criador… se apresenta como seu Filho e explica que todos os homens são irmãos de seu Filho… capaz de exercer sua própria essência divina… pregando a Bondade que é o fruto da Razão, da Liberdade, espalhando o Amor… Jesus… como um homem… aborda o tema do secularismo… ele impede os covardes que estão para apedrejar a adúltera… ele ataca a escravidão… ele luta… ele morre. Sem morrer pois a Vida não morre. A Vida sempre ressucita, Vida é eterna. E, junto com o discurso sobre a Razão, sobre a Liberdade, este é o ponto que mais me convence… a negação da Morte, a apoteose da Vida… sua alternativa é a Não-Existência. E vamos encarar: tal é o princípio que guia e alimenta nossa civilização.

Essa tradução é do único trecho que pude encontrar na internet (sem recorrer a torrents de PDFs) onde Oriana Fallaci elabora essa idéia de Ateísmo Cristão dela. Veio de um artigo de uma revista conservadora norte-americana. Os conservadores provavelmente vão pegar a finada como Joana D’Arc involuntária deles ou sei lá, mas esse é ainda outro problema, que de fato não é meu.

O meu problema é que já escrevi bastante. Preciso pensar como finalizar isso tudo e botar umas figuras legais pra disfarçar a compridez do texto. Opa! Falei isso em voz alta?!

A conclusão não sagaz é o bom e velho “não julgue o livro pela capa” que o He-Man diria num final de episódio. Pensando mais um pouco dá pra perceber (eu pelo menos) que tomamos muita coisa como garantida, como esperar um comportamento decente por parte dos assim chamados Outros (citação obrigatória do Luck (não Luke): “Não se preocupe com os outros, tem muitos mais de onde esses vieram.”), ou que a civilização (no sentido de educação e respeito, não no sentido de eletrônicos chineses feitos por trabalhadores sem assistência social) brotou de grátis do nada como o mundo que o Grande Deus Jamanta tirou do vácuo. Bom, tem uma meia dúzia de idéias que fazem sua vida não tão ruim quanto a da galera num filme de Mad Max que, dentre outros lugares, veio da Bíblia. Por exemplo: “E como vós quereis que os homens vos façam, da mesma maneira lhes fazei vós, também.”, Lucas 6:31; ou “And as ye would that men should do to you, do ye also to them likewise.”, Luke 6:31. Então se me encontrarem lendo uma Bíblia por aí lembre de tratar os outros como gostaria de ser tratado e não me encha o saco. Aliás, sinta-se livre pra tratar os outros direito (estou levando em consideração que você não é masoquista), quer saber, pra ficar mais fácil ainda: deixe-os em paz. Do que estamos agora pra isso já seria uma grande melhora.

by Marcelo Lira at June 14, 2009 08:30 PM

Milton Soares

Qt Codestyle Automatic Check

Code style carries many benefits, such as improved maintainability and support for a rich Coding Standard. However it’s not safe to rely on developers to always comply to style rules along the source code, that’s why automatic code style verification should be an initial concern for professional-level works.

For the sake of coding-style-importance-aware people, there are many great projects such as GNU indent, pep8 and astyle that perform all the work for you, whose only need the appropriate setup flags.

For Qt projects, astyle is the recommended tool. But there are a few drawbacks on using it.

  • it’s too intrusive. astyle performs code modification in-line, disturbing the repository sources instead of serving as a verification tool only
  • weak didactic factor. Unlike pep8 script, which tells the developer exactly what the problem is and contributes to avoid it at the future (as a lesson learned effect)
  • it’s output can not be easily integrated with another tools

I’ve created a shell script in order to overcome some of the previous issues. It’s available here. Some relevant features.

  • quickfix-style list output
  • QTest style output at the end
  • Ignore moc created files
  • All suggested modifications can be applied as one patch, directly available to the user
  • Can be run inside a testsuite (make test) or as a standalone program

TODO

  • try to extend astyle classes
  • allow alternative code styles
  • better source selection schema (integrated with qmake, maybe?)
  • fix-up improper indentation on some important macros (foreach, .e.g.)
  • test and make it work on MacOS

by milton at June 14, 2009 05:38 AM

June 13, 2009

Fred Duarte

Creating custom QGraphicsItems

Previously, I’ve shown you how to place items in a scene (through convenience functions). Now we’ll talk about how to create your own custom QGraphicsItems.

In order to do that, you must first subclass from QGraphicsItem class. There are two important methods to be reimplemented:

  • boundingRect: virtual function that returns the area that needs to be painted. All items have a bounding rectangle and QGraphicsView uses this function to determine what parts need to be redrawn.
  • paint: virtual function that implements the painting method itself. It uses a QPainter object.

Let’s take a look at a sample code:

class CustomItem : public QGraphicsItem
{
public:
    CustomItem(QGraphicsItem *parent = 0);
 
    QRectF boundingRect() const
    {
        return QRectF(0, 0, 250, 250);
    }
 
    void paint(QPainter *painter,
               const QStyleOptionGraphicsItem *option,
               QWidget *widget)
    {
        painter->setRenderHint(QPainter::Antialiasing);
        painter->setBrush(Qt::blue);
        painter->drawRoundedRect(0, 0, 250, 250, 5, 5);
    }
};

As you can see, the boundingRect method returns a QRectF object containing the draw area. Inside the paint method, we set the brush color to blue and draw a rounded rectangle of same size as the bounding rectangle. Also, the Antialiasing flag is enabled so that the engine draw smooth edges.

There are 2 more parameters in the paint method: QStyleOptionGraphicsItem and QWidget. The first is the style option for the item and the second is an optional parameter that describes the widget to draw the item.

The QPainter parameter is the most important one right now. But, as you become more acquainted with the Qt Canvas Programming, you should look further into the other 2 parameters, specially the QStyleOptionGraphicsItem.

After adding the item (CustomItem class) to the scene and displaying it, the result is this:

Custom Item drawn using the pain and boundingRect methods.

Custom item drawn from QGraphicsItem.

There are several options to choose from when drawing an item with the QPainter object. You just have to replace the drawRoundedRect method with the another suitable one. There are a couple of examples below:

QPainter draw methods.

QPainter draw methods.

The source code used for this post is available here: custom-qgraphicsitem.tar.gz. Use it to create your customized QGraphicsItems.

Till next time.

by fred at June 13, 2009 05:49 PM

June 12, 2009

Francisco Alecrim

Qt Kinetic on N810 with Mamona : under development

We’re working with Qt Kinetic at INdT. Mamona, as our platform, should support it.  ;)

Question: Do you want to test on your device?

Answer: You can follow this tutorial HERE.

by Francisco Keppler Silva Alecrim at June 12, 2009 09:54 PM