Publicado por: lezz | novembro 30, 2011

Lendo e-mails do CouchSurfing no Mutt

Uma pequena configuração no mutt fez com que a parte certa de um multipart e-mail (que o couchsurfing manda) na lista. Por padrão o mutt tenta ler a parte de texto text/plain de uma mensagem multipart.

Isso é realmente chato caso vc tente ler a mensagem formatada bonitinha (com o w3m por exemplo).

o trecho de configuração abaixo resolve esse problema invertendo a ordem de apresentação (para todas as mensagens)


# this helps with multipart messages
unalternative_order *
alternative_order multipart/related text/html text/plain #had to set multipart/related first because Couchsurfing e-mail formats

Até mais😉

Publicado por: lezz | junho 9, 2011

Configurações Cups no diretório pessoal do usuário

Sabe aquelas opções da impressora que sempre aparecem por padrão quando vai imprimir um documento?

Isso mesmo, aquelas que um dia vc configurou em algum programa no linux e,
como que por milagre, elas ficaram como sendo as opções padrão para todas as impressões e vc vive tendo que mudar as preferências
todas as vezes que vai imprimir?

É, muito provavelmente elas encontram-se gravadas no arquivo ~/.cups/lpoptions, como no exemplo abaixo:


leslie@atlas:~$ more .cups/lpoptions
Default Stylus-TX200 MediaType=PlainPaper OutputOrder=Normal StpFullBleed=True StpImageType=Text StpQuality=High


Agora que (nós) já sabemos aonde essas opções ficam armazenadas, é só mudar elas conforme a sua preferência e não ficar mais aborrecido
porque a configuração está errada “por padrão”😉

Precisei modificar hoje um script de backup e queria uma ajuda do comando ls para facilitar a minha vida😉

Então fui ler a man-page do ls para saber se tinha alguma coisa que pudesse ser útil pra mim.

Para resolver o problema que eu tinha, que era só recuperar o tamanho do arquivo eu precisei do awk tb, mas já que estava lendo a man-page encontrei algumas opções realmente interessantes:

-b
essa opção coloca automaticamente os caracteres de escape ‘\’ antes dos caracteres especiais.
-v
Essa opção foi direto pro meu alias ls ! Ela ordena os arquivos que tem versões no nome, por exemplo:>

    > ls -1            > ls -1v
    foo.zml-1.gz       foo.zml-1.gz
    foo.zml-100.gz     foo.zml-12.gz
    foo.zml-12.gz      foo.zml-25.gz
    foo.zml-25.gz      foo.zml-100.gz

Vejam que a saída padrão coloca o 100 logo depois do 1 e colocando o -v temos a sequência numérica😉

E o meu alias pro ls ficou assim:

alias ls='ls -F –color -bv'

[]s

Leslie

Publicado por: lezz | janeiro 27, 2011

Gerações de Trabalhadores

Hoje ao voltar do almoço encontrei um senhor, já grisalho, trabalhando de gari. Ele estava no seu momento de pausa, tomando a coca-cola que havia tirado do espaço que fica entre o saco preto e o carrinho.

Até aí tudo bem, não fosse a dúvida que se abateu sobre mim:

  • Se as pessoas estão trabalhando até mais tarde na vida, quando é que vão realmente aproveitar e curtir a família, filhos, netos ou mesmo viajar

Isso acabou me incomodando também pelo fato de que a situação das aposentadorias continua sendo uma constante notícia. Seja a dos políticos com suas maracutaias e regalias todas, seja a minha.

Quem vai pagar por isso tudo? Uma coisa é quase certa: cada vez teremos que trabalhar mais tempo na vida para poder gozar de um momento de descanso.

Nesse momento surge outro pensamento: “Então vou aproveitar agora mesmo”… Sim, é necessário também, porém nesse momento o meu, o seu trabalho, garante um descanso para alguém outro. Não cabe a nós falharmos nessa cadeia …

E as suas considerações?

Publicado por: lezz | dezembro 28, 2010

Função que ordena os registros do cartão de crédito

O problema

Eu uso o moneylog já há algum tempo e desenvolvi algumas funções para facilitar a minha vida, e algo que estava me incomodando era o fato de ter que organizar todos os canhotos do cartão de crédito para depois lançá-los no meu registro.

Tá, eu sei que no HTML o moneylog mostra ordenado os registros no browser, mas eu queria eles organizados no texto tb😉

O que eu queria era poder lançar os registros na ordem em que fosse pegando os registros e que depois “uma função mágica” ordenasse eles pra mim😉 (fácil né?!)

A solução

Como eu uso o emacs para lançar os registros, nada mais natural que fosse dentro do emacs que fosse feita essa organização.

Os meus registros tem o seguinte formato:

AAAA-MM-DD -X.XX tag1, tag2| @MM.DD Descrição do gasto

Imaginei várias soluções, desde a mais simples: ordenar as linhas alfabéticamente, até outras mais complexas, onde preencheria hash tables com a data do gasto para poder organizar o conjunto de linhas.

Como cada registro é uma única linha, eu já tinha uma idéia de como seriam os registros.

O problema para a solução mais simples é que, como eu coloco a data de lançamento para a data de vencimento do meu cartão ordenar as entradas pelo primeiro campo (AAAA-MM-DD) não iria adiantar nada, pois as entradas teriam a mesma data😦

Para a abordagem de colocar todas as entradas em hash tables há o problema de que posso ter várias entradas no mesmo dia, independente de usar o campo AAAA-MM-DD ou @MM.DD e sendo assim eu perderia entradas😦

A solução acabou sendo a mais simples (ou segunda mais simples), copiar a data de compra @MM.DD para o início da linha, onde meu registro temporário ficaria assim:

@MM.DD AAAA-MM-DD -X.XX tag1, tag2| @MM.DD Descrição do gasto

E depois mandar ordenar as linhas com (sort-lines nil (point-min) (point-max)).

Pronto, os registros já estavam ordenados, porém agora eu não tinha mais o formato do moneylog, mas estava fácil voltar ao formato original.

Bastava recortar a primeira parte do texto com (kill-rectangle minr maxr) e voi-lá, estaria de volta no formato certo.

Uso

Para usar a função, basta selecionar a região e digitar M-x i-ordena-ccredit.

O resultado esperado é que os registros apareçam ordenados e com o texto #ordenado na linha logo antes do primeiro registro.

Antes

2011-01-17  -1.25   ccred11_01, diversos, mercadorama| @12.20 1 refri Cini no mercadorama sabor gengibirra
2011-01-17  -1.20   ccred11_01, bapka| @12.23 2 picolés de morango na bapka
2011-01-17  -1.20   ccred11_01, bapka| @12.27 2 picolés de morango na bapka
2011-01-17  -0.60   ccred11_01, bapka| @12.21 Sorvete de Morango na Bapka

Depois

# ordenado
2011-01-17  -1.25   ccred11_01, diversos, mercadorama| @12.20 1 refri Cini no mercadorama sabor gengibirra
2011-01-17  -0.60   ccred11_01, bapka| @12.21 Sorvete de Morango na Bapka
2011-01-17  -1.20   ccred11_01, bapka| @12.23 2 picolés de morango na bapka
2011-01-17  -1.20   ccred11_01, bapka| @12.27 2 picolés de morango na bapka

O Código

;; Selecione ANTES a região com as linhas a serem ordenadas
;; muito provavelmente os registros do cartão de crédito ;-)

;; A função Ordena os registros do seguinte tipo com base na data colocada em @mm.dd

;;--------------------------------------------------------------------------
2011-01-17  -0.60   ccred11_01, bapka| @12.21 Sorvete de Morango na Bapka
2011-01-17  -60.00  ccred11_01, carro| @12.21 Gasolina para o Carro
2011-01-17  -6.30   ccred11_01| @12.21 Carpetes e Velcro de Proteção para Árvore na Tecidos Avenida
2011-01-17  -10.50  ccred11_01, estac| @12.22 Estacionamento Almoço
2011-01-17  -36.00  ccred11_01, presente| @12.21 Camisetas
;;---------------------------------------------------------------------------

(defun i-ordena-ccredit ()
"Ordena os registros de data do cartão de crédito."
(interactive)
;; discover point-min and point-max from the selected region, or use the next word
(let (pos1 pos2 bds)
  (if (and transient-mark-mode
           mark-active)
      (setq start (region-beginning) end (region-end))
    (progn
      (setq bds (bounds-of-thing-at-point 'symbol))
      (setq start (car bds) end (cdr bds))
      ))
; idiom for string replacement in region
;; restrict the atuation of the next commands to the selected region
(with-output-to-temp-buffer "*registros*"
  (save-restriction
    (narrow-to-region start end)
    (goto-char (point-min))
    (while (< (point) (point-max))
;; reads the buffer line
      (setq linha (buffer-substring (line-beginning-position) (line-end-position)))
;; matches the date field 
      (string-match "\\(@[0-9][0-9].[0-9][0-9]\\)" linha)
;; puts the date matched in the data variable
      (setq data-compra (match-string 0 linha))
;; prints the line with the buy date's first
      (princ (format "%s %s\n" data-compra linha))
      (forward-line 1)
      )
    ;; repeat for other string pairs
    )
  )
;; creates a new buffer called *registros to manipulate the strings
(let ((oldbuf (current-buffer)))
  (set-buffer "*registros*")
;; let we modify the buffer
  (setq buffer-read-only nil)
;; as the buffer already has the lines in the right format, we sort them all
;; @12.21 2011-01-17    -36.00  ccred11_01, presente| @12.21 Camisetas 
  (sort-lines nil (point-min) (point-max))
;; we need to define the region that will be killed (the @mm.dd part at the front of the line)
;; that was inserted before
  (setq minr (point-min))
  (goto-char (point-max))
  (forward-line -1)
  (re-search-forward "\\(@[0-9][0-9].[0-9][0-9] \\)")
  (setq maxr (point))
;; kill the rectangle
  (kill-rectangle minr maxr)
;; now we kill the whole region to put it into the kill ring
  (kill-region (point-min) (point-max))
;; kill the temporary buffer
  (kill-buffer (current-buffer)) 
  (set-buffer oldbuf))
;; we'll kill the old region to put the new sorted lines
(kill-region (region-beginning) (region-end))
(goto-char (region-end))
(forward-line)
(insert (format "# ordenado\n"))
;; as we have killed the selected region, the ordered lines are in the 2nd position of the kill ring
(yank 2)
  )
)

Ah, o mesmo código acima pode ser encontrado no pastebin.

E é isso😉

Publicado por: lezz | dezembro 16, 2010

Salada Na Hora Do Almoço

Hj fui almoçar numa rede conhecida de fast-food e infelizmente tive uma desagradável surpresa.

Pedi uma salada com uva passa, abacaxi, alface, queijo e molho parmesão. A salada estava realmente boa até que eu encontrei, da pior maneira, uma pedra no meio da salada.

Sim, estava eu a morder com gosto os croutons da salada quando sinto aquele obstáculo intransponível no meio da trajetória dos meus molares.

Mais que prontamente eu cuspo o que, a princípio, seria um crouton um pouco mais seco e noto que é nada mais nada menos que uma pedra de cor preta e tamanho superior a 2x uma uva passa.

Felizmente não quebrei nenhum dente nessa brincadeira, foi só o susto e o comentário com os que estavam ao lado. Mas que, com certeza, vou pensar 3x antes de pedir outra salada dessa rede, ah isso vou.

Publicado por: lezz | setembro 24, 2010

Escutando Radios Online

Eu gosto de escutar algumas rádios online. O grande problema é que muitas delas só disponibilizam acessos via página web, o que implica em que o navegador fique com 1 aba extra, e pior, uma aba que normalmente trava.

Independente de navegador, seja firefox, chrome, uma hora ou outra acaba travando ou o load da máquina sobe devido a uma série de fatores alheios à minha vontade.

Pra facilitar a vida, cataloguei algumas das rádios que eu gosto em um script que toca usando o mplayer. Assim, se travar, um kill resolve e basta reiniciar o mplayer.

Abaixo segue o script que eu invoco de dentro do screen com 1 tecla de atalho😉

 

---8< seleciona-radio.sh >8-----------------------------------------------------------------------------
#!/bin/bash

while true; do
echo "Escolha a radio:"
echo " 1 - RadioVHR "
echo " BigrRadio "
echo " 2 - 100.7 The Mix "
echo " 3 - 100.3 The Rock Mix "
echo " 4 - 100.5 Classic Rock "
echo " 5 - 100.7 The Mix "
echo " 6 - 100.8 The Hawk "
echo " 7 - 100.9 Star Country "
echo " 8 - 70s and 80s Pop Mix "
echo " 9 - 70s FM "
echo " 10 - 80s FM "
echo " 11 - 80s FM "
echo " 12 - 90s Alternative "
echo " 13 - 90s FM "
echo " 14 - Country Mix "
read escolha;
case $escolha in
1)
mplayer http://87.118.64.199:80/
;;
2)
mplayer http://173.192.43.21:80/100point7
;;
3)
mplayer http://173.193.14.117:80/100point3
;;
4)
mplayer http://173.193.14.117:80/100point5mp3
;;
5)
mplayer http://173.193.14.117:80/100point7mp3
;;
6)
mplayer http://173.193.14.117:80/100point8mp3
;;
7)
mplayer http://173.193.14.117:80/100point9mp3
;;
8)
mplayer http://173.193.14.117:80/70s80smp3
;;
9)
mplayer http://173.193.14.117:80/70sfmmp3
;;
10)
mplayer http://173.193.14.117:80/80sfmmp3
;;
11)
mplayer http://173.193.14.117:80/80sfm
;;
12)
mplayer http://173.193.14.117:80/90saltmp3
;;
13)
mplayer http://173.193.14.117:80/90sfm
;;
14)
mplayer http://173.192.43.21:80/countrymix
;;
esac
done
--------------------------------------------------------------------------------------------------------

 

Os endereços da bigrradio foram retirados de http://icecast.bigrradio.com

Quem tiver mais sugestões de rádios online boas, postem por aqui que agradeço😉

 

Publicado por: lezz | setembro 22, 2010

Política e Eleições versus o Povo

Esses são apenas alguns pensamentos aleatórios sobre política e povo + eleições, comente se quiser.

É incrível o que ano de eleição faz com o país:

Pontos contra:

  • Torna a TV aberta insuportavelmente chata
  • Inunda de lixo (placas de propaganda etc) as ruas e avenidas da cidade
  • Faz com que você, eleitor, perca tempo lendo um monte de mentiras pra tentar escolher aquela que mais te agrada, embora saiba que, na maior parte do tempo o engodo é temporário e a realização das mentiras; também conhecidas como promessas de campanha, só vai acontecer se houver uma revolta popular
  • Aumenta em muitos porcento a poluição visual e auditiva da cidade

Pontos a favor:

  • movimenta o dinheiro (embora muito dele sujo) no sentido de que dá trabalho a milhares de pessoas, desde o fabricante das plaquetas de propaganda até os abanadores de bandeirolas nas esquinas dando oportunidades de trabalho a gente que nem sempre o tem
  • faz com que alguns candidatos tenham que fazer algo positivo durante o período de campanha (mesmo que a “compra” de votos seja ilegal, ainda tem o lado do miserável que está faminto e desesperado que fica feliz ao receber uma cesta básica)
  • o período de eleições também acaba😀
  • traz à tona a discussão (nem sempre elegante) a respeito das reais necessidades da cidade/estado/país

 

Procurei aqui colocar alguns pensamentos que me ocorreram, comentários para enriquecer a lista são bem vindos🙂

 

 

Publicado por: lezz | setembro 16, 2010

Verificando se um processo está executando

Muitas vezes, ao iniciar uma sessão digitamos os mesmos comandos, sempre!

Esse tipo de comportamento leva a um desperdício de tempo e muitas vezes acaba enchendo a paciência😛

Eu mesmo estava tão acostumado a executar o fetchmail sempre que abria um terminal pela primeira vez no dia.

Até que encheu ter que fazer isso. E pra evitar que o fetchmail reclame quando for iniciar,
nada mais natural que verificar se ele já está executando.

Tá, é possível fazer isso com uma combinação de ps + grep + cut, mas tem uma maneira mais fácil: usando o comando pidof.

O trecho a seguir, verifica se o fetchmail está rodando com o comando pidof e, caso não esteje, inicia ele como daemon pra executar a cada 10 minutos.

FPID=$(pidof fetchmail)
if [ “$FPID”x == “”x ]; then
fetchmail -d 900
fi
unset FPID

Eu coloquei no meu .bashrc (por razões históricas coloco a inicialização ali) e pronto, uma coisa a menos pra lembrar todos os dias ;-D

Publicado por: lezz | setembro 13, 2010

Usando Awesome e Freemind/Freeplane sem problemas com janelas

Um problema chato que acontece com o freemind e freeplane no awesome é que ao iniciar qualquer um deles, a janela fica pequena por padrão e não atende aos comandos de resize e maximize, tornando praticamente inutilizável esses dois softwares.

Para corrigir esse problema, basta exportar as variáveis de ambiente a seguir:


# para o freemind e freeplane funcionarem corretamente no awesome wm
_JAVA_AWT_WM_NONREPARENTING=1; export _JAVA_AWT_WM_NONREPARENTING
AWT_TOOLKIT=MToolkit; export AWT_TOOLKIT

Aqui eu coloquei no meu .bashrc e voi-lá, funcionou.

A dica da variável veio direto do wiki do awesome (http://awesome.naquadah.org/wiki/Problems_with_Java )

Edição: Faltou exportar a variável _JAVA_AWT_WM_NONREPARENTING na primeira
versão do texto😦

🙂

Older Posts »

Categorias