22 de março de 2010

Alinhando uma coluna à direita numa QTreeView

Essa semana eu quebrei muito a cabeça com o componente QTreeView do QT4, foram vários problemas, ainda bem que consegui solucionar todos. Um desses problemas eu vou detalhar nesse post e também mostrarei a sua solução.

Eu queria uma TreeView com duas colunas, simples, sem hierarquias. Mas eu necessitava que a 2ª coluna tivesse um tamanho fixo e a 1ª coluna preenchesse todo o espaço restante da TreeView. O problema é que a QTreeView possui exatamente o comportamento contrário, nela as primeiras colunas possuem tamanhos fixos e a última preenche todo o espaço restante. É possível fazer com que todas as colunas tenham tamanhos fixos, mas não existe nenhuma maneira simples de definir qual coluna eu quero que preencha todo o espaço vazio. O que fazer?

Como meu widget era uma classe que herdava de QTreeView eu resolvi meu problema redefinindo o método resizeEvent. Esse método é chamado toda vez que o widget é redimensionado. O que eu precisava fazer era apenas redimensionar as minhas colunas sempre que o widget todo fosse redimensionado. A 2ª coluna ficaria com um tamanho fixo e a 1ª coluna ficaria com o restante do tamanho da TreeView menos o tamanho da 2ª coluna.

O método ficou assim:

def resizeEvent(self, event):
last_column_size = 25
self.setColumnWidth(0, self.width() - last_column_size)
self.setColumnWidth(1, last_column_size)

Simples, fácil e funcionou muito bem.

Se alguém souber outra maneira, principalmente se for mais fácil, sinta-se a vontade para comentar.

18 de março de 2010

Google vs Facebook

Semana passada, pela segunda vez, o Facebook ultrapassou o Google em número de acessos nos EUA segundo a consultoria Hitwise. Esse foi mais uma amostra da grande popularidade da maior rede social do planeta.


As redes sociais usam um filtro tão bom quanto poderosos algoritmos de busca. Sabe que filtro é esse? Os seus contatos, o que eles postam tem grande relevância para quem os acompanha. As pessoas estão usando cada vez mais as redes sociais como fonte de informações.

Isso tudo é um problema para o Google. A gigante das buscas vai perdendo território para um serviço de uma área que ela até hoje não conseguiu deslanchar, as redes sociais. O Orkut é muito popular no Brasil, mas no resto do mundo ele é praticamente irrelevante. E o Buzz? Por enquanto para mim ele apenas repete o conteúdo de outras redes sociais que eu continuo acompanhando normalmente.

A briga entre as duas empresas esquentou com os boatos do Projeto Titan, o Gmail Killer do Facebook. O Titan seria a reformulação do sistema de mensagens do Facebook que incluiria os recursos de um cliente de e-mail, inclusive seria possível enviar mensagens para seu_usuario@facebook.com. Com uma base de mais de 400 milhões de usuários, o Facebook entraria como um concorrente fortíssimo do Gmail.

Será que teremos algum contra-ataque do Google caso o Titan seja realmente lançado? O Buzz parecia ser esse contra-ataque, mas até agora ele não agradou muito. É possível também que o Google apresente melhorias no Gmail em breve, a equipe do Google revelou na SXSW que eles estão trabalhando em otimizações para o aumento da velocidade, na integração do GMail com contas do Google Apps e também na melhoria do gerenciamento de contatos.

8 de março de 2010

Por que uma pós-graduação?

Várias pessoas após terminarem a graduação optam por continuar na academia estudando os mais variados tipos de assuntos para resolver os mais variados tipos de problemas. Na minha opinião existem dois motivos para fazer esse tipo de escolha.

O primeiro é a inércia, você já está dentro de uma instituição e após concluir o curso sente que é natural seguir lá. Provavelmente você ganhará mais dinheiro, pois agora você é uma pesquisador graduado, deixando você mais confortável. Esse motivo é péssimo, se acomodar e fazer algo sem nem saber se era aquilo mesmo que você queria fazer. Pessoas acomodadas tendem a fazer um trabalho muito ruim.

O segundo motivo é mais óbvio, as pessoas escolhem fazer uma pós-graduação pois realmente desejam fazer pesquisas científicas, aprender mais e resolver problemas. Esse motivo é muito melhor, fazer algo querendo fazer não tem comparação. Sabe quando você trabalha horas e não nota o tempo passar? Você estava fazendo o que gosta.

Muitas vezes eu achei que fazer um mestrado seria uma escolha apenas por inércia, puro comodismo, mas hoje eu tenho certeza que minha escolha foi feita exatamente pelo 2º motivo. Eu queria, e ainda quero, estudar o que eu estudo e desenvolver soluções para os problemas que eu conheço dentro da minha área.

O que eu estudo?

Eu poderia responder essa pergunta com várias linhas. Eu poderia dizer que estudo engenharia de software com um foco em desenvolvimento distribuído de software. Poderia dizer que eu estudo a interação dos desenvolvedores num projeto de software através de meios de comunicação que proporcionam eles trabalharem em lugares totalmente distintos. Entretanto eu resolvi responder isso de uma forma mais simples. Olhando lá de cima, num altíssimo nível eu posso dizer que eu estudo colaboração.

Colaboração tem a ver com unir pessoas para realizar um trabalho muito melhor do que elas fariam separadamente. Não importam as barreiras existentes entre essas pessoas, o objetivo é quebrá-las e fazer com que elas não importem ou que pelos menos não afetem tanto o processo de colaboração.

Isso tem futuro? Eu realmente acredito que sim, se não o que eu estaria fazendo se nem eu acreditasse no meu trabalho? Isso não é uma questão de fé, existem razões concretas para que a colaboração seja um assunto quente a ser estudado. O ponto chave é a Internet. A Internet liga pessoas, não importa onde elas estejam, e trabalhar em grupo é algo feito pelos seres humanos desde os primórdios. Agora que as barreiras começaram a cair temos mais chances de unir as pessoas, mais oportunidades de formar equipes antes inimagináveis e mais problemas para gerenciar todo mundo. As possibilidades são incríveis.

Estudar colaboração? Sim, isso me parece uma boa idéia.

3 de março de 2010

Regra dos terços

"Centraliza bem pra foto ficar bonita." Quem nunca ouviu isso ou alguma frase parecida quando alguém estava tirando uma foto? A maioria das pessoas costuma pensar que essa é a melhor maneira de se obter uma boa foto, mas o senso comum erra. Na fotografia existe uma técnica chamada regra dos terços, que ajuda o fotógrafo a posicionar os elementos mais importantes de uma foto num lugar de destaque para quem estiver vendo a foto. Não, essa regra não tem nada a ver com centralização, muito pelo contrário.

Qual é a foto mais bonita, (a) ou (b)?

(a)

(b)


Grande parte das pessoas responde letra (b).

As áreas de interesse não têm nada a ver com o centro, elas estão fora dele. Para descobrir os pontos de destaque divida a imagem em 9 quadrantes iguais desenhando linhas como no jogo-da-velha. As intersecções das linhas formam quatro pontos, que também são os vértices do quadrado central, as regiões próximas a esses pontos são as áreas mais interessantes para colocar elementos importantes da sua fotografia. Veja as imagens para entender melhor.


Grid da regra dos terços


Imagem com e sem o grid


Você pode estar estranhando o assunto desse post, eu nunca falei de fotografia por aqui e para falar a verdade eu não sei se levo muito jeito para tirar fotos. Toda essa introdução a regra dos terços foi feita para mostrar uma outra aplicação sua, a criação de slides para uma apresentação.

As regras são as mesmas e você pode levar tudo que eu disse sobre fotografia diretamente para o seu aplicativo de criação de slides. Quer destacar alguma coisa? Lembre-se da regra dos terços. Assim como as fotos ficam visualmente mais agradáveis, os seus slides também ficarão.

No Powerpoint, o aplicativo que eu costumo usar para fazer os meus slides, existe uma forma de configurar os grids para que eles funcionem como as linhas da regra dos terços. Veja esse tutorial de como criar o grid da regra dos terços no Powerpoint.

Para finalizar, um slide de uma apresentação minha que será realizada na III Semana da Computação na UFPB, para mostrar a utilização da regra dos terços.




As fotos usadas nesse post foram tiradas dos sites:

23 de fevereiro de 2010

Seus dados estão menos seguros nas nuvens?

Existem várias questões que são sempre levantadas quando alguém começa a falar sobre computação nas nuvens. Entre elas temos questões de privacidade, pois vamos deixar nossos dados nas mãos de empresas, e questões de segurança, novamente por deixar os dados sob responsabilidade de terceiros existe um receio de que eles sejam perdidos ou que alguém invada os servidores onde os dados estão armazenados e faça mal uso deles.

A maioria das pessoas costumam pensar que isso não aconteceria se os dados estivessem no seu computador pessoal. Parece que existe uma certa confiança em saber que os seus dados estão num dispositivo que se você quiser você pode pegá-lo com as próprias mãos. O HD é concreto e físico, já a nuvem é abstrata e invisível.

Esse medo de deixar os dados em servidores espalhados pelo mundo realmente faz sentido? Será que os dados nos nossos computadores não correm os mesmos riscos que os dados nas nuvens? Será que nós tomamos as mesmas medidas de segurança que os servidores de grandes empresas que armazenam dados de milhares ou milhões de pessoas?

Nosso computador pessoal não tem a mesma visibilidade que os servidores do Google, mas ele também pode ser invadido pela Internet ou ainda pode simplesmente apresentar um defeito no HD e os os dados serem perdidos para sempre. Se pensarmos bem os riscos são parecidos.

A grande diferença são as medidas de prevenção para que algum problema com os dados armazenados não causem tantas perdas. Por exemplo, estratégias de backup. Eu conheço muita gente que tem computadores pessoais que simplesmente não fazem backup dos seus dados. O perigo é grande, qualquer descuido e adeus arquivos. Num servidor especializado em armazenamento de arquivos isso é menos provável de acontecer, pois fazer backup é uma medida de segurança básica. Outro exemplo é a criptografia de dados. Quantas pessoas guardam seus dados pessoais criptografados no seu computador? Serviços especializados costumam usar com bem mais frequência a criptografia de dados. É verdade que as vezes vemos listas de senhas sendo publicadas por hackers que invadiram um servidor que guardava as senhas em texto plano, mas isso aí é incompetência de quem criou a aplicação para guardar esses dados.

Uma solução interessante que pode agradar muita gente é prover a possibilidade de copiar os arquivos das nuvens para um dispositivo de armazenamento local. É muito bom ter meus vídeos no Youtube para que eu possa acessá-los onde eu estiver e para que eu possa compartilhar com meus amigos, mas eu também posso querer ter todos eles no meu HD externo, uma cópia local, pessoal e que funciona offline. É uma questão de sincronização com as nuvens.

19 de fevereiro de 2010

Morte às notificações

Eu sou uma pessoa que gosta de trabalhar com o minímo de distrações possíveis. Eu procuro sempre ter um ambiente calmo e o menos complicado possível para poder me concentrar e fazer o que eu necessito.

Quanto menos distrações melhor. Nada de GMail, Twitter, Orkut e Msn abertos toda hora. Eu simplesmente não conseguiria manter um nível de concentração aceitável para trabalhar se eu estivesse sempre acompanhando todas as mensagens que chegam para mim em todos esses canais de comunicação.

É comum algumas pessoas terem a necessidade de consumir muita informação toda hora, eu mesmo me sinto assim as vezes. Essas pessoas adoram notificações, alertas de tipos variados que mostram que existe algo novo numa de suas inboxes. Dessa forma elas não vão perder nada e vão sempre ser uma das primeiras a saber dos acontecimentos. Isso é demais! Na era da informação temos que agir dessa forma!

Não.

Você não precisa checar a cada 10 minutos seu e-mail, Twitter, Facebook, Orkut, o que seja. Deve ser impossível se concentrar o suficiente para produzir algo bom se você a cada 10 minutos alterna entre todas as suas inboxes para permanecer atualizado.

Algo que ajuda a racionalizar a não necessidade de checar todos os seus canais de comunicação várias vezes por hora é que quando alguém te envia um e-mail ou um reply no Twitter ou scrap no Orkut ele raramente espera que você responda no mesmo minuto. Se você responder uma hora depois ainda vai ficar tudo ok e em muitos casos você pode responder várias horas depois que não vai importar. As chances de alguém que necessita uma resposta imediata sua te enviar um e-mail, tweet, etc. é tão pequena que não vale a pena checar suas inboxes a cada 10 minutos. Você vai sacrificar a sua produtividade por algo irrelevante.

Se tem algo que atrapalha a minha concentração e que me atrai para o lado negro da força de checar inboxes a toda hora são as notificações de novas mensagens. Aqueles balõeszinhos e contadores avisando que algo foi atualizado me distraem totalmente e me levam a parar o meu trabalho atual para checar alguma inbox.

Por isso eu tomo duas decisões para qualquer aplicação que possua algum tipo de contador ou notificação. A primeira é desativar as notificações. Se eu quero ver o que tem de novo eu vou abrir a aplicação, eu não preciso que ela me diga em tempo real tudo que chega, eu não vivo para consumir informações dela a toda hora. A segunda é fechar tudo que possa ter algum tipo de informação que algo novo chegou para mim, por exemplo, a aba do GMail que mostra quantas mensagens novas eu tenho na inbox. Se aparece um "1" ali meu mouse é atraído magicamente para aba, então, eu preciso fechá-la para que ela não me distraia. Depois, quando eu terminar o que eu estava fazendo eu posso abrir o GMail e responder todos os e-mails necessários.

Mantenha-se focado. Se concentre no seu trabalho atual e depois cheque seu e-mail e suas redes sociais. Consumir informações é importante, mas é ainda mais importante produzir seu próprio trabalho.

5 de fevereiro de 2010

Reformulação do TextFlow

Faz algum tempo que eu não escrevo nada sobre o TextFlow aqui no blog. O que aconteceu? Ele está abandonado? Não, muito pelo contrário. Eu vou contar um pouco dos problemas que enfrentamos e o que resolvemos fazer.

Há uns meses atrás nós estávamos reorganizando o código do editor, deixando tudo mais claro para os programadores. A reorganização também seria sentida pelos usuários, muitos bugs estavam sendo corrigidos e muitos outros sendo encontrados.

Entretanto o trabalho de refatoração começou a ficar muito custoso, existiam poucos testes automatizados e realizar grandes alterações no código era uma atividade quase insana. Não estávamos dando conta de mudar sem introduzir novos bugs. Com o tempo a bola de neve crescia, corrigíamos um bug, refatorávamos algo e no final novos bugs apareciam.

Nós pensamos em reescrever grandes partes do código, como o navegador de arquivos ou o gerenciador de documentos. Seria mais fácil começar de novo do que consertar algumas partes. Uma organização começou a surgir, o TF estava ficando mais simples e mais claro para os desenvolvedores. Entretanto muito trabalho ainda precisava ser feito e novos bugs não paravam de aparecer.

Admito que a inexperiência de um estudante que na época mal tinha entrado na universidade afetou bastante as bases do editor, mas tudo que eu aprendi e tudo que eu vi acontecer fizeram essa iniciativa valer muito a pena. Eu recomendo a todos ter um side-project ou colaborar com algum software livre.

Manter o TextFlow tinha se tornado uma tarefa dolorosa. Não estávamos incluindo mais nada, só consertando e o resultado final não agradava. Algo diferente precisava ser feito. Nós paramos para pensar e discutir o que fazer.

A decisão tomada foi muito difícil, eu evitei levantar essa possibilidade inúmeras vezes quando via os problemas enfrentados, mas não teve jeito. Nós começamos a reescrever o TextFlow do ZERO.

Eu não recomendo isso a ninguém, mesmo que você não tenha mais nenhuma saída pense bastante antes de reescrever um software. Raramente é uma boa decisão.

Nós resolvemos assumir o risco para conseguir desenvolver um software muito melhor, o TextFlow 2, sem esquecer as principais características do editor, minimalismo, customização e "sexyness". Atualmente estamos terminando a 1ª iteração. Se quiser acompanhar mais de perto o projeto veja página do TextFlow no github.

Vocês serão avisados quando a primeira versão do TF2 estiver disponível para download no site do projeto ou em repositórios de suas distribuições. Eu continuarei postando sobre o TextFlow para que vocês acompanhem o andamento do desenvolvimento e o que esperar desse novo software.