Ferramenta de gestão de tempo Pomodoro aplicado ao Linux

A Técnica Pomodoro é um sistema de gestão de tempo desenvolvido por Francesco Cirillo, nos anos 80.
Consiste em usar um timer, para dividir o seu tempo de trabalho em intervalos que têm maior chance de serem produtivos.
Tradicionalmente, são usados 25 minutos de trabalho separados por pequenos intervalos de tempo para descanso.
Os intervalos principais (de 25 minutos) são chamados pomodoros (tomates, em italiano).

Como as pessoas não são iguais, é possível que intervalos de tempo diferentes funcionem melhor para cada um. Use 15, 20, 30 minutos. Faça algumas experiências — Enfim, veja aí o que for melhor para você.

A técnica é muito popular e há dezenas de aplicativos voltados a ela.
Não é difícil de aplicar, por que, como ferramenta, só exige um timer.
Há inúmeros sites que provêm apps online, junto com instruções, para quem não quer instalar novos aplicativos no seu computador.

A técnica está relacionada ao desenvolvimento incremental (usado no design de softwares) e tem sido adotada no contexto da programação em pares.

Detalhes da técnica Pomodoro

De modo resumido, o processo é composto por 6 passos:

  1. Decida sobre o conjunto de tarefas a serem realizadas e elimine as possíveis distrações.
  2. Acione o timer — usualmente, 25 minutos.
  3. Trabalhe nas tarefas propostas. Marque/risque as tarefas à medida em que forem concluídas.
  4. Termine o trabalho, quando o timer avisar.
  5. Se tiver menos de 4 tarefas concluídas, faça uma parada de 3 a 5 minutos e vá para o passo 2.
  6. Após 4 pomodoros, use um intervale de descanso maior (15 a 30 minutos) e vá para o passo 1.

Se o seu smartphone é uma fonte de distrações para você, saiba Como configurar o NÃO PERTURBE no celular Android.
Na seção de referências, ao final do artigo, há um link para o artigo na Wikipedia que explica mais sobre a técnica Pomodoro, caso queira se aprofundar mais no assunto.

Técnica Pomodoro no Linux

Nos repositórios da sua distro GNU/Linux é possível encontrar, com toda certeza, mais de um aplicativo voltado ao uso desta técnica.
Para escrever este artigo, uso o Debian 10 Buster, que traz uma edição de timer como extensão do GNOME Shell.
Para quem não tem medo de usar a CLI, é possível encontrar uma variedade maior de aplicativos com a invocação do gerenciador de pacotes da sua distro (apt, apt-get, dnf, yum etc).
No Debian/Ubuntu, use o apt search:


apt search pomodoro

ou, para obter muito mais resultados:


apt search timer

A segunda lista irá retornar diversas opções para quem usa outros ambientes de desktop (como XFCE, KDE…), tais como ktimer, xfce4-timer-plugin etc.
Se preferir, é possível não instalar nada adicional e apenas usar o que já está presente no seu sistema.
O relógio padrão do GNOME (semelhante ao do XFCE e do KDE) tem um timer incluído que pode ser usado a qualquer momento.
Pressione a tecla Super e faça a busca por “Relógio”
relógio do gnome

No painel principal do Relógio, selecione a aba ‘Temporizador’ e ajuste o tempo que for mais adequado para você.
Quando o tempo “estourar”, o GNOME dará um aviso sonoro discreto (na configuração padrão) e visual, na área de notificações.
gnome watch

Por fim, não deixe de considerar também o uso do Workrave, como opção mais complexa (ou completa) de aplicativo para controlar o tempo que você passa na frente do computador.

Referências

https://pt.wikipedia.org/wiki/T%C3%A9cnica_pomodoro.

Uma explicação simplificada sobre a gestão de memória no Linux, com foco no swap.

Uma das coisas mais certas, quando se fala em gestão da memória RAM, é que não existe memória sobrando ou ociosa em um sistema Linux.
Cada aplicação usa uma quantidade da memória disponível no sistema.
Do que “sobra”, com exceção dos últimos megabytes, o Linux usa para fazer caching — no que se inclui o cache de página, os caches de inodes etc.
Ocupar toda a memória física disponível, é benéfico — ajuda a melhorar enormemente a eficiência geral do sistema.
Tanto a leitura quanto a escrita em disco podem se beneficiar imensamente com o uso do cache.
Em mundo ideal, você sempre terá memória suficiente para abrigar todas as suas aplicações, suprir as necessidades delas e, de lambuja, ainda terá algumas centenas de megabytes disponíveis para fazer caching.
Neste mundo utópico, desde que suas aplicações não façam demandas crescentes por mais memória e o sistema não exerça pressão crescente no cache, não há necessidade alguma para swap — a não ser permitir a hibernação.

Além de auxiliar na gestão da memória virtual do sistema, o swap tem outro papel importante: guardar o estado atual do sistema, caso você ative a hibernação do computador.
Esta função do swap não será abordada neste texto, já que não tem relação direta com o gerenciamento de memória do sistema.

Para se aprofundar mais em algum tema, clique nos links incluídos no texto deste artigo e nos que estão relacionados ao final do post.


Voltando ao caching
À medida em que as aplicações precisam de mais memória física, o sistema vai abrindo mão do espaço que estava usando para o cache em prol delas.
Desalocar cache é tão simples e fácil que é feito em tempo real.
Uma vez que todo o conteúdo do cache é sempre uma cópia de algo que já se encontra gravado em disco, portanto seu espaço, ou pode ser disponibilizado imediatamente, ou já está sempre prestes a ser liberado nos próximos segundos.
O fato é que realocar o espaço usado para caching tem zero impacto na performance das aplicações.
Tendo isto em mente, quando nos referimos a memória física “livre”, podemos estar incluindo ou não a que está sendo usada pelo cache.
linux-memória-ram-livre
Esta é a maneira como todos os sistemas operacionais modernos trabalham. Na hora de exibir a quantidade de memória livre, contudo, alguns incluem o que está ocupado pelo cache, outros não.
Concordo com alguns autores que, ao falar de “memória livre”, faz mas sentido incluir a parte ocupada pelo cache — já que é instantaneamente disponibilizada ao ser requisitada pelas aplicações.
No Linux, ao executar o comando free, ele exibe as duas situações:

free -h
              total        used        free      shared  buff/cache   available
Mem:           2,0G        207M        1,2G         55M        521M        1,7G
Swap:          6,7G          0B        6,7G

No Linux, o comando free, inclui valor do cache na coluna “disponível” (available).
Se preferir ver os valor do cache destacado em uma coluna, use as opções ‘-hwt’:

free -hwt
              total        used        free      shared     buffers       cache   available
Mem:           2,0G        491M        262M        127M        2,0M        1,2G        1,3G
Swap:          6,7G        144K        6,7G
Total:         8,7G        491M        7,0G

Como o Linux usa o swap

Este tópico será explicado de maneira básica, aqui.
Sugiro a leitura de Perguntas e respostas sobre o SWAP, caso você queira saber mais sobre o assunto.
Uma vez preenchida toda a memória física disponível na sua máquina, não há mais espaço suficiente para o cache garantir a velocidade do fluxo de dados entre as mídias físicas e a memória.
Neste caso, o Linux irá realocar espaço na memória, usado por aplicações inativas (ou pouco usadas), da memória RAM, para o swap (no disco rígido), com objetivo de ter de volta algum espaço para operar com o cache.
Isto não acontece como fruto de uma decisão simples. Não existe “um percentual” de uso da memória a partir do qual o sistema automaticamente começa a fazer swapping.
Há um algoritmo mais complexo envolvido, a partir do qual o Linux decide que é hora de levar dados da RAM para o disco.
O algoritmo leva vários fatos em conta. Este processo pode melhor ser descrito por “quanta pressão há para alocar novos bytes de memória”.
Se houver muita pressão para alocar novos blocos de memória, também haverá mais chance de que alguns outros blocos sejam “swapeados” para criar mais espaço na memória. Se houver menos pressão, as chances serão menores.
A variável que regula a pressão do cache (ou cache pressure), pode ser definida, junto com o swappiness“.
Se quiser saber como fazer isto, leia Como reduzir o uso do swap para melhorar o desempenho.
A menos que você saiba o que está fazendo, em computadores de uso genérico, não é recomendável alterar estas variáveis.
É comum vilanizarmos o swap. De modo geral, contudo, ele é uma coisa muita boa.
Você pode ser penalizado na performance do seu sistema, por uso ocasional do swap. Mas esta situação traz mais ganhos à responsividade e à estabilidade geral do sistema.
Ao reduzir o valor do swappiness, permite-se que a quantidade de memória cache diminua um pouco mais do que iria normalmente — mesmo que, de alguma forma, ela pudesse ser útil ao sistema.
O uso de valores baixos para a variável swappiness, traz o risco de tornar um computador (de uso genérico) mais lento — por que ele terá menos espaço para fazer caching.
Cabe a você determinar se, no seu caso específico, esta relação pode ser interessante e trazer ganhos de desempenho
Desabilitar completamente o swap, pode trazer riscos a estabilidade do seu sistema, principalmente se ocorrer de toda a memória física vir a ser ocupada.

O que acontece no sistema quando ele está atolado e fazendo uso pesado do swap?

Com alguma frequência, acontece de percebermos que nosso computador parece atolado de tarefas, super lento e o led indicador de atividade no disco está “quase queimando”.
Neste caso, aparentemente, o sistema está enviando uma quantidade tremenda de dados da memória RAM para o HD (ou SSD).
Culpar o swap pela situação, é uma maneira inadequada de abordar o problema.
Se o swapping realmente atingiu este extremo, o fato é que a memória física está prestes a se esgotar — e o swapping é justamente quem está evitando o travamento do sistema ou evitando que este saia “matando” processos a esmo, para conseguir se manter em pé.
Sem o swapping, numa situação como esta, processos irão colidir e morrer (crash n’ die).
Neste caso, o que se tem é um sintoma de problemas mais profundos.
Se o seu computador tivesse memória suficiente, para a execução de todas as suas tarefas, o espaço de troca (swap) serviria apenas para garantir que a memória fosse usada de forma eficiente.
Remover o swap ou restringir arbitrariamente seu uso não vai mudar o fato de que você tem um hardware com pouca memória física para executar suas aplicações.

Quase tudo do que se fala do swap e cache, aqui, vale para qualquer sistema operacional atual. Não se restringe ao Linux, portanto.

O Linux é um sistema operacional extremamente amadurecido e testado em condições das mais adversas (nos computadores mais exigidos do mundo, inclusive).
Acredite, o algoritmo que cuida da gestão da memória, escolhendo os dados menos usados para “swapear” pro disco, é muito eficiente — e a grande maioria dos usuários jamais irá precisar alterar suas variáveis e seus parâmetros de trabalho.
Em um sistema desktop, pouco usado, há uma situação bastante conhecida em que o usuário chega, após algum tempo em que a máquina estava sem uso, e tem que esperar alguns segundos (que parecem horas) até que se torne disponível novamente.
Esta demora é resultante do trabalho de mover de volta (do disco para a memória RAM) os processos que estavam ociosos.
Isto é comum quando deixamos a máquina ligada durante a noite, realizando alguma tarefa, como downloads, checagem antivírus, backup etc., enquanto dormimos.
De manhã, o sistema não tem como prever que você vai querer usar o navegador, que ficou inativo durante horas. Portanto, você terá que esperar um pouco.
Este é um dos pontos “chatos” de deixar o swap habilitado e por conta do sistema. Se você desabilitá-lo, esta lentidão, após o backup (por exemplo), não irá mais ocorrer. Em compensação, o sistema irá rodar um pouco mais lento, durante o uso diário — na medida em que haverá menos espaço para cache.
Outro fator a ser considerado, é a perda da proteção no caso de faltar memória física para suas aplicações — neste caso, o sistema vai arriar.

A maneira mais eficiente, em termos de custos, de resolver lentidão associada ao uso do swap pelo sistema, é aumentar sua memória física.
Se isto não for possível, avalie trocar suas aplicações por outras mais leves.
Desabilitar ou restringir o uso do swap é uma das soluções menos eficazes — uma vez que ele é apenas um mecanismo do sistema, usado para lidar com situações em que a memória física se tornou escassa.

Em sistemas com grande quantidade de memória RAM, o swap pode ser desabilitado com segurança?

Nos dias atuais (veja a data do post), 8 Gb de memória RAM é uma grande quantidade de memória — se estivermos falando de uma distro Linux comum, para uso genérico.
Neste cenário, raramente o usuário irá chegar ao ponto de precisar de swap.
Ainda assim, é desnecessário desativar o swap — lembre que ele tem outras utilidades.
Tampouco há necessidade de ajustar o swappiness — o sistema “sabe” que há bastante espaço na memória RAM para as aplicações e para o cache e nunca irá tomar a decisão de usar o swap.
Se, ainda assim, você quiser desabilitar o swap e reduzir o swappiness, o sistema continuará funcionando bem. Simplesmente não fará diferença.
Nos raros casos em que o sistema precisar lançar mão do swap, vai ser bom tê-lo à disposição.
Deixar os valores padrão, portanto, é a opção pela segurança e pela eficiência — tendo ou não uma grande quantidade de memória.

Como o swap atua para tornar o meu sistema mais rápido?

A transferência de dados entre a memória física e o swap (em HD ou SSD) é uma operação lenta.
Porém, é uma atitude que o kernel só toma quando tem certeza de que os benefícios superam seus custos.
Um exemplo disto é quando a aplicação ativa no seu sistema cresceu no uso da memória a ponto de não deixar mais espaço livre para o cache — ocasionando uma perda sensível na eficiência da transferência de dados.
Neste caso, há benefícios em mover porções inativas ou pouco usadas da memória para o swap, liberando alguma quantidade de memória suficiente para agilizar o fluxo de dados do cache.
Algumas aplicações podem também precisar de uma grande quantidade de dados na hora de iniciar. A pressão por recursos é aliviada logo após seu completo carregamento.
Se o seu sistema já estiver sobrecarregado, de antemão, o swap pode evitar um crash, durante este processo.

Conclusão

Não faça deste caso, um dilema Tostines.
Não é o swap que torna o seu sistema mais lento. É o contrário.
É por estar muito lento, que seu sistema faz uso deste recurso.

As pessoas associam a lentidão do sistema ao uso do swap, por que seu uso acontece quando o sistema está perto da inanição por recursos de memória.
O swap, antes de estar atrapalhando a sua vida, pode estar salvando o seu dia de trabalho.
Se ele está “salvando demais” o seu dia, em vez de fazer dele um vilão suas ações precisam ter como alvo o problema certo — a falta de recursos para rodar as aplicações atuais. Ou muda as aplicações, ou aumenta os recursos.

Referências

Como verificar a memória swap no Linux.
Como criar um arquivo swap no Ubuntu.
Perguntas e respostas sobre o swap.
http://askubuntu.com/questions/184217/why-most-people-recommend-to-reduce-swappiness-to-10-20

GnuCash, um aplicativo de gestão financeira.

O GnuCash é um software de gestão de finanças voltado para uso corporativo, de pequenos negócios ou para uso pessoal.
Você pode organizar e acompanhar suas finanças em múltiplas contas. Há suporte a processamento de clientes, vendedores e funcionários.
O aplicativo tem versões para os principais sistemas operacionais, o que inclui o Android — o que te permite acompanhar suas contas em qualquer lugar, a qualquer momento.
gnucash splash screen - Screenshot

Como instalar o GnuCash

Como já foi dito, o aplicativo tem versões para as mais diversas plataformas.
Usuários Mac e Windows, podem fazer o download no site do produto
Quem usa Linux, pode instalar o programa confortavelmente dos repositórios de sua distro.
Usuários Ubuntu, podem fazer a instalação através do Software Center, clicando no botão abaixo:

Clique para instalar o aplicativo.
Clique para instalar o aplicativo.

Quem preferir o terminal, no Ubuntu, pode usar os seguintes comandos (copie e cole):

sudo apt-get install gnucash

No Fedora, é possível instalar pelo seu gerenciador de pacotes ou pelo terminal, com o yum:

sudo yum install gnucash

Você pode obter mais informações sobre o processo de instalação no Red Hat ou Fedora aqui.
No Android, é possível baixar e instalar o aplicativo pelo Google Play.
Contudo, neste post, irei abordar especificamente a versão para PC, do GnuCash.

Lá vem história…

Se achar melhor, você pode pular esta seção — mas acho que vale falar um pouco da trajetória deste aplicativo, que vem desde 1997 (falta pouco para fazer 20 anos!).
Começou voltado a usuários comuns e ganhou músculos e força para, em 2001 incorporar a capacidade de atender às finanças de pequenas empresas.
A versão para PC é escrita em C, com uma pequena fração dela, em Scheme. A versão Android é feita em Java.
O GnuCash para Android é um aplicativo diferente, que atua como complemento do que você usa no PC.
O site de análises Ohloh publicou um post mostrando que o código do aplicativo é estável, maduro e tem uma base de desenvolvedores ativos.

A interface

GnuCash - criar nova contaO visual do GnuCash se integra à interface do ambiente desktop que você está usando.
Inicialmente, ele é espartano — à medida em que você vai usando e necessitando o nível de complexidade vai gradativamente aumentando. Ou seja, ele não assusta os novatos e dá aos veteranos, em contabilidade ou finanças, os recursos que precisam.
A tela de criação de um nova conta – uma das primeiras ações de quem vai usar o aplicativo – permite fornecer diversas informações e inclui 13 tipos de contas (é possível alterar esta lista).
Novas contas podem ser criadas a partir de outras preexistentes, incorporando seu saldo e, também, podem ser ocultas.
As contas podem estar organizadas hierarquicamente — o que pode ser útil também para quem só quer organizar suas finanças pessoais.

Importar dados de outros aplicativos

Importar dados de outro aplicativo proprietário, pode ser uma dor de cabeça — algumas empresas dificultam a disponibilização dos dados do usuário que os deseja levar a outro aplicativo.
Ainda assim, com um pouco de esforço, você pode levar os dados do seu aplicativo anterior para dentro do GnuCash.
O GnuCash aceita importar arquivos

  • QIF, OFX e QFX;
  • Contas e transações CSV
  • e mais alguns outros.

Aliás, se você tem dificuldade de extrair os dados do seu aplicativo atual para levar para outro, você já está em maus lençóis e deveria considerar mais seriamente a mudança para outra plataforma que ofereça mais respeito com os seus dados e com a sua liberdade.

Conclusão

O GnuCash é uma excelente ferramenta quando você deseja apenas gerir suas contas pessoais.
Não faz sentido ficar “se matando” em cima de planilhas que, com o tempo, vão ficando pesadas em função da quantidade de dados e são difíceis de manusear.

Como desinstalar programas no Linux

É um fato: instalo muita coisa por impulso. Os métodos são os mais variados possível — os de remoção também. Mas, nem sempre, o caminho é exatamente inverso.
Ao instalar um software através da Central de Programas do Ubuntu, a desinstalação pode ser feita através deste mesmo aplicativo.

Central de programas do ubuntu - como instalar ou desinstalar programas no Ubuntu
Clique para ampliar.

Se você usou o apt-get ou o apt para instalar, use-o para desinstalar. Isto vale para qualquer um dos outros métodos: apt, aptitude, dpkg, rpm, yum, tarballs etc.
Pra quem usa Debian ou Ubuntu, a documentação oficial do Debian dá conta de que o apt-get e o aptitude gerenciam as dependências de forma diferente. Portanto, usar apenas um para gerenciar a instalação/desinstalação de aplicativos, pode evitar dores de cabeça.

Nas versões mais atuais destes sistemas operacionais, o caminho (na linha de comando) é usar o comando apt. Apenas isso.

Como remover pacotes de softwares instalados no Debian ou Ubuntu

Se você instalou com o apt:

sudo apt remove nome_do_pacote

Use a opção purge para remover também os arquivos de configuração:

sudo apt --purge nome_do_pacote

Se você instalou um pacote .deb, com o dpkg:

sudo dpkg --remove nome_do_pacote

Você pode usar a opção --purge aqui também:

sudo dpkg --purge nome_do_pacote

Se você não tem intenção de reinstalar o aplicativo, deve usar a opção purge, para manter o seu sistema limpo.
O comando aptitude tem a mesma sintaxe do apt e do apt-get, nas operações descritas acima.

Como remover pacotes de aplicativos com o rpm e yum

O rpm é semelhante ao dpkg, só que é usado no Red Hat, Novell e no IBM AIX.
Este comando remove os arquivos binários, as bibliotecas e os arquivos de configuração:

rpm --erase nome_do_pacote

O yum é um frontend para o rpm e é usado no Fedora, no RedHat, no CentOS, entre outros. Tem a seguinte sintaxe:

yum remove nome_do_pacote

Como remover aplicativos instalados a partir do código fonte — tarballs

Instalar aplicativos a partir do código fonte é uma prática comum e muita gente gosta de poder compilar a partir do código fonte os seus programas — por que este método dá todo o poder que você precisa para otimizar seu software em relação ao seu hardware.

Use o comando make para desinstalar

Este é o método mais fácil, mas nem sempre é suportado pelos pacotes de aplicativos que vêm em tarballs.
Há casos em que tudo o que precisa ser feito, é remover o diretório em que você instalou os arquivos.
Normalmente, os arquivos INSTALL e README, presentes no próprio diretório em que você descompactou e compilou o(s) aplicativo(s) que deseja desinstalar agora, contém instruções de desinstalação.
Para desinstalar com o make, entre neste mesmo diretório e rode o comando make:

make uninstall

Conclusão

Use o manual man do seu sistema para obter mais informações de uso do seu software de gerenciamento de pacotes.
Se eu puder reforçar um conselho, para quem usa Debian, Ubuntu etc. é que use apenas um ou outro, no que tange o aptitude e o apt-get, para evitar bagunçar o seu sistema na gestão das dependências.
No mais, divirta-se experimentando novos programas.