Tecla de atalho do Guake e 40 Wallpapers mto legais!

abril 16th, 2007

No post anterior sobre o Guake eu esqueci de falar…

a tecla de atalho do guake é F12, mas por enquanto só funciona com o Metacity… Valeu Duda Nogueira!

Por enquanto só funciona com Metacity pois o Guake faz o keybinding lá no gconf, associando “guake –showhide” com a tecla F12.

Outros parâmetros do Guake:

guake -h -  Mostra os parâmetros disponíveis

guake –showhide - Mostra/Esconde a janela de terminal do Guake.

guake –preferences - Abre a janela de preferências

guake –about - Abre a janela de “about” do Guake

guake –quit -  Fecha a instância atual do Guake

Mudando de assunto, gostei muito desse site com wallpapers “poucos e bons”.

Desktopography

Vale a pena visitar!

Guake 0.0.1alpha

abril 15th, 2007

Depois de algumas semanas de suor, incansáveis buscas de documentação e, principalmente, ajuda de amigos vos apresento a primeira versão alpha do Guake-Terminal.

Guake é um aplicativo desenvolvido em pygtk, que segue a mesma idéia do Tilda, e Yakuake. Trata-se de um terminal drop-down, “estilo quake” para Gnome e Xfce. A idéia é ter todas as boas funcionalidades do Yakuake no Gnome.

O que me levou a querer desenvolvê-lo foi justamente a falta que me fazia ter algo parecido com o Yakuake, no entanto não gosto do Tilda, e gosto menos ainda de usar programas em QT.

O Guake está com uma lista de TODO enorrrrrrrme e aos poucos estou fazendo as modificações. Inclusive estou procurando colaboradores no desenvolvimento do Guake ou da página do projeto.

Para quem quiser testar tem duas opções:

SVN

svn co https://guake-gnome-vte.svn.sourceforge.net/svnroot/guake-gnome-vte

Ou o .deb gerado 16/04/2007 - 02:23:

Download para Debian/Ubuntu

Como já disse, a versão está em pleno desenvolvimento, mas ainda está muito imatura e lotada de bugs. Testadores são bem vindos. Opiniões também!

Screenshots:






Veja um screencast…

Meus agradecimentos a Og Maciel, Walter Cruz, Pretto e Cypherbios pela paciência e disponibilidade em que sempre se mostram para me ajudar. Esses caras são os principais “culpados” do Guake estar dando certo.

Máquina Virtual e Segurança(Caminhando juntos)

abril 13th, 2007

A segurança ao navegar pela web é a preocupação número 1, para cada vez mais usuários(principalmente usuários windows –sem preconceito–). Claro que apenas você pode se proteger de ataques ou impedir que sua senha bancária seja capturada por um daqueles e-mails que promete fotos tentadoras. Contudo se você não souber identificar o golpe pode acabar entregando seus dados (e seu dinheiro) aos bandidos achando que está recadastrando algo. Porém mesmo que você esteja alerta e treinado para escapar de tudo isso o que irá impedir que um filho, namorada, amigo ou outro usando seu computador acabe por clicar em algum pop-up ou link mal intencionado? O que vai impedir que, enquanto você está fora, um key logger seja instalado em seu PC e possa entregar tudo que você digitar no teclado para pessoas agindo em má-fé ? Por isso apresento a você, um jeito de implementar uma máquina virtual em seu sistema operacional para permitir uma navegação pela internet um pouco mais tranqüila(ou menos desconfortante ).
Um SO dentro de outro SO
Seu sistema principal (hospedeiro) pode ser usado para suas tarefas off-line e o sistema virtualizado (visitante) para navegar na internet. Esse esquema monta uma espécie de caixa aonde todas as operações do visitante são isoladas e não afetam o sistema hospedeiro. Qualquer tipo de malware será “isolado” e ficará restrito ao sistema virtualizado, sem tomar conhecimento algum do hospedeiro. Com esta virtualização, através de uma imagem marcada como somente-leitura, você garante que a cada inicialização ela estará sempre com sua configuração inicial, portanto sem adição de softwares indesejados. Com isso, usar um sistema virtual para navegar na web pode não deixá-lo 100% seguro, mas já diminuirá as chances de ataques automáticos de alcançarem seu objetivo. Meu conselho com relação à isso é: não pense no Windows, principalmente quem está iniciando no mundo livre, e tem alguns “medos”! Todos sabemos que este sistema não é capaz de oferecer tanta segurança, e mesmo para os críticos, com o windows XP e, o totalmente fora de mão Vista, seria preciso tomar conhecimento sobre licenciamento e um uso absurdo de hardware, principalmente de memória e HD. Aqui onde trabalho, não posso instalar o linux, por isto recorri à virtualização. Através do site do VMware, existem as VMware Virtual Appliances, que são pacotes pré-configurados e pré-instalados que combinam em uma única máquina virtual diversas opções entre sistemas operacionais. Basta você escolher uma das opções listadas, baixar o zip/tgz, descompactar, ligar a máquina virtual, procurar no diretório salvo, o arquivo vmx e pronto! Ah, e sem preocupação com instalação, formatação ou coisas do gênero. O único porém, é a memória configurada para 256 MB de RAM(ou talvez não).
A minha VM escolhida foi o Ubuntu 6.10 Edgy:

Faça sua escolha também !!

Referências:
http://www.meiobit.com/artigo/navegando_com_mais_seguranca_ubuntu_em_maquina_virtual
http://linhadefensiva.uol.com.br/2006/01/vmware-browser-appliance/

Threads em Pygtk

abril 13th, 2007

Threads em python não precisam ser chatas, descobri hoje!Há tempos que tento entender isso. Usei no pyBaixador de Trabalho quase o mesmo codigo que mostrarei agora, só que não entendia bem o que estava acontecendo…

Primeiro é necessário entender o que é um decorator.

Em python é possível fazer com que uma função “decore” a outra, sendo assim, quando uma função for chamada, outra função atua sobre ela como uma espécia de interface. A sintaxe é simples.

Veja:

[python]

def decorador(funcao):
print “O nome da funcao decorada eh:”, funcao.__name__
print funcao.__dict__
print funcao.__doc__
return funcao

@decorador
def printer(string=”OLA MUNDO”):
“”"
Essa funcao imprime na tela o valor dado
“”"
print string

[/python]

Note que o “@” em @decorador é o que determina que a função decorador atuará como um decorator. E sintáticamente ele deve estar acima da função a ser decorada, no caso é a função printer.

Parece difícil, mas é fácil olhando dessa forma!

Vamos chamar a função decorada:

[python]
printer()
[/python]

Resulta em:

[code]
O nome da funcao decorada eh: printer
{}

Essa funcao imprime na tela o valor dado

OLA MUNDO
[/code]

Sendo assim podemos escrever um decorator que funcione como fábrica de threads:

[python]
import threading
def threaded(funcao):
def wrapper(*args):
t = threading.Thread(target=funcao, args=args)
t.setDaemon(True)#se True, o script sai sem esperar pela thread
t.start()
wrapper.__name__ = funcao.__name__
wrapper.__dict__ = funcao.__dict__
wrapper.__doc__ = funcao.__doc__
return wrapper

@threaded
def infinito():
import time
while True:
print “Estou numa thread!\n\nPressione ENTER para continuar”
time.sleep(1)

infinito()
raw_input()

[/python]

A idéia é simples, mas como faço para aplicar isso em pygtk?

O GTK é bem tranqüilo para trabalhar com threads pois é thread-safe. Basta usarmos seus métodos especiais:

gtk.gdk.threads_init() - no inicio do codigo

e

gtk.gdk.threads_leave() - no final do codigo, mas antes do gtk.main()

esse métodos especiais fazem interação com o mainloop do gtk atuando no semáforo.

A seguir um exemplo na íntegra de como se faz:

[python]
#!/usr/bin/python
# -*- coding: utf-8 -*-

import gtk,sys,gobject,time
import threading,thread

def threaded(f):
def wrapper(*args):
t = threading.Thread(target=f, args=args)
t.setDaemon(True)#se true o programa sai sem esperar pela thread
t.start()

wrapper.__name__ = f.__name__
wrapper.__dict__ = f.__dict__
wrapper.__doc__ = f.__doc__

return wrapper

def sair(widget):
sys.exit(0)

@threaded
def tim(*args):
gtk.gdk.threads_init()
print “entrei no tim”
for iteration in reversed(xrange(1,11)):
print “iterando…”,iteration
texto.set_markup(”%d” % iteration)
time.sleep(1)
texto.set_markup(”BOOOM!“)
gtk.gdk.threads_leave()

janela=gtk.Window()
janela.set_default_size(300,300)
janela.connect(’destroy’,sair)
janela.set_title(”Threads do bem!”)
box=gtk.VBox()
texto=gtk.Label()
texto.set_markup(”CLIQUE!“)
texto.show()

box.pack_start(texto)
btn=gtk.Button(”Clicaqui!”)
btn.show()
btn.connect(”clicked”,tim)
box.pack_start(btn,False,False)
box.show()

janela.add(box)
janela.show()

gtk.gdk.threads_init()
gtk.main()

[/python]

Walter, valeu mais uma vez pela ajuda no entendimento
Referência

Vai um pouco de Assembly aí?

abril 12th, 2007

No 1º período do meu curso tive uma matéria chamada Organização de Computadores, como é um curso tecnólogo, trata-se de uma espécie de junção entre Introdução aos Sistemas Lógicos e Arquitetura e Organização de Computadores (ISL e AOC), da ciência da computação.

Enfim, gostei muito da disciplina mas foi meio corrido, me interessei por assembly mas o máximo que vi foi o assembly do processador hipotético do Neander… pena…

Mas numa das minhas velejadas por esse imenso oceano de informações encontrei esse tutorial de Assembly NumaBoa bem bacanudo!

Não que eu vá ser um belo escovador de bits, criar complexos módulos para o kernel do linux, mas vou ao menos entender um pouco de um assembly de verdade!(8086)