Arquivos Mensais: fevereiro 2008

Python: Argumentos da função print

Em python, você pode misturar variáveis à função print de duas formas:

x, y, z = 1, 2, 3
print "x =", x, "\ny =", y, "\nz =", z

A outra forma, que eu prefiro, será familiar aos acostumados a C e ao printf():

x, y, z = 1, 2, 3
print "x = %d\ny = %d\nz = %d" % (x, y, z)

Alguns dos caracteres possíveis são:

%c Caracteres
%s Strings
%d ou %i Inteiros (em base 10)
%o Inteiros (em base 8 )
%x Inteiros (em base 16)
%f ou %g Floats*

*%f mostrará o número sempre como float, ex: 5.5000; enquanto %g irá reduzí-lo, ex: 5.5

Outra vantagem desse modo é poder colocar espaços automáticamente, para que o número sempre ocupe um determinado espaço. Experimente rodar:

print "%3d\n%3d" % (50, 150)

para ver do que estou falando.

Publicidade

Dvorak ou QWERTY?

Teclados são tão comuns no nosso dia-a-dia que sequer pensamos na hora de usá-los, mas você já reparou como sua mão sobe e desce na hora de usá-lo? Além disso, a mão esquerda trabalha muito mais que a direita, já que duas das letras mais usadas no português estão lado a lado (“a” e “s”).

Mesmo em inglês, a disposição das teclas não ajuda. Foi pensando nisso que Dvorak criou o teclado que recebe seu nome. Ele estudou quais as letras mais usadas e quais os dígrafos mais comuns para que eles ficassem na fileira central (home row). O teclado inglês é obviamente diferente do teclado brasileiro, mas a teoria é a mesma.

A transição é um pouco difícil sim, mas treinando meia hora por dia já dá para ir se acostumando. Você pode treinar seu touch typing enquanto aprende, além de ser um exercício interessante.

Outros pontos positivos são:

  • É 1337;
  • Evita tendinite e outras L.E.R.;
  • Provar para si mesmo que você consegue e
  • Depois de acosumado, algumas pessoas dizem escrever mais rápido.

Emesene, um cliente MSN multiplataforma

O emesene é um cliente MSN escrito em python e GTK, podendo ser usado em várias plataformas, incluindo Linux, BSDs, Mac OS X, Windows, etc. Ainda não há uma versão 1.0, mas o SVN é atualizado semanalmente.

A última revisão enquanto escrevo (1013) já possui transferência de arquivos completa (receber e enviar), e recebe mensagens manuscritas, além de ter plugins que implementam novas funções.

A longo prazo, o projeto contará com suporte a webcam, voice clips, winks e não só receber, como também enviar mensagens manuscritas.

Para instalar a versão do SVN:

cd caminho/para/ # o comando a baixo criará uma pasta chamada emesene/
svn co https://emesene.svn.sourceforge.net/svnroot/emesene/trunk/emesene emesene

E depois, para atualizar:

cd caminho/para/emesene
svn up

Se você quiser voltar a uma revisão anterior (troque 1000 pela revisão adequada):

cd caminho/para/emesene
svn up -r 1000

Instalando Splashy no ArchLinux

A maioria das distribuições de Linux atuais apresenta uma tela quando o sistema está sendo iniciado, mostrando uma barra que exibe o andamento do processo. Instalá-la no Archlinux é simples, basta seguir estes passos:

pacman -S initscripts-splash directfb

Isso irá instalar directfb, uma dependência do splashy e os scripts necessários para fazê-lo funcionar. Durante a instalação do initscripts-splash, os seguintes arquivos serão salvados com .pacsave no final:

/etc/rc.local.shutdown.pacsave
/etc/rc.local.pacsave
/etc/rc.conf.pacsave
/etc/inittab.pacsave

O mais simples a se fazer é renomear os arquivos *.pacsave sem o .pacsave. Com esse passo, os arquivos intalados por initscripts-splash serão sobreescritos com os originais, não há perigo nisso:

mv /etc/rc.local.shutdown{.pacsave,}
mv /etc/rc.local{.pacsave,}
mv /etc/rc.conf{.pacsave,}
mv /etc/inittab{.pacsave,}

Agora editamos o arquivo /etc/rc.conf e adicionamos

SPLASH="splashy"

ao arquivo.

Resolvidas as dependências, podemos instalar o splashy (use o aurbuild):

aurbuild -s splashy

A compilação é bastante rápida, até em um Pentium III de 700MHz. Enquanto isso, editamos mais dois arquivos: primeiro abra /boot/grub/menu.lst e na linha do kernel, adicione “quiet vga=791 splash” (a ordem não importa); depois, abra /etc/mkinitcpio.conf e adicione splashy ao final da linha HOOKS=" ... splashy".

Certifique-se de que a compilação e a instalação do splashy foram bem sucedidas e rode:

mkinitcpio -p kernel26

Provavelmente seu kernel é kernel26 como no exemplo a cima, mas se for outro, modifique o nome.

É isso. Lembre-se de toda vez que atualizar o splashy ou mudar seu tema, rodar mkiniticpio -p <nome do kernel>. O tema padrão é bastante simples: um fundo preto, com uma barra branca que, conforme é preenchida, fica azul.

Lisp: Calculando juros

Ultimamente tenho me interessado por ações na bolsa, poupanças, juros, etc. Para me ajudar nos cálculos, desenvolvi esse pequeno programa em lisp, que então pode ser chamado com: juros valor-inicial juros-mensal meses [acréscimo-mensal]

#!/usr/bin/clisp
(defun calc-juros (valor juros)
  "Calcula valor de juros (em porcento) sobre valor."
  (* valor (/ juros 100.0)))

(defun soma-juros (valor juros)
  "Calcula valor de juros (em porcento) e soma ao valor original."
  (+ valor (calc-juros valor juros)))

(defun total (valor juros meses &optional (deposito-mensal 0))
  "Calcula o valor total depois de alguns meses com juros."
  (total-itin valor juros meses deposito-mensal))

(defun total-itin (valor juros restantes deposito-mensal)
  (if (= restantes 0)
    valor
    (total-itin (+ deposito-mensal (soma-juros valor juros))
                juros
                (1- restantes)
                deposito-mensal)))

;; Para fazer funcionar a partir do shell:
(format t "~a"
(cond ((= (length ext:*args*) 4) (total (read-from-string (first ext:*args*))
                                        (read-from-string (second ext:*args*))
                                        (read-from-string (third ext:*args*))
                                        (read-from-string (fourth ext:*args*))))

      ((= (length ext:*args*) 3) (total (read-from-string (first ext:*args*))
                                        (read-from-string (second ext:*args*))
                                        (read-from-string (third ext:*args*))))

      (t "juros valor-inicial juros-mensal meses [deposito-mensal]")))