Deixando uma view no Django 35% mais rápida

Abrir uma conexão com o PostgreSQL não é propriamente a definição da palavra lento, mas é uma coisa que pode ser facilmente otimizada.

Se você usa o banco de dados em um servidor diferente, ou mesmo se usa localmente, abrir uma nova conexão pode demorar alguns milissegundos.

Eu uso o Opbeat para monitorar a performance do meu projeto, observando o breakdown do tempo gasto em cada camada da aplicação, dá pra observar que mesmo 27.5ms representam, na minha Home, 23% do tempo de chamada da requisição.

Continue reading “Deixando uma view no Django 35% mais rápida”

Advertisements

Dropbox na Digital Ocean

De uns tempos pra cá, comecei a desenvolver um site usando Django, tem alguns meses que estou desenvolvendo no meu tempo livre e recentemente resolvi colocar ele online de verdade.

Como o site vai ter bastante upload de arquivo por parte do usuário queria um jeito simples de fazer backup disso.

Vi um monte de jeito que o pessoal estava usando, até que vi o headless Dropbox e gostei. Seguindo essa linha resolvi dar uma pesquisada melhor nisso e fiz usando ele também.

Continue reading “Dropbox na Digital Ocean”

Git tips n’ tricks

Por um tempo eu usei paralelamente três VCS, o Git, o Mercurial e o SVN, o último basicamente por causa do trabalho. De um tempo pra cá tenho tentado focar mais em uma única coisa e direcionar meus estudos, por assim dizer.

E na questão de VCS a escolha foi o Git. O Git surgiu para substituir o VCS usado anteriormente no desenvolvimento do Linux, que era proprietário.

Tanto o Git quanto o Mercurial, eu usava principalmente em meus projetos particulares, dessa maneira eu acabei não tendo a necessidade de usar alguns recursos, mas como resolvi focar em somente uma ferramenta, achei que seria uma boa dar uma lida melhor sobre o Git. Continue reading “Git tips n’ tricks”

Ambientes virtuais Python

De um tempo pra cá tenho passado boa parte do meu tempo brincando com Python e Django. Por curiosidade normalmente eu acabo tento várias versões de determinadas bibliotecas, inclusive do próprio Python e também do Django. Isso poderia ser um problema, mas não é.

Eu acho que todo mundo já deve conhecer e usar o virtualenv.

Pra quem não sabe, imagine o seguinte cenário, você tem o projeto A que usa a versão 1 da biblioteca X e começou a desenvolver o projeto B que usa a versão 2. Vamos supor agora que as versões 1 e 2 não possuem uma API compatível, se você atualizar para a versão 2 terá problemas com o projeto A.

Esse é um problema solucionado pelo virtualenv, outra situação que ele é muito útil é caso você não tenha acesso privilegiado para instalar nada no site-packages global.

Continue reading “Ambientes virtuais Python”

Customizando o Twitter Bootstrap

Se você assim como eu resolveu se aventurar recentemente pelo mundo do desenvolvimento web, existe uma possibilidade de que tenha escolhido começar a usar algum framework frontend, assim como o Foundation ou o Bootstrap.

Ambos são excelentes e te poupam uma boa parte do trabalho e do tempo necessário para criar algo bonito e funcional, porém vou falar somente sobre o Bootstrap.

O negócio começa a ficar um pouco confuso quando você tenta alterar o estilo atual definido pelo framework.

Várias considerações são feitas ao se aplicar estilo a um determinado elemento, a ordem de declaração, a herança de estilos, a especificidade dos estilos, etc. Isso pode ser um problema, por exemplo se você quiser sobreescrever a cor de algum elemento no Bootstrap somente usando CSS, você precisa tomar algumas precauções para que o seu estilo seja declarado de uma maneira mais específica que foi declarado no framework.

Continue reading “Customizando o Twitter Bootstrap”

A volta dos que não foram

Pra quem acompanha o blog desde a outra “versão” sabe que faz mais de um ano que eu mudei para o Arch Linux, e continuo feliz desde então.

Mas como a curiosidade é maior, no começo desse ano resolvi que queria experimentar outras distribuições. E foi assim que uma jornada, que pra mim foi longa, começou.

Passei por diversas distribuições, voltei ao Debian, experimentei o OpenSUSE, disse oi ao Slack, visitei o Ubuntu, suas variantes e seus descendentes, entre outras.

Acho que foram uns dois ou três meses nesse vai e volta, e é sem surpresa nenhuma que escrevo esse post no Arch. É, não teve jeito…

Continue reading “A volta dos que não foram”

Behavior Testing com SpecFlow e Selenium em C#

Enquanto muitos ainda andam estudando e analisando se vale a pena ou não usar UnitTesting, o mundo vai andando e outras técnicas vão saindo. São tantos xDDs que mais parece uma sopa de letrinha.

Uma que está se popularizando bastante é o BDD, Behavior Driven Development, que como o nome diz, é o desenvolvimento guiado pelo comportamento.

Essa técnica cria um canal de comunicação claro entre desenvolvedores e pessoas sem conhecimento técnico, podendo até ser os próprios usuários, possibilitando uma maior facilidade para especificação e teste de funcionalidades.

Ao invés de apresentar código em alguma linguagem de programação, é possível apresentar em linguagem “humana”, ou seja, é possível escrever testes de funcionalidades em inglês ou, até mesmo, em português!

Claro que não existe mágica, não existe um interpretador from hell que entende o que você escreveu e executa na aplicação. Existem sim, ferramentas que facilitam, e muito, a tarefa de escrever esse tipo teste. E como não existe mágica, vou mostrar aqui uma maneira simples de fazer tudo funcionar.

Continue reading “Behavior Testing com SpecFlow e Selenium em C#”