Resumo do 1º Encontro de Usuários Python de Sergipe

Resumo do 1º Encontro de Usuários Python de SergipeNo último dia 30 de abril, aproveitamos a realização da quarta edição do World Plone Day em Aracaju para realizar o primeiro Encontro de Usuários Python de Sergipe. O evento aconteceu na Universidade Tiradentes e contou com a expressiva participação de cerca de 40 pessoas, que aproveitaram a oportunidade para conhecer um pouco mais sobre Plone e Python, além de entrar em contato com outros interessados na plataforma.

Inicialmente, apresentei uma rápida palestra institucional sobre o Python User Group de Sergipe (PUG-SE), explicando a motivação por trás do uso de Python e suas tecnologias, e a importância de ter um grupo de usuários local atuante.

Em seguida, foi a vez da palestra do World Plone Day, ministrada por Davi Lima. Foi apresentada uma visão geral sobre o CMS Plone e seu ecossistema: características, vantagens competitivas, oportunidades de mercado, comunidade, perspectivas e etc. Os participantes aproveitaram para tirar várias dúvidas sobre aplicações do Plone, casos indicados de uso da plataforma, entre outras.

A terceira palestra da noite foi sobre o uso do Git para controle de versões, apresentada por Onezino Gabriel Moreira. Conversamos sobre o funcionamento do workflow do Git, boas práticas para gerenciamento de repositórios por parte de equipes em diversos cenários de uso, comandos úteis, etc.

A palestra seguinte foi uma rápida Introdução ao Django, ministrada por Matheus Lima. O grupo demonstrou muito interesse e participou bastante, tanto que decidimos, de comum acordo, deixar a palestra sobre Criação de plugins para Sublime Text que seria apresentada em seguida para o próximo encontro.

Por fim, realizamos um sorteio dos brindes gentilmente cedidos por nossos patrocinadores PyCursos e Treinamentos.mobi. Além deles, gostaríamos de agradecer à Universidade Tiradentes pela total disponibilidade e apoio ao evento, inclusive incentivando os alunos interessados a participar.

logo-pycursos

logo-treinamentos.mobi

Em breve teremos mais uma edição do Encontro do PUG-SE! Para ficar por dentro, assine a nossa lista de discussão.

Links da semana – 16 a 22 de março

  1. Hovercraft — Biblioteca Python para gerar apresentações de slides em HTML e impress.js a partir de fontes em reStructured Text.
  2. Python.org Redesign Preview — Uma prévia de como está ficando o novo site oficial do Python.
  3. Future of Firefox DevTools — A equipe responsável pelas ferramentas de desenvolvedor do Firefox pediu sugestões sobre o que os desenvolvedores gostariam de ter e está atendendo os pedidos. Vem coisa interessante por aí (alguém falou em interação entre editores de texto e o Firefox? Em Python?).
  4. The true power of regular expressions — Boa leitura para quem quer compreender melhor como funciona a “mágica” das expressões regulares.
  5. Donald Knuth Interview 2006 — Praticamente um livro – 110 páginas, caso fosse impresso – mas vale a pena dar uma olhada em alguns trechos para entender como funciona uma das grandes mentes da história da Ciência da Computação.
  6. Sonda Voyager sai do Sistema Solar — Se já saiu mesmo ou ainda vai sair, não importa. O importante é que jogamos nosso brinquedinho longe pra caramba do berço.
  7. Ecad é condenado por formação de cartel — Já é um avanço…Links da semana - 16 a 22 de março
  8. This is a blog post about dinosaurs, Tesla, and a hotel in Colorado — Sou fã de Matthew Inman (The Oatmeal), talvez um dos melhores contadores de histórias na internet. Esse cartum, na verdade, é um prêmio que ele ofereceu para quem fizesse doação superior a 33 mil dólares para o Museu Tesla.
  9. Livro: Cinema Pirata — Terminei de ler essa semana. É uma história de ficção escrita por Cory Doctorow (BoingBoing), mas que na verdade acaba virando uma espécie de alerta sobre o quão absurdo poder ser o futuro próximo, no caso de legislações ditas defensoras dos direitos autorais serem aprovadas e postas em prática. Não vou dar spoiler, mas garanto que em vários momentos você vai pensar “Ei, isso já aconteceu/está acontecendo!”.

Pycon 2013

  1. Pycon Keynote: Python is Awesome by Raymond Hettinger — Ótima explicação das características que tornam Python… awesome :)
  2. Talks by PyCon 2013 — Slides das palestras no SpeakerDeck
  3. PyCon 2013 Slides — Slides das palestras que não puderam ser convertidos para PDF e colocados no SpeakerDeck
  4. Coverage of PyCon US 2013 — Vídeos das palestras da PyCon 2013

Python Nordeste 2013

E aí? Já fez sua inscrição na Python Nordeste 2013? Até Guido van Rossum, o BDFL do Python, tá dando moral pro evento! Primeiro lote de ingressos está saindo pelo preço promocional de apenas R$ 50 até o dia 30/03/2013.

Guia para os atalhos de teclado do Sublime Text

Guia para os atalhos de teclado do Sublime TextTodo mundo que usa o computador para trabalhar durante muitas horas por dia já deve ter notado que um dos segredos para ser mais produtivo é tirar as mãos do teclado o menos possível. Aprender a digitar direito, eliminando alguns vícios adquiridos ao longo dos anos, também ajuda bastante.

Quando falamos do Sublime Text, então, a importância de aprender a usar os atalhos de teclado, ao invés de perder tempo alcançando o mouse, fica ainda mais evidente. O Sublime Text tem atalhos de teclado para quase tudo mas, quando se está iniciando, às vezes é um pouco difícil descobri-los e memorizá-los. Para facilitar a tarefa, seguem algumas dicas:

Dedique alguns minutos para explorar os menus

Vasculhar os menus quando não se está procurando por nenhum comando específico é muito útil para descobrir novos recursos. Em muitos casos, os atalhos de teclado são mostrados ao lado de cada item. Algo que também costumo fazer quando quero aprender os atalhos de alguma ferramenta é me forçar a procurar pelo comando desejado no menu, usando o mouse – para me lembrar de quanto é inconveniente, e por isso tenho que aprender o atalho o quanto antes – ver qual é o atalho e depois fechar o menu e usar o teclado. Faço isso toda vez que preciso executar o comando, até memorizar.

Utilize a Command Palette

Após se familarizar com os menus, comece a usar a Command Palette (Ctrl+Shift+P) para tudo. Com ela você poderá ter acesso a quase todos os comandos sem precisar alcançar o mouse, mesmo se não lembrar o atalho. Ao chamar a Command Palette, aparecerá uma lista de seleção com o recurso de autocompletar. Depois é só começar a digitar algumas letras da descrição do comando até encontrá-lo e pressionar Enter. Lembrando que, em muitos casos, o atalho específico de cada comando também aparece na Command Palette.

Vasculhe os arquivos de configuração

Se ainda não achou o atalho que você queria, nem nos menus, nem na Command Palette, não se desespere. O pulo do gato nesse caso é “partir pra ignorância” e ir fuçar nos arquivos de configuração do Sublime Text:

  1. Clique no… (oops!) Ative a Command Palette e digite “keybindings default” para abrir o arquivo de configuração de atalhos padrão para seu sistema operacional. Lá são definidos todos os atalhos de teclado padrão.
  2. Procure por um trecho de alguma palavra que descreva o comando desejado. Como não existem descrições textuais de cada ação, pode não ser tão simples encontrar na primeira tentativa, mas se um atalho existe, ele estará lá.

Por exemplo, quando precisamos achar o atalho para duplicar uma linha, basta começar a procurar (Ctrl+F) no arquivo de configuração por “duplicate” e logo aparece a linha:

{ "keys": ["ctrl+shift+d"], "command": "duplicate_line" },

E eis aí nosso atalho: Ctrl+Shift+D.

E os atalhos para comandos dos plugins instalados?

Os comandos dos plugins muitas vezes não aparecem no menu nem na Command Palette. Descobri-los vai exigir um pouco do seu Sherlock Holmes interior, mas não é nenhum bicho de sete cabeças. Como todos os atalhos de teclados estão definidos em arquivos no formato JSON de fácil leitura, você vai precisar fazer o seguinte:

  1. Abrir a Command Palette.
  2. Digitar “Browse Packages”.
  3. Procurar e abrir a pasta com o nome do plugin cujo atalho para o comando você quer descobrir.
  4. Procurar e abrir o arquivo de configuração de atalhos, que possui a extensão sublime-keymap. Lá estão todos os atalhos do plugin, é só procurar pelo que você precisa.

Conhece alguma outra dica de atalho do Sublime Text? Compartilhe com a gente nos comentários.

Referência: dicas de Josh Earl, autor de Sublime Productivity

Links da semana – 9 a 15 de março

  1. Postgres: The Bits You Haven’t Found — Apresentação com dicas de recursos extremamente úteis para quem precisa trabalhar com banco de dados PostgreSQL.
  2. Django Projects — Django Best Practices — Reencontrei esse post essa semana. É sempre bom tê-lo por perto para relembrar as boas práticas na criação e manutenção de projetos Django.
  3. Links da semana - 9 a 15 de marçoComo perder peso (no browser) — Guia de desempenho no front-end. Muito material para ajudar descobrir porque seu site está lento e como resolver os principais problemas de performance.
  4. The Netflix Tech Blog: Python at Netflix — Mais um dos vários casos de sucesso de Python. O pessoal da Netflix explica com usa ferramentas baseadas na plataforma Python para manter um dos sites que consome mais largura de banda na internet.
  5. Editor Markdown – lab.lepture.com/editor — Editor markdown online. Simples, limpo e quebra um galho para quem não está habituado com a sintaxe.
  6. FindKeyConflicts — Plugin para Sublime Text que identifica conflitos de teclas de atalho entre os demais plugins instalados. Indispensável para os pluginmaníacos, porque quanto mais plugins instalados, maior a chance das teclas de atalho utilizadas por eles coincidirem.
  7. Global Firepower Military Ranks – 2013 — Curiosidade rápida sobre o poderio militar dos diversos países. Não li os critérios com calma, mas segundo esse ranking a Coreia do Norte não estaria com essa bola toda…
  8. Natural Language Processing with Python — Livro online gratuito sobre Processamento de Linguagem Natural usando Python.
  9. Coding Horror: A Visual Explanation of SQL Joins — Quem nunca se atrapalhou escrevendo uma query SQL que atire a primeira pedra :)
  10. I’ve Been Using Evernote All Wrong. Here’s Why It’s Actually Amazing — Esse artigo me chamou a atenção porque me identifiquei bastante com a parte de “nunca entendi o Evernote”.

Bonus Update:

Python Nordeste 2013 — Nos dias 24 e 25 de maio, em Fortaleza-CE, acontece a primeira edição da Python Nordeste, o grande encontro dos pythonistas na região Nordeste do Brasil. Dê uma olhada nos keynotes confirmados e diga se não vale a pena sair de qualquer lugar do país pra ver essas feras nesse evento arretado? As inscrições estão abertas! Corra lá!

O fim do Google Reader: alternativas e considerações

Ontem à noite quando, surgiu a notícia do fim do Google Reader, começaram a me perguntar se eu conhecia alternativas ao serviço. É claro que vários sites que vivem para isso já tinham publicado suas listas de substitutos, por isso não tive trabalho para responder.

Sobre considerações gerais sobre as motivações do Google, o Gizmodo Brasil também já soltou um post excelente, que ajudou a pensar melhor. Concordo com praticamente tudo, mas somente porque é como as coisas são, pelo jeito. Pode ser nostalgia de um tempo em que a internet era diferente, mas, para além de motivações corporativas do Google em reorganizar seu portifólio de produtos, não consigo me acostumar com a ideia do rumo que a internet está tomando.

Rage comic obrigatório para a ocasião

Rage comic obrigatório para a ocasião

Será que o fim do Reader, agregrador de feeds mais popular da história, não vai acabar arrastando o RSS para a cova também? Cada vez que um grande player da internet faz uma jogada que visa aumentar seus lucros, mas que também joga um caminhão de terra em cima de mais um protocolo ou padrão aberto, os princípios que fizeram a internet dar certo morrem um pouco junto.

Mas isso é só minha opinião, que fica melhor numa conversa de mesa de boteco. Vamos às alternativas!

Feedly

Eles já fizeram questão de dizer que estão totalmente prontos para nos receber, na nossa nova condição de viúvas do Reader. A interface é impressionante, tão impressionante que chega a confundir quem está habituado ao Google Reader, mas é uma questão de costume. Requer extensão para browser. Já voltei a usar e provavelmente vou ficar nele, pelo menos até a alternativa abaixo se recuperar do susto e estabilizar.

The Old Reader

Provavelmente tomaram o maior susto das suas vidas nessa madrugada. O site era quase um hobby, mas o pessoal vai ter que aprender a crescer na marra. O objetivo inicial era acomodar quem sentia falta da interface e das funcionalidades do Reader antigo, pré-Google+.

Netvibes

Jogador antigo, está na área há tanto tempo quanto o Reader. Cheguei a usar o Netvibes um bom tempo antes de conhecer o Reader, mas parei por motivos óbvios. Hoje a plataforma está bem diferente e pode ser uma opção para quem se identificar.

NewsBlur

Confesso que não conhecia até ontem. Tentei acessá-lo novamente agora há pouco e apareceu uma página com aviso de manutenção mas, pelo que vi, também tem uma interface bem bacana. Vale uma pesquisada depois.


Essa são algumas opções mais semelhantes ao Reader. Existe ainda uma inifinidade de aplicativos desktop e mobile para todas as plataformas, mas isso existia antes do Reader, concorda?

Se você tem alguma dica de aplicativo web, desktop ou mobile, por favor compartilhe conosco nos comentários. É sempre bom conhecer mais opções diferentes.

Não é magia, é o módulo itertools da biblioteca padrão do Python

Não é magia, é o módulo itertools da biblioteca padrão do PythonQuem ouve falar que Python vem com baterias incluídas, geralmente não imagina que elas estão mais próximas de uma usina nuclear do que de um par de pilhas Rayovale (sim, existe!). Nunca me canso de ficar surpreso toda vez que lembro que existem módulos como o itertools, por exemplo. Passeando pela documentação, é fácil encontrar funcionalidades poderosas, pérolas que podem salvar o dia em alguns minutos quando o seu problema é um desses:

Percorrer os elementos de várias sequências de uma só vez

Com a função chain(), basta fazer:

>>> import itertools
>>> a = [100, 200, 300]
>>> b = ('Newton', 'Einstein', 'Hawking', 'Cooper')
>>> c = 'Python'
>>> for item in itertools.chain(a, b, c):
...     print item
...
100
200
300
Newton
Einstein
Hawking
Cooper
P
y
t
h
o
n

Calcular a soma acumulada a cada passo da iteração

Vamos supor que uma criança guarda parte de sua mesada num cofrinho todo mês. Com a função accumulate() (Python 3) é possível calcular o valor economizado mês a mês:

>>> import itertools
>>> cofrinho = [10, 12, 15, 5, 7, 0, 20, 13, 9, 0, 1, 16]
>>> for mes, valor_guardado in enumerate(list(itertools.accumulate(cofrinho)), start=1):
...    print(mes, '= R$', valor_guardado)
...
1 = R$ 10
2 = R$ 22
3 = R$ 37
4 = R$ 42
5 = R$ 49
6 = R$ 49
7 = R$ 69
8 = R$ 82
9 = R$ 91
10 = R$ 91
11 = R$ 92
12 = R$ 108

Na verdade essa é apenas a funcionalidade mais básica da função accumulate(). É possível passar qual a função que será usada no lugar da soma, permitindo fazer operações muito mais complexas envolvendo séries de elementos. Mais detalhes podem ser vistos na documentação oficial.

Encontrar todas as possíveis combinações entre os elementos de um conjunto

Lembra de análise combinatória na escola? Uma entre as funções do módulo itertools que poderiam nos ajudar na hora do aperto é a permutations(). Um problema clássico da análise combinatória é encontrar todos os anagramas de uma palavra:

>>> import itertools
>>> [''.join(anagrama) for anagrama in itertools.permutations('gato')]
['gato', 'gaot', 'gtao', 'gtoa', 'goat', 'gota', 'agto', 'agot', 'atgo', 'atog', 'aogt', 'aotg', 'tgao', 'tgoa', 'tago', 'taog', 'toga', 'toag', 'ogat', 'ogta', 'oagt', 'oatg', 'otga', 'otag']

Esse é só um aperitivo das possibilidades do módulo itertools. A documentação oficial traz, além da referência de todas as funções do módulo, uma seção só com receitas do que se pode construir a partir da combinação das funções. Vale dar uma olhada, pois nunca se sabe quando vai ser necessário usar algo parecido.

Referência