Adicione seu blog

Se você é um contribuidor do KDE que fale português, Pode ter seu blog listado aqui em nosso planet. O Conteudo do blog deverá ser sobre KDE em Português e não deve conter ofensas. Se você tem um blog de vários assuntos, você deve criar uma tag KDE e adicioanar apenas o feed para a mesma no planet.

Para ter seu blog adicionado aqui, envie um e-mail para tcanabrava @ kde.org com os dados necessários e ele prontamente atenderá seu pedido.

Caso você possua conta no svn, pode adicionar o próprio feed:

  • svn checkout svn+ssh://@svn.kde.org/home/kde/trunk/www/sites/planet/planetkde-br
  • Coloque seu hackergotchi em website/hackergotchi/. O hackergotchi deve ser uma foto de seu rosto de 80x80 pixels com um background transparente. Lembre-se de svn add o arquivo.
  • no fim do arquivo planetkde-br/config adicione seus detalhes. (o nome entre parenteses é seu apelido de IRC):
  • feed 15m http://path.to/my/feed.rss define_name Konqi Konqueror (konqi) define_face hackergotchi/konqi.png define_facewidth 80 define_faceheight 80
  • svn commit

If you want to add a Twitter microblog to the Microblogging sidebar add define_microblog true and follow your name with [twitter]. Currently only Twitter is known to work, please contact Jonathan Riddell before adding non-Twitter microblogs to check it works.

Planet KDE Português Guidelines

Planet KDE Português is one of the public faces of the KDE project and is read by millions of users and potential contributors. The content aggregated at Planet KDE Português is the opinions of its authors, but the sum of that content gives an impression of the project. Please keep in mind the following guidelines for your blog content and read the KDE Code of Conduct. The KDE project reserves the right to remove an inappropriate blog from the Planet. If that happens multiple times, the Community Working Group can be asked to consider what needs to happen to get your blog aggregated again.

If you are unsure or have queries about what is appropriate contact the KDE Community Working Group.

Blogs should be KDE themed

The majority of content in your blog should be about KDE and your work on KDE. Blog posts about personal subjects are also encouraged since Planet KDE Português is a chance to learn more about the developers behind KDE PIM. However blog feeds should not be entirely personal, if in doubt set up a tag for Planet KDE Português and subscribe the feed from that tag so you can control what gets posted.

Posts should be constructive

Posts can be positive and promote KDE, they can be constructive and lay out issues which need to be addressed, but blog feeds should not contain useless, destructive and negative material. Constructive criticism is welcome and the occasional rant is understandable, but a feed where every post is critical and negative is unsuitable. This helps to keep KDE overall a happy project.

You must be a KDE contributor

Only have your blog on Planet KDE Português if you actively contribute to KDE, for example through code, user support, documentation etc.

It must be a personal blog

Planet KDE Português is a collection of blogs from KDE contributors. It is not indended for project news feeds.

Do not inflame

KDE covers a wide variety of people and cultures. Profanities, prejudice, lewd comments and content likely to offend are to be avoided. Do not make personal attacks or attacks against other projects on your blog.

For further guidance on good practice see the KDE Code of Conduct.

People Aggregated

FeedRSSLast fetchedNext fetched after
Aracele Torres (araceletorres) XML 06:08, Thursday, 23 February 06:38, Thursday, 23 February
Filipe Saraiva (filipesaraiva) XML 06:08, Thursday, 23 February 06:38, Thursday, 23 February
KDE Lovelace (#kde-lovelace) XML 06:08, Thursday, 23 February 06:38, Thursday, 23 February
Aracele Torres (araceletorres) XML 06:08, Thursday, 23 February 06:38, Thursday, 23 February
Francisco Fernandes (chicao) XML 06:08, Thursday, 23 February 06:38, Thursday, 23 February
Filipe Saraiva (filipesaraiva) XML 06:08, Thursday, 23 February 06:38, Thursday, 23 February
Camila Ayres (camilasan) XML 06:08, Thursday, 23 February 06:38, Thursday, 23 February
Wagner Reck (wiglot) XML 06:08, Thursday, 23 February 06:38, Thursday, 23 February
Amanda (amandacsi) XML 06:08, Thursday, 23 February 06:38, Thursday, 23 February
Daniel O. Nascimento (don) XML 06:08, Thursday, 23 February 06:38, Thursday, 23 February
Lamarque Souza (lamarque ou lvsouza) XML 06:08, Thursday, 23 February 06:38, Thursday, 23 February
Felipe Ribeiro (lombra) XML 06:08, Thursday, 23 February 06:38, Thursday, 23 February
Tulio Magno (tuliom) XML 06:08, Thursday, 23 February 06:38, Thursday, 23 February
Sandro Andrade (sandroandrade) XML 06:08, Thursday, 23 February 06:38, Thursday, 23 February
Tomaz Canabrava (Tumaix) XML 06:08, Thursday, 23 February 06:38, Thursday, 23 February
Lucas Lira Gomes XML 06:08, Thursday, 23 February 06:38, Thursday, 23 February
Qt Labs Blog Brasil XML 06:08, Thursday, 23 February 06:38, Thursday, 23 February

Microblogging from KDE

February 19, 2012

Filipe Saraiva (filipesaraiva)

KDE Brasil nas redes sociais

 

Ontem tirei a tarde para fazer algumas tarefas pendentes nas redes sociais em que o KDE Brasil está presente.

Algumas destas tarefas foram mais estéticas, como tratar o escudo da logo oficial do KDE Brasil (a imagem acima) para utilizá-la nos logos de nossos perfis no twitter e identi.ca e nas páginas dos grupos no identi.ca e no Facebook.

Outra tarefa já mais voltada para conteúdo foi criar linkar o feed do Planet KDE Português para o identi.ca. Esta funcionalidade já estava presente no twitter e Facebook via dlvrt.it, mas ela não funcionava no identi.ca.

Recentemente o pessoal do status.net, que é o software do identi.ca, implementou a funcionalidade de espelhamento de feeds RSS nos perfis. Infelizmente, esta funcionalidade ainda está muito aquém do esperado. Vários modelos de feeds não são reconhecidos, inclusive o xml do Planet KDE Português.

Após tentar várias alternativas de redirecionador de feeds, tive que apelar para usar o FeedBurner e criar um feed que, aí sim funcionou no identi.ca. Essa saída deve ser encarada apenas como paliativa: assim que o pessoal do identi.ca melhorar o suporte ao espelhamento de feeds, usaremos esta saída. Aí então, iremos parar de usar o dlvr.it e usaremos a ponte identi.ca -> twitter, para alimentarmos a conta do KDE Brasil dessa última rede.

Então, finalizando o post, vamos listar os endereços do KDE Brasil nestas redes:

Identi.ca: http://identi.ca/kdebrasil

Grupo identi.ca: http://identi.ca/group/kdebrasil

Twitter: http://twitter.com/kdebrasil

Facebook: http://www.facebook.com/pages/KDE-Brasil/269280159750390

18:05, Sunday, 19 February UTC

February 06, 2012

Filipe Saraiva (filipesaraiva)

Google Summer of Code 2012

Alguns dias atrás o time de promoção open-source da Google divulgou o início do Google Summer of Code 2012, projeto onde a empresa patrocina estudantes de todos os países do mundo (exceto os que sofrem embargo dos EUA) para desenvolverem softwares livres nas diversas comunidades elegidas pelo projeto.

O projeto ainda está na etapa de seleção das comunidades. A submissão de projetos de estudantes começará no dia 26 de março até o dia 6 de abril, com resultado no dia 23 de abril. Ou seja, você tem tempo para ir se familiarizando com alguns softwares e suas tecnologias. Recomendo procurar as páginas de softwares que participaram de outras edições do Google Summer of Code para ver algumas ideias que foram propostas.

Eu participei da edição de 2011 e foi uma experiência extremamente gratificante. Trabalhei em um projeto do Scilab para desenvolver um software do KDE que foi lançado recentemente, agora em janeiro. A experiência de trabalhar em grupo em um time internacional é muito interessante. Terminando com sucesso, essa participação serve como um diferencial e tanto no seu currículo. Conheço alguns brasileiros que também participaram da edição 2011 e agora estão de malas prontas para trabalhar em empresas do exterior, incluindo o Facebook e o próprio Google.

Sem contar que é uma felicidade desenvolver software livre e receber 5.000 dólares para isso. :)

Maiores informações nos links neste post -> http://google-opensource.blogspot.com/2012/02/google-summer-of-code-2012-is-on.html

Você pode ver mais detalhes sobre minha experiência no Google Summer of Code nos posts da tag GSoC ou em gsoc2011-scilab-backend

16:47, Monday, 06 February UTC

February 05, 2012

February 01, 2012

Filipe Saraiva (filipesaraiva)

KDE 4.8 Release Party em São Carlos – Como foi?

Houve em São Carlos, no dia 27 de janeiro, o Release Party do KDE 4.8 – o segundo a acontecer na cidade.

Foi momento de reunir amigos, tomar umas, conversar sobre coisas do KDE, da vida, do universo, e tudo mais, e claro, tomar mais outras. Dessa vez eu tive tempo de instalar a nova versão do KDE no Mageia (obrigado mikala!) para permitir que quem não havia conhecido a nova versão, pudesse fazer um test drive.

A chuva atrapalhou um pouco, mas compareceram quatro bravos camaradas para celebrar o trabalho de todo ecossistema de software livre que permeia e circunda o KDE.

Da esquerda pra direita: Daniel, Rodrigo, Vitor e Filipe

Para mim o lançamento do KDE 4.8 é ainda mais especial pois é a primeira vez que tenho uma grande contribuição de software sendo distribuída junto com o projeto. Trata-se do backend para Scilab no Cantor, resultado do meu ano de trabalho no Google Summer of Code de 2011, que finalmente chegou ao computador de vocês, KDErs.

Mas isso é assunto para um próximo post. ;)

00:55, Wednesday, 01 February UTC

January 26, 2012

Filipe Saraiva (filipesaraiva)

KDE 4.8 no Caldeirão

Magos, feiticeiros, bruxos, xamãs, pajés e demais criaturas místicas usuárias de KDE e Linux já podem comemorar: a nova versão do KDE 4.8 está disponível nos repositórios da versão de testes (Cauldron) do Mageia! :D

                                          

Agradecemos ao trabalho do John Balcaen (mikala), principal empacotador do KDE na distro. Aos que utilizam o Cauldron, convidamos a instalarem a nova versão do KDE para trabalharmos em possíveis bugs que porventura venham a aparecer. Segundo o roadmap, KDE 4.8 estará disponível na próxima versão estável da distribuição, Mageia 2, a ser lançada em 3 de maio. Vamos trabalhar para entregar à comunidade um ambiente desktop o mais estável possível.

Mikala escreveu um interessante post sobre questões técnicas referentes ao KDE no Mageia. A leitura é recomendada aos interessados.

15:45, Thursday, 26 January UTC

January 25, 2012

Filipe Saraiva (filipesaraiva)

KDE 4.8 Release Party em São Carlos

Para os amigos e amigas fãs de software livre, em especial os usuários do KDE: logo mais teremos o lançamento da versão 4.8 do nosso ambiente desktop favorito! <update> mal terminei de escrever e saiu a nova versão! Confira o release note </update>

Junto com o lançamento, a comunidade KDE promove festas para reunir usuários, desenvolvedores, tradutores, ativistas, curiosos e demais pessoas com interesse em software livre para comemorar a nova versão do software, mostrando para o pessoal que trabalha no projeto que pessoas ao redor do mundo apreciam bastante seu esforço no desenvolvimento do nosso amado ambiente desktop. :)

Já temos vários grupos se organizando para realizarem suas festas ao redor do mundo, inclusive com vários grupos aqui no Brasil já com suas festinhas marcadas. Como ocorreu no lançamento do KDE 4.7, faremos em São Carlos um release party para convidar o pessoal que gosta de software livre da cidade a se juntar para tomarmos umas cervejas e discutirmos KDE, software livre, cibercultura, a vida, o universo e tudo mais – ou seja, você não precisa ter qualquer ligação com o KDE para participar.

Vamos para as informações fundamentais:

  • Data: 27 de janeiro (essa sexta!)
  • Horário: 20:00h
  • Local: Estação Trem Bão, Av. São Carlos próximo à rodoviária [link]

Pegaremos uma mesa no Trem Bão, e pode fique a vontade para se chegar. Cada um paga o que consumir.

Se você quiser, pode adicionar seu nome na wiki do KDE dizendo que estará presente (precisa fazer cadastro). Qualquer dúvida, me enviem um e-mail para filipe@kde.org, ou mandem tweet ou dent para @filipesaraiva.

Para finalizar, se os packagers do KDE no Mageia conseguirem empacotá-lo a tempo, instalarei no meu notebook e teremos uma singela apresentação da nova versão na release party.

Espero vê-l@s lá;

PS.: para os amigos de Teresina, terá um release party no Ateliê do Cheff. Saiba mais.

16:34, Wednesday, 25 January UTC

January 21, 2012

Lamarque Souza (lamarque ou lvsouza)

Pouco tempo muito trabalho…

Essas últimas semanas as coisas estão bem corridas no trabalho, pouco tempo para outras coisas, inclusive blogar. Como vocês já sabem meu trabalho tem muito a ver com o Plasma Active (site em inglês), a versão 2 dele foi lançada mês passado e estamos trabalhando em novas funcionalidades para a versão 3. Várias propostas de funcionalidades a implementar ou aperfeiçoar estão circulando na lista de discussões do Plasma Active. Na verdade há mais coisas para fazer do que desenvolvedores para implementá-las, então se você é desenvolvedor e está interessado em desenvolver algo para tablets e para o Plasma Active escolha um ítem para implementar.

O Plasma NM está bem parado essas semanas, eu tenho só resolvido alguns poucos bugs, aplicando alguns patches que chegaram até mim (eu fico muito feliz quando isso acontece então continuem enviando patches) e mudando o Plasma NM para usar a API assíncrona do DBus o máximo possível para evitar que as chamadas atrapalhem a fluidez do plasma desktop ou até paralisar o desktop inteiro por alguns segundos,algo relacionado como bug #287002. Esta última parte está pela metade e não sei quando vou poder terminá-la. De qualquer forma essa mudança irá só para o master, ela é bem grande e invasiva, algo que não deve ir para uma versão considerada estável como a do branch nm09.

As mudanças de usabilidade estão paradas também por falta de tempo. Realmente eu estou precisando de ajuda para tocar o Plasma NM pra frente, então se você tem interesse em melhorar o Plasma NM me contate que eu ajudo nos primeiros passos.

00:21, Saturday, 21 January UTC

December 30, 2011

Lamarque Souza (lamarque ou lvsouza)

Link

Aqueles que usam o branch master do Plasma NM já notaram que comecei enviar as mudanças de usabilidade na interface. Por enquanto as mudanças são bem parecidas com as que anunciei no meu primeiro post sobre elas:

O vídeo pode ser visto no Youtube.

Ainda há mais mudanças para fazer, por exexmplo: 1. Aumentar a altura de cada ítem na lista de conexões (talvez duas linhas por ítem) para deixá-los fáceis de serem pressionados em telas sensíveis ao toque; 2. Adicionar um ítem “Conectar a outra rede” para permitir criar novas conexões ao invés de usar o kcm; 3. Mover o ítem “<hidden network>” para o ítem “Conectar a outra rede”; Encontrar um novo lugar para o checkbox “Habilitar Rede”; 5. Encontrar uma forma de alinhar corretamente os elementos gráficos do plasmoid, QML parece tão mais fácil neste ponto :-/

Eu salvei todos os comentários que recebi sobre a interface do plasmoid. Eu só não tive tempo de avaliar todas elas, então sejam pacientes.

21:42, Friday, 30 December UTC

December 24, 2011

Lamarque Souza (lamarque ou lvsouza)

Feliz Natal

Esses dias eu tenho trabalhado mais com o Plasma Active (PA) do que com o Plasma NM. O trabalho no PA está indo bem, essa semana foi mais tranquila já que muita gente está de férias, inclusive boa parte da equipe do PA. Resolvi corrigir o máximo possível de bugs e a semana foi proveitosa, vários bugs corrigidos ou quase totalmente corrigidos.

No Plasma NM as coisas andam meio paradas, o que tem o seu lado bom, o número de bugs reportados está bem parado também. Ou eu estou fazendo um bom trabalho em corrigir os bugs ou o pessoal está desistindo de usá-lo, espero que seja a primeira alternativa hehe. As correções dos problemas reportados pelo Krazy2 terminaram, tem uma lista grande de problemas ainda mas que não tem solução simples e como não consigo fazer o Krazy2 ignorá-los eles vão ficar por lá mesmo.

Semana que vem todo mundo da basysKom está de férias (inclusive eu :-) ), então eu devo me dedicar mais ao Plasma NM antes de voltar ao trabalho no início de janeiro.

Amanhã é noite de Natal então Feliz Natal a todos.

01:51, Saturday, 24 December UTC

December 16, 2011

Qt Labs Blog Brasil

Qt 4.8.0!


Ontém foi feito o anúncio da versão 4.8.0!

Destaques dessa nova versão de Qt:

  • Qt Platform Abstraction (QPA)

    QPA é o nome dado à reestruturação feita no módulo QtGui de modo a tornar mais fácil a tarefa de “portar” Qt para diferentes sistemas de janela e dispositivos. Um artigo em Português será publicado aqui em breve, fique ligado!

  • Threaded OpenGL

    Permite aos não OpenGL-ninjas renderizar OpenGL em mais de uma thread concomitantemente. Para mais informações (em Inglês): Threaded OpenGL in 4.8.

  • Multithreaded HTTP

    Requisições HTTP agora são, por padrão, manipuladas em uma thread. separada. Principal benefício é a redução do impacto nas interfaces gráficas pois a parte de rede não estará mais no event loop principal.

  • Otimizações no acesso a sistemas de arquivo

    A pilha de sistemas de arquivo recebeu grandes modificações, resultando em melhorias em operações de Leitura/Escrita. A melhora de desempenho pode ser vista em todas as plataformas.

Outro ponto importante é que Qt 4.8.0 contém a versão 2.2.1 de QtWebKit. Mais detalhes dessa versão nesse post  (em Inglês).

E como parte do processo já tratado aqui no Qt Labs Brasil, a documentação está integrada com a Qt Developer network.

Downloads

Tanto código quanto pacotes binários estão disponíveis na página de downloads. Para aqueles que possuem git clone do repositório, essa versão está identificada pela tag ”v4.8.0″.

21:10, Friday, 16 December UTC

December 11, 2011

Lamarque Souza (lamarque ou lvsouza)

Novo trabalho

Desde o dia 14 de novembro eu estou trabalhando para a basysKom, uma empresa da Alemanha muito ligada ao KDE. Finalmente um emprego onde posso trabalhar com o KDE :-)

O projeto em que estou trabalhando na basysKom é o Contour, que faz parte do Plasma Active. Um dos trabalhos que estou desenvolvendo é um substituto à caixa de diálogo de saída do KDE. A intenção é implementar uma caixa de diálogo mais fácil de ser usada em sistemas sensíveis ao toque, caso do Plasma Active. O resultado atual é esse:

O fato de ter somente três grandes botões é intencional, quanto menos botões menos problemas para usar :-) E botões grandes são mais fáceis de serem pressionados. A implementação está no branch ksmserver/qml-shutdowndlg do repositório git://anongit.kde.org/kde-workspace e foi feita parte em C++ e parte em QML. Este projeto está sendo um bom aprendizado de QML pra mim. Talvez no futuro (não próximo) eu possa usar o que aprendi no Plasma NM.

Para essa versão mais simples da caixa de diálogo não tive muitos problemas para implementar. Já para a versão  que irá substituir a caixa de diálogo atual eu tive bastante trabalho para implementar todas as suas funcionalidades e aparência, principalmente a parte de menu de contexto, que é fácil de fazer quando se tem um número estático de elementos, o que não é o meu caso. Outro problema ainda não resolvido e a parede de uso do teclado. Pelo que entendi QML é voltado para dispositivos sensíveis ao toque, onde não existe teclado. Por causa disso a implementação atual não usa tab order (usar a tecla TAB para selecionar o botão), pressionar ENTER não aciona o botão padrão e não é possível utilizar aceleradores (o subescrito que aparece em um label e que é usado para acionar o widget associado àquele label quando se pressionar a tela ALT + “letra do label).

Este final de semana terminei de implementar a maior parte das funcionalidades:

oxygen

Funciona inclusive com outros temas do Plasma:

Air

Androbit

Elegance

E aqui os dois menu de botões (veja o pequeno triângulo nos dois últimos botões):

 

QML shutdown dialog

Essas modificações talvez apareçam no KDE SC 4.8 (já é tarde para enviar novas funcionalidades, mas ainda há esperança). Para quem quiser testá-las pode fazê-lo inclusive no KDE SC 4.7, mas terá que compilar o plasmacomponents do kde-runtime master, o que não é difícil:

 

git clone git://anongit.kde.org/kde-runtime

mkdir kde-runtime/build

cd kde-runtime/build

cmake -DCMAKE_INSTALL_PREFIX=..

cd plasma/declarativeimports

make && make install

Depois disso é compilar o branch mencionado acima:

git clone git://anongit.kde.org/kde-workspace

cd kde-workspace

git checkout ksmserver/qml-shutdowndlg

mkdir build

cd build

cmake -DCMAKE_INSTALL_PREFIX=/usr ..

cd ksmserver

make && make install

21:53, Sunday, 11 December UTC

December 09, 2011

Lamarque Souza (lamarque ou lvsouza)

O que anda acontecendo no Plasma NM

Olás, desde meu último post algumas coisas aconteceram no Plasma NM:

Para quem não sabe a QtNetworkManager e QtModemManager são bindings para o NetworkManager 0.9 e ModemManager 0.5. Eles são usados no Plasma NM da versão master (versão de desenvolvimento). A mudança de nomes foi sugerida pelos outros desenvolvedores do KDE que queriam nomes mais descritivos.
Além da mudança de nomes eu também corrigi vários probleminhas nas duas bibliotecas detectados pelo Krazy2 (analisador estático de código do KDE). Essas últimas semanas eu tenho (lentamente) corrigido problemas detectados pelo Krazy2 no Plasma NM também. Ainda tem bastante coisa para resolver, mas isso é um passo necessário para melhorar o código fonte do Plasma NM.
As mudanças de usabilidade estão paradas porque recebi algumas críticas em relação a elas. Mas do jeito que as coisas andam eu acho que vou mesmo é enviar as mudanças que já fiz e de lá ir melhorando aos poucos. Esses últimos dois meses tenho trabalho sozinho no Plasma NM e comecei um novo emprego (mais sobre isso no próximo post), por isso as coisas estão andando devagar.

23:42, Friday, 09 December UTC

November 25, 2011

Filipe Saraiva (filipesaraiva)

Anunciados novos cursos online da Universidade de Stanford

Repetindo a experiência que começou a ser realizada há poucos meses, a Universidade de Stanford disponibilizará, de forma gratuita, a partir de janeiro de 2012, mais cursos online.

As novidades deste período é que há muito mais cursos, inclusive alguns que não são de computação – na primeira experiência, Stanford disponibilizou cursos de inteligência artificial, aprendizado de máquina e banco de dados.

Os cursos divulgados até o momento são:

A lista de cursos começou a se diversificar com a inclusão de um curso de saúde. Ainda não temos certeza se estes são todos os cursos ou se ainda serão anunciados outros, mas estaremos atentos.

Pelo jeito eles colheram um feedback muito positivo com as primeiras três disciplinas apresentadas no projeto anterior.

E aí, está pensando em tentar alguma?

22:56, Friday, 25 November UTC

November 16, 2011

Filipe Saraiva (filipesaraiva)

KDE-Edu no Latinoware

DSC01050Palestra sobre KDE-Edu na Latinoware

Entre os dias 19 e 21 de outubro de 2011, comemoramos os 15 anos do KDE na VIII Conferência Latino-Americana de Software Livre – a Latinoware! Um evento já tradicional na cena da comunidade brasileira, acontece todo ano no centro de convenções da usina de Itaipu, em Foz do Iguaçu, bem na tríplice fronteira Argentina-Brasil-Paraguai.

Durante o evento apresentei a palestra KDE-Edu: a visão KDE dos softwares educacionais, onde apresentei os diversos softwares educativos do KDE para um público prioritariamente formado por trabalhadores da educação e desenvolvedores interessados no tema, além de mostrar como aqueles que tem vontade de contribuir podem participar do projeto KDE-Edu.

DSC01045Palestra sobre KDE-Edu na Latinoware: Demonstração de Softwares

O resultado foi muito positivo, com muita participação dos presentes através de colocações, perguntas, etc. Também achei legal a proximidade com o grupo Software Livre Educacional. Frisei que precisamos ter uma maior interação público dos softwares educativos + professores que usam software educativo + desenvolvedores de softwares educativos. Alguns desenvolvedores brasileiros do KDE-Edu se inscreveram na lista do Software Livre Educacional – vamos ver o que os próximos anos nos reservam em termos de projetos e atividades em conjunto. :)

DSC01030Stand do KDE

Além desta atividade, o KDE contou com um stand com venda de material de divulgação – cuja renda é revestida para o projeto – e várias palestras sobre outros aspectos, como sua nova interface para ambientes móveis e a própria comemoração de aniversário do projeto, com direito a post no site do evento. A programação completa do que aconteceu pode ser vista aqui.

O evento foi muito legal, sinceramente foi um dos melhores eventos de software livre que já participei, bem organizado, com grande apoio e respeito aos participantes, palestrantes e comunidades. Poucos eventos de software livre dão, de fato, apoio àqueles que fazem o evento acontecer, que são as pessoas que desenvolvem software livre, que se doam para comunidades, que enfim, são as razões de existirem eventos nessa área. Ponto para o Latinoware!

Minha única reclamação é que o evento satélite do KDE aconteceu ao mesmo tempo que o de software livre educacional. :( Acabei tendo que ficar com o KDE e perdendo o de educação, que muito me interessa. Mas enfim, apenas algo pontual.

dsc01167

No mais, reencontrar os amigos da comunidade, fazer novos, e tomar aquela cervejinha com eles é sempre recompensador. Também aproveitei e fiz uma visita à Ciudad del Este e fiz uma troca mais do que necessária de computador – finalmente posso utilizar wireless agora! E ver os efeitos gráficos do KDE, que já existem há anos! :D

O próximo Latinoware já tem data definida – de 17 a 19 de outubro de 2012. Espero mais uma vez poder participar do evento.

Quem estiver interessado, aqui estão os slides que utilizei na minha palestra.

<Atualização>Comecei a utilizar um sistema para fazer embbed de apresentações, o Speaker Deck, que utiliza html5, permite download, seguir o palestrante, compartilhar, etc. Depois digam o que vocês acharam, feedbacks serão bem vindos. :) </Atualização>

00:00, Wednesday, 16 November UTC

November 11, 2011

Qt Labs Blog Brasil

Offline Storage em QML


Muitas aplicações precisam armazenar dados para que os mesmos estejam disponíveis após o término de sua execução. Além da opção de lidarmos diretamente com arquivos, o Qt provê diversas maneiras de guardar informações offline como por exemplo o QSettings caso se deseje armazenar apenas chaves e valores. Também é possível utilizar o módulo Qt SQL para lidar com dados estruturados de forma mais complexa. No entanto, essas abordagens exigem integração do código QML com o C++, o que as vezes não é desejável. Uma alternativa é utilizar a Offline Storage API (Armazenamento Offline) para não precisar sair do ambiente QML. Essa API provê uma interface SQL, que permite manipular bancos de dados relacionais (BDs), utilizando o SQLite como backend.

Detalhes sobre o offline storage pode ser encontrado na documentação oficial do Qt. Apesar de ser bem escrita, a documentação não nos dá um exemplo prático que ilustre o uso dessa API, portanto, decidí criar um que mostra as boas práticas do uso da mesma.

Lista de Contatos

Imagine que você tem uma lista de contatos para armazenar em sua aplicação. As informações necessárias para armazenar esses contatos são seus nomes, número de telefone e email. O primeiro passo é criar uma conexão com o banco de dados do offline storage,

// A função openDatabaseSync seguintes parametros
// 1 - Nome do banco de dados (BD)
// 2 - Versão do BD
// 3 - Descrição sobre o BD
// 4 - Estimativa de tamanho do BD
// Retorna um objeto do tipo Database
var db = openDatabaseSync("Contacts", "1.0", "Contact list database", 5*1024*1024);

Para manipular um banco de dados no Javascript uma conexão com o banco deve ser criada. A API de offline storage disponibilizada para o QML é assíncrona no que se refere a criação e execução de transações. As transações são criadas através do método transaction do objeto de conexão com o offline storage. Essa função segue o padrão de callbacks do Javascript para lidar com chamadas assíncronas. Assim que a transação está pronta para ser iniciada, ela chama uma função (o callback) passando o objeto que representa a transação como parâmetro. Com a referência do objeto da transação, as consultas e alterações no banco podem ser realizadas.

Para criar as tabelas é preciso abrir uma transação para executar o código SQL referente a sua criação. Isso pode ser feito da seguinte forma:

// Abrindo transação
db.transaction(function (tx) { // tx é um objeto do tipo transação
    tx.executeSql("CREATE TABLE IF NOT EXISTS Contacts ( \
        id INTEGER PRIMARY KEY AUTOINCREMENT, \
        name STRING, \
        phone STRING, \
        email STRING, \
        UNIQUE (name) ON CONFLICT REPLACE)");
});

Abstraíndo o Banco de Dados

Em minha experiência com o offline storage, recomendo que as funções que operam o BD deveriam ficar em um módulo (ou um conjunto de módulos) Javascript a parte. Nesses módulos, além da criação do esquema do banco de dados, recomendo definir funções de acesso aos dados que escondam o SQL da aplicação QML, ao criar funções que manipulem esses dados em formatos amigáveis ao QML:

// O callback é chamado quando o contato é inserido ou atualizado e o id gerado é passado como parâmetro da callback.
function insertOrUpdateContact(name, phone, email, callback) {
    db.transaction(function (tx) {
        // Note que o ID é auto gerado
        var resultSet = tx.executeSql("INSERT OR REPLACE INTO Contact(name, phone, email) VALUES (?, ?, ?)", [name, phone, email]);
        callback(resultSet.insertId); // Retorna o id gerado para o novo usuário como parâmetro da callback
    });
}

// Retorna a informação sobre um contato cujo id é passado como parâmetro
function getContactInfo(id, callback, errorCallback) {
    db.trasaction(function (tx) {
        var resultSet = tx.executeSql("SELECT * FROM Contacts WHERE id = ?", [id]);
        if (resultSet.rows.length > 0) {
            // A função resultSet.rows.item retorna um array JS com chaves
            // sendo o nome das colunas e os valores os dados das colunas
            callback(resultSet.rows.item(0));
        } else {
            errorCallback();
        }
    });
}

Isso nos permite utilizar as informações do BD no QML sem misturar QML com SQL diretamente:

import QtQuick 1.0
import "db.js" as DB

Column {
    property int contactId
    property string name
    property string email
    property string phone

    width: 300; height: 90

    onContactIdChanged: {
        // A variável DB referencia o módulo Javascript
        DB.getContactInfo(contactId, function (info) {
            name = info.name;
            email = info.email;
            phone = info.phone;
        });
    }

    Text { text: name; height: 30 }
    Text { text: email; height: 30 }
    Text { text: phone: height: 30 }
}

Migração entre esquemas

Suponha, que sua aplicação já está em uso, e agora você precisa suportar vários telefones para cada contato. Para fazer isso de maneira que o esquema do BD seja atualizado e os dados não sejam perdidos. Isso é importante, em ambientes onde você não tem acesso direto a maquina para executar backups ou algo do gênero, como por exemplo aplicativos publicados na Nokia Store. Para isso, a API de offline storage define uma maneira de executar migrações a partir do versionamento dos esquemas. O objeto do tipo database já provê um método (changeVersion) que nos ajuda a atualizar os metadados do banco e chamar a função responsável pela migração dos esquemas. Essa função será utilizada da seguinte forma:

// Versão vazia significa, pegar a versão mais atual
var db = openDatabaseSync("Contacts", "", "Contact list database", 5*1024*1024);

// Caso não exista a versão será uma string vazia
if (db.version == '') {
    db.changeVersion('','1.1', create_scheme_1_1);
} else if (db.version ==  '1.0') {
    db.changeVersion('1.0','1.1', migrate_scheme_1_0_to_1_1);
}

Isso nos permite identificar a versão atual e chamar o procedimento correto para tratar a criação ou migração do esquema, já passando a transação como parâmetro. Da seguinte forma:

function create_scheme_1_1(tx) {
    tx.executeSql("CREATE TABLE IF NOT EXISTS Contacts ( \
        id INTEGER PRIMARY KEY AUTOINCREMENT, \ // Criando chave primária automática
        name STRING, \
        email STRING, \
        UNIQUE (name) ON CONFLICT REPLACE)"); // Essa restrição impede que dois contatos tenham o mesmo nome

    tx.executeSql("CREATE TABLE IF NOT EXISTS ContactsPhones ( \
        contact_id INTEGER, \ // Criando chave primária automática
        phone STRING, \
        FOREIGN KEY (contact_id) REFERENCES Contacts(id))");
}

function migrate_scheme_1_0_to_1_1(tx) {
    // Cria tabela auxiliar para armazenar multiplos telefones por usuário
    tx.executeSql("CREATE TABLE IF NOT EXISTS ContactsPhones ( \
        contact_id INTEGER, \
        phone STRING, \
        FOREIGN KEY (contact_id) REFERENCES Contacts(id))");

    // Move os dados para a nova tabela
    tx.executeSql("INSERT INTO ContactsPhones (contact_id, phone) SELECT id, phone FROM Contacts");
}

É importante notar que não é possível remover colunas no SQLite, e que o desenvolvedor terá que tomar a decisão de conviver com uma coluna desenecessária ou criar uma nova tabela com as informação necessárias. No caso do último, é importante ter um pouco mais de conhecimento sobre SQL para fazer renomeação de tabelas e alteração de tabelas.

Por termos um esquema diferente, é importante atualizar as consultas realizadas. Daí a importancia de termos uma API como interface para abstraírmos o código das consultas do restante da aplicação, e termos que alterar as consultas apenas em alguns pontos.

18:14, Friday, 11 November UTC

November 05, 2011

Lamarque Souza (lamarque ou lvsouza)

Que tal ajudar o KDE em alguns clicks?

Algumas semanas atrás a Lydia Pintscher postou sobre uma promoção que um banco da Alemanha está fazendo. O Banco irá pagar 1000 euros para os mil primeiros associados que receberem o maior número de votos até o meio de novembro. O KDE e.V. está na posição 1003 hoje e perdendo posições, se nada mudar estaremos de fora :-( Se alguém aí ainda não votou por favor ajudem o KDE e.V., é só seguir as instruções no blog da Lydia ou para quem prefere as instruções em português faça o seguinte:

  1. Acesse [verein.ing-diba.de/…] e clique em “Stimme abgeben”.
  2. Preencha seu email e o código captcha, clicando em seguida em “absenden”.
  3. Você receberá um email para confirmar o voto – clique no primeiro link deste email.
  4. No website – clique em “Stimme abgeben”.

Você tem direito a 3 votos por conta de email.

21:58, Saturday, 05 November UTC

October 24, 2011

Aracele Torres (araceletorres)

Camisas comemorativas dos 15 anos de KDE

O KDE Brasil está vendendo camisetas com estampas comemorativas dos 15 anos do KDE. Se você gosta do KDE e deseja ter esse item de colecionador, entre em contato conosco para adquirir a sua camisa. O número de camisetas é limitado! Temos dois modelos de estampas,como vocês podem ver abaixo.

Estampa 1

 

Estampa 2

 

Costas das camisas

Para comprar uma camisa entre em contato através dos emails: araceletorres at gmail.com e sandroandrade at gmail.com. O preço de cada camiseta é de R$ 20,00 + o valor do frete. O dinheiro da venda vai para o KDE e.V., fundação sem fins lucrativos responsável pelo KDE.


23:34, Monday, 24 October UTC

Filipe Saraiva (filipesaraiva)

15 anos do KDE são celebrados na Latinoware

O texto abaixo foi escrito pelos jornalistas que cobriram o Latinoware e está disponível neste link. Segue o texto, na íntegra.

Na manhã desta sexta-feira, 21, um clima de nostalgia tomou conta da atmosfera da Latinoware 2011, durante a abertura do IV Fórum KDE – Brasil – Edição Latino-Americana. Os 15 anos recém-completados de atividades da segunda maior comunidade de software livre do mundo foram lembrados por Aracele Torres.

Na plateia, os velhos conhecidos do grupo puderam recordar de ações importantes desenvolvidas pelo grupo, encontros internacionais dos desenvolvedores e as melhorias alcançadas durante a trajetória do KDE, que atualmente conta com mais de 2 mil contribuidores de todo o mundo.

Aracele também levantou alguns dados interessantes que comprovam o sucesso do grupo, como a participação no Google Summer of Code – um importante programa destinado a apresentar o desenvolvimento de softwares livres a estudantes universitários. Em 2005, o KDE foi a segunda organização que mais obteve projetos aceitos (24), enquanto que ao todo, em 7 anos de participação, mais de 260 projetos já foram aceitos.

O panorama atual do KDE é dos mais animadores, já que o grupo recentemente inovou na criação do Plasma Active, uma interface criada para uso em netbooks. Mais recentemente, uma versão para tablets também foi produzida. No Brasil, o time de tradutores se destaca por ser um dos mais ativos da comunidade, responsável por manter 100% da interface do KDE 4.4 traduzida para o português.


12:43, Monday, 24 October UTC

October 21, 2011

Qt Labs Blog Brasil

Qt Project foi lançado!


Tradução do post de Lars Knoll em http://labs.qt.nokia.com/2011/10/21/the-qt-project-is-live/, Portanto, toda referência feita em primeira pessoa deve ser interpretada como um ponteiro para o autor do texto original.

Estou feliz em anunciar que o Qt Project oficialmente lançado hoje. A partir de hoje, o desenvolvimento de Qt será governado como um verdadeiro projeto open source.

Agora temos qt-project.org – um website que centralizará todo o desenvolvimento de Qt, provendo a mesma infra-estrutura e processos para todos que desejem contribuir com Qt.

Agora que estamos aqui, o que vem em seguida?

Se você está interessado em participar e tornar-se parte da comunidade Qt,  o primeiro lugar para olhar é o website qt-project.org. Essa página oferece uma visão geral de como começar e como você pode tornar-se parte da comunidade e contribuir com Qt.

Se você já trabalha com Qt, provavelmente já possui uma conta no Jira, nossa ferramenta de rastreamento de bugs. Essa conta é necessária para acessar o local onde todo o desenvolvimento acontece: codereview.qt-project.org.

Nosso servidor Gerrit em codereview.qt-project.org funcionará como o ponto central para onde os patches enviados, revisados e testados. Todos os que possuem conta Jira podem submeter patches para revisão como Contributor.

Patches podem ser revisados por qualquer um e finalmente aceitos ou rejeitados por Approvers e Maintainers. Você notará que nós já temos alguns não-Nokians como ApproversMaintainers. Eu gostaria de mencionar especialmente que Thiago, o mantenedor de QtCore (a biblioteca que todos utilizam), não está trabalhando para a Nokia. Esta é a mais tangível evidência do que a governaça aberta significa. Eu espero ver ainda mais não-Nokians tornando-se Approvers e Maintainers no futuro.

Para detalhes sobre como contribuir, por favor visite www.qt-project.org.

Por enquanto nós temos apenas algumas listas de e-mails disponíveis em lists.qt-project.org, mas espero que isso mude e que vejamos listas especializadas surgirem conforme avançamos. A lista mais importante é a de desenvolvimento geral development@qt-project.org. Observe que essa lista também é parte de announcement mailing list, portanto você automaticamente receberá tais e-mails.

Nós continuaremos a utilizar Jira para rastrear bugs e requisitos. A instalação corrente em bugreports.qt.nokia.com também será movida nas próximas semanas para o Qt Project.

Abertura real

Qt é um projeto open source real. Nós estamos convidando a todos para participarem e ajudarem a tornar Qt um produto cada vez melhor.

Todo o desenvolvimento acontecerá em um local central, com acesso aberto a todos ao mesmo tempo. Sem mais fluxos de código separados para “Nokians vs outros”, e sem mais atrasos! O que você vê é o que está de fato acontecendo. Discussões, decisões e roadmapping acontecerão todos na comunidade, pela comunidade e para a comunidade. Todos podem ser Contributor, e até mesmo Approver ou Maintainer se demonstrarem mérito suficiente.

Converse conosco sobre a governança aberta no Qt Developer Days

Apresentações sobre Qt Project e governança aberta acontecerão no Qt Developer Days, e também falarei a respeito em meu keynote. Se você vai ao evento, terá a oportunidade de aprender e participar das dicussões. Se você está considerando ir ao Dev Days, essa discussão é um dos vários bom motivos para decidir ir!

Conclusões e agradecimentos

Estou extremamente feliz em ver que essa mudança finalmente aconteceu. Gostaria de aproveitar a oportunidade para agradecer todos aqueles que ajudaram para concretizar isso. Há várias pessoas que contribuíram, mas algumas devem ser mencionadas: Thiago Macieira por ter conduzido os trabalhos iniciais a respeito da governança aberta, Marius Storm-Olsen por assumir muito desse trabalho, Cristy Hamley por cuidar das questões legais, e Olivia Puntanen por gerenciar o projeto. Obrigado a todos.

Estou muito ansioso para começar um novo capítulo no desenvolvimento de Qt, animado para trabalhar com todos vocês no sentido de tornar Qt um produto ainda melhor.

Nota da tradução: Os termos Contributor, Approver Maintainer – contribuidor, aprovador e mantenedor, respectivamente – foram mantidos em Inglês no corpo do texto apenas para fins didáticos a respeito da nova estrutura do projeto, uma vez que esses são os termos que os interessados encontrarão ao ler o site oficial do projeto.

14:18, Friday, 21 October UTC

October 17, 2011

Filipe Saraiva (filipesaraiva)

15 anos de KDE: O KDE e Eu

Minha história com o KDE se confunde com minha história com o Linux. A primeira vez que vi um computador com uma distribuição Linux instalada foi há não muito tempo. Em 2005, havia acabado de ingressar no curso de ciência da computação na UFPI, e no laboratório haviam máquinas com um sistema operacional baseado no Debian criado por estudantes do curso: o Kuia Linux. O ‘K’ já dizia tudo – era um sistema com KDE.

Fiquei impressionado em como aquele sistema era bonito, moderno, atraente… e como era diferente de tudo o que já havia visto.

O tempo foi passando e fui me familiarizando com o Linux, fui aprendendo, acertando e errando, como todo bom iniciante em qualquer área. No ano seguinte, 2006, compramos o primeiro computador para nossa casa. Adquirimos a máquina sem sistema operacional. Em casa, instalei o Kurumin, uma das queridas distros brasileiras, e que foi um verdadeiro marco para toda uma geração de usuários Linux. Tenho por ela um verdadeiro carinho.

Foi usando o Kurumin que percebi que, claro, o Linux era algo que me chamava a atenção, mas o grande responsável por esse sentimento em mim era o KDE.

O tempo foi passando, por um motivo ou outro ia mudando de distribuição, mas o KDE continuava lá, firme e forte. As vezes flertava com outros ambientes desktop, mas logo em seguida voltava para o KDE: só ele conseguia mexer comigo.

2009 foi o ano decisivo para que eu começasse a participar ativamente da comunidade KDE. Levamos o Sandro Andrade para dar uma palestra em Teresina sobre o Google Summer of Code e o KDE. Era um ano em que a comunidade brasileira estava se rearticulando, haviam muitos grupos surgindo no país e o número de desenvolvedores estava crescendo.

Foi aí que, timidamente, comecei a estudar as bibliotecas e o código de alguns softwares do KDE. Ainda muito perdido, tateando aqui e ali aquela massa enorme de informação sobre kdelibs, módulos, tecnologias relacionadas, Qt, e muito mais.

Com o passar do tempo fui me achegando aos softwares educativos, o KDEedu, com interesse especial pelos softwares matemáticos. Foi uma maravilha, porque na minha vida acadêmica na computação eu sempre lidei mais com a parte de otimização do que com engenharia de software.

Hoje, já passados alguns anos, tenho já algumas contribuições [1] [2] de código para o KDE. Estou na trilha para me tornar, cada vez mais, um bom desenvolvedor para a comunidade – e sei que ainda terei que comer muito feijão para isso. Viajo o Brasil fazendo palestras e apresentações sobre o KDE. Me relaciono com pessoas do mundo todo, que empregam seus conhecimentos e energias para construir uma excelente alternativa de ambiente computacional, que segue os princípios do software livre, e que por isso consegue tornar o slogan do movimento hacker californiano o mais real possível: computer to the people!

Então, só tenho mesmo a agradecer a esta vibrante comunidade por tudo o que vocês fazem. Ao Matthias Ettrich, pelo e-mail 15 anos atrás convidando desenvolvedores para fazerem parte do Kool Desktop Enviroment; à todos os programadores que responderam a este chamado, em qualquer tempo destes últimos 15 anos; aos sysadmins, que mantém a estrutura para os quase 3.000 desenvolvedores do KDE trabalharem e se comunicarem; aos designers, que tornam o KDE um ambientes belo e agradável; aos tradutores, que mantém o KDE disponível para mais de 65 idiomas; aos expansionistas, que estão levando o KDE para o BSD, Haiku, Windows, Mac, netbooks, celulares, tablets; ao pessoal não técnico, que fazem trabalhos fenomenais; e também aos empacotadores das diversas distros, que preparam aquele KDE com o qual milhões de usuários irão interagir e, talvez, nem se deem conta que o que eles estão mexendo ali é o KDE, e não “a distribuição Linux”. :-D

Feliz 15 anos, KDE! Sou muito feliz por fazer parte da família!

03:52, Monday, 17 October UTC

October 15, 2011

Aracele Torres (araceletorres)

KDE: há 15 anos uma experiência de liberdade

Há exatos 1111 anos nascia o KDE, fruto da vontade de um cientista da computação de construir um ambiente gráfico limpo e amigável para o Linux e do trabalho de uma equipe de visionários que acreditaram na possibilidade de realização dessa ideia. Hoje, o KDE se tornou bem mais que um ambiente desktop e a sigla carrega bem mais significados. O KDE deixou de ser apenas um ambiente desktop e passou a ser também um  conjunto de aplicativos para dispositivos móveis e uma plataforma para desenvolvimento! Ao longo desses quinze anos esta pequena sigla também passou a significar  uma grande comunidade, uma grande família que trabalha incansavelmente para oferecer aos usuários de software livre um ambiente de trabalho cada vez melhor.

Parabéns à todos os responsáveis por esses 15 anos de história, pela consolidação de um projeto livre e comunitário!

E que venham mais 1111 anos! Hehe ;-)


05:10, Saturday, 15 October UTC

October 14, 2011

Lamarque Souza (lamarque ou lvsouza)

15 anos de KDE

Eu me lembro da primeira vez que vi o site do KDE, eu era estudante de Ciência da Computação na UFMG (é Ciência, no singular, não Ciências). O ano era 1997 e o KDE não tinha nem um ano de idade, naquela época praticamente toda semana saía um snapshot do código fonte e eu ficava ansioso para compilá-lo e ver as novidades :-)

 

Muito tempo se passou, veio a versão 1.0, 2.0, 3.0, 4.0, a evolução entre essas versões é nítida, principalmente entre a 1.0 e a 2.0. Apesar de conhecer o KDE praticamente desde que foi criado foi só há pouco mais de dois anos que comecei a contribuir programando para o KDE e isso foi uma das melhores decisões que fiz. No FISL10 em 2009 eu conheci alguns membros da comunicade KDE-Brasil, da qual faço parte hoje, e desde então tenho conhecido muita gente que também tem essa mesma paixão que eu tenho pelo KDE. É ótimo conviver e até trabalhar com o pessoal da comunidade brasileira e estrangeira do KDE. Tenho vários amigos na comunidade, a gente se diverte ajudando o KDE e assim vamos vendo o nosso “garoto” crescendo, chegando a 15 anos de idade e com muitos mais por vir. Feliz aniversário KDE :-D

 

15:10, Friday, 14 October UTC

Camila Ayres (camilasan)

15 anos de KDE

Olá pessoas!

Eu sei que ando sumida, por motivos pessoais, mas o KDE tá sempre lá, na minha máquina.
Foi através dessa comunidade que eu conheci grandes amigos, daqui e do mundo inteiro…e o amor da minha vida.

Foi onde eu aprendi a abraçar quem eu nunca tinha visto antes, foi onde eu aprendi a falar em inglês, foi onde eu aprendi a programar e foi onde eu descobri muita gente elegante, bonita e sincera.

Parabéns KDE! E obrigada por tudo!

15 anos de KDE

 

 

 

 


13:42, Friday, 14 October UTC

October 10, 2011

Filipe Saraiva (filipesaraiva)

Cursos online de Stanford: Banco de Dados, Inteligência Artificial e Aprendizado de Máquina

A prestigiada Universidade de Stanford lançou na web uma interessante experiência: cursos online ministrados por renomados pesquisadores da área, com vasta experiência acadêmica e em inovação tecnológica, que também são parceiros de grandes empresas de tecnologia do mundo.

Neste momento serão ofertados 3 cursos: Banco de Dados, Inteligência Artificial e Aprendizado de Máquina. Pra você ter uma ideia da qualidade dos cursos, basta citar que o professor Peter Norvig, um dos autores do seminal livro Inteligência Artificial, que começou a dar um tratamento unificado à área através da utilização do conceito de Agentes, será um dos professores da disciplina de Inteligência Artificial.

As aulas começam hoje (10 de outubro de 2011), mas você ainda tem o dia de hoje para fazer a inscrição nos cursos que desejar.

Eu estou inscrito em Inteligência Artificial e Aprendizado de Máquina. Desde a semana passada o material da primeira semana de aula estava disponível. Este material é composto por videos produzidos pelos próprios professores, bem explicativos, que intercalam com alguns “quizes” sobre o assunto apresentado. Em ambos existem trabalhos que devem ser feitos ao fim de cada sessão.

Além dos trabalhos, existem exames que deverão ser realizados para lhe atribuir notas nas disciplinas.

Mas se você quiser, você pode escolher uma linha de participação básica nos cursos: você terá acesso a todo o material, mas não será obrigado a fazer provas. Quem escolher a linha avançada terá que executar as provas. Ao final do curso, todos os que terminarem ganharão um certificado dizendo que participaram das disciplinas – mas logicamente, quem fez a linha avançada terá essa informação adicionada ao documento. É possível mudar da linha avançada para a básica no decorrer do curso.

Então pessoal, aos interessados fica a dica. Se você também está fazendo as mesmas disciplinas que eu, deixe seu contato aqui para montarmos um grupo de estudos. :-)

11:12, Monday, 10 October UTC

October 08, 2011

Lamarque Souza (lamarque ou lvsouza)

Solid Sprint

Semana passada eu fui para Madri para o Solid Sprint 2011. Pra quem não sabe o Solid é a camada de abstração de hardware do KDE e Sprint é tipo uma reunião de desenvolvedores onde discutimos os problemas e, principalmente, corrigimos bugs e implementamos novas funcionalidades.

Este foi o meu segundo sprint, o primeiro foi também Madri ano passado. Naquela época eu era só mais uma pessoa que contribuía na parte de redes móveis (3G). Nesses últimos doze meses muita coisa mudou, eu comecei a corrigir bugs no Plasma NM, fui implementando novas funcionalidades e informalmente assumindo o papel de mantenedor. Bem, agora não é mais informal. Durante o Solid Sprint eu aceitei assumir formalmente o papel de mantenedor oficial da parte de gerenciamento de redes do KDE. Eu até tenho um e-mail lamarque (at) kde.org agora :-D

Durante o Sprint várias coisas foram discutidas na parte de gerenciamento de redes, também realizamos um experimento de usabilidade para melhorar a interface do Plasma NM. Pensamos em várias idéias. Mudar a interface gráfica de um programa realmente chama a atenção (leia os comentários no meu blog). Alguns dos comentários são bem úteis e me fizeram pensar em mudar novamente o protótipo de interface que criei durante o sprint.

Outra novidade do sprint na parte de gerenciamento de redes é que a partir de agora eu vou liberar (release) versões do Plasma NM de forma regular. Hoje eu fiz o primeiro release  (versão 0.9.0_beta1) com boa parte dele traduzido para português. Agora é baixar e compilar :-)

Para quem quiser ler meus posts (em inglês) sobre o sprint pode acessar o meu blog. Use o sistema de tradução do blog para traduzí-lo para português.

 

01:00, Saturday, 08 October UTC

October 07, 2011

Qt Labs Blog Brasil

QML + RESTful Web Services


RESTful Web Services

Web Services é uma forma de comunicação entre dispositivos através da uma rede. Existem diversos padrões de comunicação que utilizam várias tecnologias e outros padrões já existentes na Web para fazer tal comunicação entre processos. Atualmente uma dos padrões mais populares é o Representational State Transfer (REST) que, em linhas gerais, define que a comunicação utiliza o HTTP como transporte das chamadas remotas, uma convenção sobre as URIs, além de não preservar estado entre as transações/requisições. Existe uma infinidade de Web Services que utilizam essa padronização para disponibilizar dados e serviços tais como o Flickr, Facebook, Google Maps, Google+, IMDB, What’s for Dinner, Yahoo Weather entre diversos outros. A maioria das aplicações atuais utilizam esses e outros serviços como extensões da aplicação para que essas informações fiquem conectadas e seja mais fácil compartilhar e consumir dados. Efeitos da Web 2.0.

O conjunto de requisições, buscas, consultas e operações que podemos executar, definem a API REST do serviço web. Esses serviços disponibilizam alguma documentação sobre quais operações estão definidas e que tipos de dados devem ser utilizados. Em geral, essas transações utilizam XML ou Javascript Object Notation (ou JSON) para fazer representar os dados a serem transmitidos.

JSON

O JSON nada mais é do que uma forma de representar informações semi estruturadas, podendo ser aplicado como substituto do XML em qualquer aplicação. A grande vantagem do JSON é consumir menos espaço, por ser menos verboso, que o XML além da maior facilidade de manipulá-lo já que se parecem com estruturas de várias linguagens além do próprio Javascript, como por exemplo Python e Ruby. Por isso é mais vantajoso onde há a necessidade de reduzir o tamanho da representação, como por exemplo na serialização de informações estruturadas em aplicações web. Além disso, muitas pessoas consideram o JSON mais legível que o XML. É exatamente nesse cenário que o JSON tem ganhado popularidade. É pouco conhecido, que o JavascriptCore – engine responsável por executar o Javascript presente no QML – já tem um parser e serializador de objetos JSON, tornando o seu uso ainda mais natural em aplicações QML.

AJAX

Outro recurso extensivamente utilizada nas páginas web modernas, é a comunicação assíncrona com o servidor através do Javascript. Essa técnica é popularmente chamada de Asynchronous Javascipt and XML (AJAX), que apesar de levar XML no nome continua sendo utilizada para descrever requisições assíncronas ao servidor mesmo não utilizando XML como camada de apresentação dos dados. A grande vantagem do AJAX é permitir que o browser execute outras atividades enquanto uma dada requisição é feita ao servidor, que toma preciosos milisegundos apenas esperando a resposta da requisição. O JavascriptCore implementa um tipo chamado XmlHttpRequest que é utilizado para fazer as requisições AJAX. Quando a resposta do servidor chega ao browser, uma função de callback é chamada (setada através da propriedade onreadystatechange de um objeto XmlHttpRequest) e executa a rotina que vai lidar com a resposta do servidor. Uma callback é uma função que será chamada quando uma dada ação ocorrer. Na web você pode encontrar várias implementações de referência de chamadas AJAX além de abstrações de diversos frameworks Javascript. No nosso caso vamos criar nossa própria abstração utilizando apenas o XmlHttpRequest. A função getHttpJson receberá uma URL do recurso a ser requisitado (através do método GET do HTTP) e uma callback a ser executada quando houver uma resposta:

function getHttpJson(request_url, callback)
{
    // Criação do XmlHttpRequest para realizar a requisição AJAX
    var request = new XMLHttpRequest();

    // O seguintes parâmetros recebem respectivamente:
    // 1 - Método HTTP a ser realizado
    // 2 - URL requisitada
    // 3 - Define se a chamada será executada assíncronamente
    request.open("GET", request_url, true);

    // Callback da requsição AJAX
    request.onreadystatechange = function () {
        // A callback 'onreadystatechange' sempre é chamado a qualquer atualização do status da requisição
        // O valor 4 do readyState simboliza que a requisição foi fializada
        // O status simboliza o status retornado no cabeçalho de resposta do HTTP, onde o valor 200 simboliza sucesso
        if (request.readyState == 4 && request.status == 200) {

            // O objeto JSON faz parte da imlementação JavascriptCore
            // O 'responseText' contém o conteúdo da resposta da requisição
            var json = JSON.parse(request.responseText);

            // Chamada à callback real que está sendo encapsulado pelo getHttpJson
            callback(json);
        }
    }

    // Caso exista alguma informação a ser enviada no corpo da requisição HTTP, ela deve ir como parâmetro do send
    request.send();
}

Essa abstração nos permite passar uma URL e uma callback, que nos retornará um objeto do tipo Array do Javascript (com as informações do JSON) como parâmetro dessa callback. É importante ressaltar que para o caso básico de acesso de recursos essa função é suficiente, porém pode será necessário incrementar o código acima para poder lidar com requisições mais complexas, que por exemplo, chame uma outra callback caso a requisição falhe ou ainda utilizar os demais métodos do HTTP na API RESTful.

QML + !!

O famoso site de tirinhas XKCD por exemplo, oferece uma API web RESTful para ler as tirinhas publicadas no site. Essa API é muito simples se comparada a outras APIs mas já nos permite fazer um leitor de tirinhas. Na especificação, a url http://xkcd.com/303/info.0.json nos permite retornar informações sobre a tirinha com id “303″. Dessa forma podemos fazer um wrapper mais elegante para nossa aplicação. Como exempl, considere a seguinte função, que abstrai qual esquema de construção da URL está sendo utilizada e se foca apenas nos parametros necessários (o numero da tirinha) e a callback que vai lidar com a resposta:

function getXkcdComic(num, callback) {
    getHttpJson("http://xkcd.com/" + num + "/info.0.json", callback);
}

Se formos inspecionar o objeto JSON retornado pela chamada podemos fazer da seguinte forma:

getXkcdComic(303, function(json) {
    var responseText = JSON.stringify(json); // Reserializando para Json para fins de demontração
    console.debug(responseText); // Imprimindo resposta no console de debug
});

obteremos a seguinte linha impressa no console de debug:

{"img": "http://imgs.xkcd.com/comics/woodpecker.png", "title": "Woodpecker", "month": "7", "num": 614, "link": "", "year": "2009", "news": "", "safe_title": "Woodpecker", "transcript": "[[A man with a beret and a woman are standing on a boardwalk, leaning on a handrail.]]\nMan: A woodpecker!\n<<Pop pop pop>>\nWoman: Yup.\n\n[[The woodpecker is banging its head against a tree.]]\nWoman: He hatched about this time last year.\n<<Pop pop pop pop>>\n\n[[The woman walks away.  The man is still standing at the handrail.]]\n\nMan: ... woodpecker?\nMan: It's your birthday!\n\nMan: Did you know?\n\nMan: Did... did nobody tell you?\n\n[[The man stands, looking.]]\n\n[[The man walks away.]]\n\n[[There is a tree.]]\n\n[[The man approaches the tree with a present in a box, tied up with ribbon.]]\n\n[[The man sets the present down at the base of the tree and looks up.]]\n\n[[The man walks away.]]\n\n[[The present is sitting at the bottom of the tree.]]\n\n[[The woodpecker looks down at the present.]]\n\n[[The woodpecker sits on the present.]]\n\n[[The woodpecker pulls on the ribbon tying the present closed.]]\n\n((full width panel))\n[[The woodpecker is flying, with an electric drill dangling from its feet, held by the cord.]]\n\n{{Title text: If you don't have an extension cord I can get that too.  Because we're friends!  Right?}}", "alt": "If you don't have an extension cord I can get that too.  Because we're friends!  Right?", "day": "24"}

que por sua vez não é tão legível. Recomendo fortemente o uso de alguma ferramenta de visualização de objetos JSON tais como o Online JSON Viewer que ajudam a visualizar os dados e sua estrutura.

Com tais dados e funções utilitárias, fica fácil criar um leitor do XKCD que utiliza a API RESTful do XKCD. Recomendo agregar essas funções relativas a comunicação com o servidor em um arquivo Javascript separado para que a implementação fique distinta de seu uso no QML. Aqui vou chamar esse arquivo de “xkcd.js”. O seguinte código cria um leitor do XKCD bem simples e utiliza o “xkcd.js” com o alias XKCD, de modo que podemos chamar as funções definidas no arquivo Javascript através desse objeto.

import QtQuick 1.0
import "xkcd.js" as XKCD

Rectangle {
    id: comicViewer

    property int num // Número da tirinha
    property url image // Imagem da tirinha
    property string title // Título da tirinha
    property string alt // Texto alternativo da tirinha (sarcasmo do XKCD)

    width: 300
    height: 300
    color: "white" 

    // Retorna as informações do servidor toda vez que o numero do quadrinho
    // é alterado
    onNumChanged: {
        XKCD.getXkcdComic(num, function (json) {
            comicViewer.image = json.img;
            comicViewer.title = json.title;
            comicViewer.alt = json.alt;
        });
    }

    // Troca o número da tirinha atual imediatamente após a incialização do
    // componente atual
    Component.onCompleted: comicViewer.num = 303;

    // Imagem da tirinha
    Image {
        id: comicImage
        anchors {
            fill: parent
            margins: 50
        }
        source: image
        fillMode: Image.PreserveAspectFit
        smooth: true
    }

    // Mostra o título sobre a tirinha
    Text {
        anchors {
            horizontalCenter: comicImage.horizontalCenter
            bottom: comicImage.top
        }
        text: title
        font.pixelSize: 30
    }

    // Mostra o texto alternativo abaixo da tirinha
    Text {
        anchors {
            top: comicImage.bottom
            bottom: parent.bottom
            left: parent.left
            right: parent.right
        }
        text: alt
        horizontalAlignment: Text.AlignHCenter
        wrapMode: Text.WordWrap
    }

    // Área esquerda da tela quando clicada vai para a tirinha anterior
    MouseArea {
        anchors {
            left: parent.left
            right: parent.horizontalCenter
            top: parent.top
            bottom: parent.bottom
        }
        onClicked: num -= 1;
    }

    // Área direita da tela quando clicada vai para a próxima tirinha
    MouseArea {
        anchors {
            right: parent.right
            left: parent.horizontalCenter
            top: parent.top
            bottom: parent.bottom
        }
        onClicked: num += 1;
    }
}

Para testar esse exemplo, basta salvá-lo como, por exemplo “xkcd.qml” e abrí-lo com qmlviewer ou carregar em uma QDeclarativeView..

Visualizador de tirinhas XKCD feito em QML

Visualizador de tirinhas do XKCD feito em QML

 

 

21:18, Friday, 07 October UTC

Filipe Saraiva (filipesaraiva)

Google Prêmios

 

Pronto, agora acabou o ciclo do Google Summer of Code deste ano. Chegaram hoje em meu apartamento a camisa e o certificado de que terminei com sucesso o projeto de início do backend do Scilab no Cantor, meu trabalho no GSoC.

Também saiu hoje um post na página do Scilab com um relatório final das atividades dos estudantes que trabalharam em projetos relacionados ao Scilab, como é o meu caso. Lá tem um rápido resumo do que fiz e alguns links importantes.

Ainda estou devendo o post com o estado atual do backend que criei. Prometo-o para logo. :-D

02:00, Friday, 07 October UTC

October 04, 2011

Aracele Torres (araceletorres)

Ensinando as próximas Adas – junte-se ao KDE para os cursos do Ada Lovelace Day

07 de outubro é o Ada Lovelace Day, um dia onde as pessoas escrevem sobre as mulheres que influenciaram em sua carreira de ciência, tecnologia, engenharia ou matemática. O KDE quer comemorar esse dia um pouco diferente este ano. Vamos ajudar as próximas gerações de Adas a encontrar o seu caminho no KDE e Qt. Nós faremos isso com um tutorial day para as mulheres e seus amigos (as mulheres são o foco principal do evento, mas todos os outros são bem-vindos). Os tutoriais serão dados pelos excelentes Myriam Schweingruber e Dario Freddi. Não esqueça de se inscrever.

- Como ajudar com relatórios de bugs (5PM UTC)

A codificação num projeto de Software Livre é uma parte muito importante, mas nem de longe é a única. Um dos campos possíveis onde não-programadores podem se envolver é triagem bug. Este curso dará uma visão geral sobre a triagem de bugs e testes. Após o curso o participante deverá ser capaz de escolher o seu aplicativo preferido e começar a ajudar na triagem de bugs. Myriam vai falar sobre todos os detalhes de se tornar um bugmaster desde a escolha do projeto certo  para descobrir o que está faltando em um relatório de bug. Esta é provavelmente uma das mais importantes habilidades que você pode trazer para o KDE agora.

- Construindo o seu próprio lançador (3PM UTC)

Neste curso, você criará um lançador de aplicativos básicos para o KDE. Sim, um lançador plenamente desenvolvido, então você pode se divertir transformando-o em um “menu iniciar” real com suas novas habilidades. Ao fazer isso, Dario vai te ensinar o básico do KDE, Qt e QML, que irá capacitá-lo para criar seu primeiro brilhante aplicativo.

Requisitos:

- Conhecimento básico de C ++, principalmente sintax-wise
- Conhecimento iniciante de Qt de preferência, mas isso não é um exigência
- Uma instalação Linux + KDE
- Um ambiente de desenvolvimento do KDE (Mostrar no início do canal se você não tiver configurado ainda nós podemos fazer isso juntos.)
- KDevelop 4.2 + (de preferência) ou Qt Creator, ou uma IDE de sua escolha :)

Você vai aprender sobre:

- Uso básico do CMake para a compilação de seu projeto
- Paradigmas básicos do Qt
- Algumas das API’s básicas do KDE, como KService, KIO, Solid
- Programação básica QML
- O paradigma Model/View e como usá-lo com o Qt / KDE
- Interação entre QML e C ++

Os cursos serão no canal #kde-tutorials no freenode. (Você pode usar o webchat se você não tiver um cliente IRC.)  Cada curso terá a duração de aproximadamente uma hora e inclui uma parte de perguntas e respostas.

Participe e espalhe isso para os seus amigos. :)
Inscreva-se para participar dos cursos!

Link para o post original em inglês.


21:22, Tuesday, 04 October UTC

October 01, 2011

Filipe Saraiva (filipesaraiva)

Desktop Summit – Em meio a códigos e culturas

Entre os dias 6 e 12 de agosto (sim, este post está alguns meses atrasado), participei do 2º Desktop Summit – o encontro mundial unificado das comunidades de desenvolvedores KDE e Gnome. O evento aconteceu em Berlim, Alemanha, na Humboldt University, que tem em seus quadros mais de 29 prêmios Nobel e por onde passaram grandes nomes da intelectualidade ocidental nas mais diversas áreas: de Marx a Einstein, de Hegel a Planck, de Otto von Bismarck a Stiner. Um lugar inspirador.

Após quase um dia de viagem, cruzar o Atlântico, fazer uma escala em Amsterdã e enfrentar a imigração na Holanda e Alemanha (sim, fui parado nos dois aeroportos; e em Berlim ainda fizeram uma revista onde tiraram todas as minhas roupas da mala :-( ), cheguei à Berlim já ansioso para o que iria encontrar, tanto na cidade quanto no encontro.

O KDE e.V. me alocou num quarto que ganhou o apelido interno de BRIC – tinha eu, brasileiro; um amigo chinês e um amigo russo, o Nikita; faltou apenas um indiano para completar o bloco :-D . Havia também um amigo dos países nórdicos por lá.

Essa foi com certeza a parte mais legal do Desktop Summit – encontrar pessoas tão diferentes, de culturas tão distintas, mas que compartilham o mesmo objetivo de construir bons softwares de código aberto para quem quiser usar, aprender ou contribuir de volta, gerando mais código e mais funcionalidades.

Auditório Principal do Desktop Summit

Então, posso dizer que foi muito bom conhecer pessoas como nosso amigo indiano Siddarth (galera da Índia em peso no evento, nas duas comunidades: parabéns!), Nikita, o pessoal da Itália (maldito álcool) e muitos outros! Também foi legal rever amigos brasileiros, os que estão na terrinha (temos que viajar pra Alemanha para nos vermos galera? Hehehe) e também conhecer brasileiros que moram no exterior já a alguns anos e que são destaque em seus trabalhos, como o Thiago Macieira e a Sulamita Garcia.

Em termos de software, aproveitei os momentos disponibilizados para continuar hackeando o Cantor e implementar as funcionalidades que naquele momento faltavam ao backend do Scilab, meu projeto no GSoC – que por sinal, terminei com sucesso e estou devendo um post descrevendo como ficou. Espero termos o backend para o Scilab já disponível no próximo lançamento major do KDE.

Hacker Room

Entre uma sessão e outra do encontro, também aproveitamos para visitar a cidade e conhecer um pouco da sua história e cultura. Apreciamos a arquitetura da cidade (que mistura prédios clássicos com arquitetura moderna e contemporânea; muito louco), seus museus e seus locais históricos.

Muro de Berlim

Sony Center

Agora vamos a alguns tópicos com minhas impressões sobre o evento e Berlim:

  • Adorei Berlim! :-D
  • O sistema de transporte públicos de Berlim impressiona. Metrô, bondinhos, trens e ônibus pela cidade, além da mesma ser bike-friendly. Fenomenal!
  • Comida saborosa e um preço bem acessível – delícia.
  • Ah, a cerveja alemã…
  • Nunca imaginei o quanto seria difícil usar cartão de crédito (internacional, diga-se!) em Berlim. Praticamente nenhum lugar aceita.
  • O nível técnico do encontro foi muito impressionante. Muito bom um encontro com tantos bons desenvolvedores assim.
  • Atividades culturais divertidíssima, com nerds jogando bola, cantando karaokê e dançando música eletrônica. :-D
  • Triste por não ter ganhado o tablet da Intel. :-(
  • Ainda mais triste por ter ido a um pub da cidade assistir o Brasil perder pra Alemanha no futebol. :’(

Finalizando, essa viagem foi muito boa tanto culturalmente, com a possibilidade de conhecer uma das grandes cidades europeias e conhecer pessoas de várias partes do mundo, quanto em termos técnicos de desenvolvimento de software livre. Espero rever os amigos que fiz por lá e espero fazer mais viagens dessas!

Enquanto isso, continuamos escrevendo códigos de software e, brincando com uma frase de Chico Science, “com o Brasil embaixo dos pés e a mente na imensidão”.

Daker brincando com reflexos

Desktop Summit group photo

20:40, Saturday, 01 October UTC

September 04, 2011

Lucas Lira Gomes

[GSoC] Missão Cumprida

Olá pessoal. Desculpem-me por não postar sobre o projeto por tanto tempo. Contudo, durante esse período eu estive mudando e discutindo coisas relacionadas ao código fonte do projeto e à interface do usuário. Ademais, foram feitas várias otimizações e correções de bugs. E para alegria de todos, eu gostaria de anunciar que as funcionalidades do gpodder.net foram integradas com sucesso no Amarok.


Funcionalidades adicionadas:
  • Sincronização das inscrições de podcast.
  • Sincronização dos status de podcasts.
  • Lista com os podcasts sugeridos pelo gpodder.net.
  • Lista com os podcasts mais populares do gpodder.net.

As dificuldades:

  • De fato, estudei muito sobre QT. Contudo, sempre haverá erros inerentes ao uso do QT devido a ausência de conhecimentos específicos.
  • Ocorreram vários bugs e suas origens foram difíceis de serem detectadas. (Challenge accepted \o/).

O futuro:

  • Receber o feedback dos usuários para que a integração com o gpodder.net seja cada vez mais aperfeiçoada.
  • Manter-se informado sobre a evolução do mygpo e do libmygpo-qt, para que novas funcionalidades possam ser incorporadas, se possível, ao Amarok.
  • Continuar contribuindo com o Amarok. Corrigindo bugs e adicionanado novas funcionalidades.

Como pode ser observado, os objetivos da minha proposta foram satisfeitos e eu estou feliz por dar minha contribuição ao KDE. Eu estive literalmente "experiencing freedom" por tantos anos sem desempenhar nenhum papel ativo no ecossistema do KDE. A despeito disso, a coisa mais valiosa que eu aprendi foi que desenvolvimento de software não se trata apenas de "fazer" código. Assim, como um apoiador da causa livre eu já tinha pensado sobre isso, mas há coisas que você so entende depois de passar por elas.

Por fim, devo dizer que esta foi uma experiência  que carregarei por toda minha vida. E portanto, continuarei contribuindo com o Amarok, desenvolvendo ainda mais minhas habilidades tanto de
 hacking quanto de programador e cidadão voltado para as questões sociais. Ademais, pretendo continuar desenvolvendo códigos de qualidade para todos (É o que eu espero ^^).

Agradecimentos:


Gostaria de agradecer ao google pelo apoio as comunidades livres e open, ao pessoal do KDE pelo maravilhoso ambiente gráfico, as equipes do mygpo e do libmygpo-qt pelas coisas relacionadas ao gpodder. E gostaria de fazer um agradecimento especial para o meu mentor, Bart Cerneels, pela paciência durantes esses três últimos meses de apoio.

22:13, Sunday, 04 September UTC

Older blog entries