Arquivo para Maio, 2009

Sugestão de Nome para Firewall no Ubuntu

Buenas galera!

Hoje estou elaborando um post diferente! Estou desenvolvendo uma interface gráfica para o iptables, pois hoje todas disponíveis para GNOME são simples e, por exemplo, o Firestarter não apresenta a possibilidade de escolher em qual protocolo determinada porta deverá ser aberta/fechada.

Firewall

Firewall

Contudo, a interface gráfica é muito parecida com a do FireStarter, como pode-se ver acima, porém está sendo desenvolvida do zero utilizando a linguagem Python.

Preciso de um nome para o software. Portanto, quem tiver sugestões favor postar nos comentários!

Até mais pessoal!

GCJ Beta 2008 – Triangle Trilemma

Buenas galera!

Segue a resolução de mais um problema do Google Code Jam 2008!

#!/usr/bin/python
#
# Google Code Jam 2008 – GCJ Beta 2008 – Triangle Trilemma – Large Input
# Copyright (C) 2009 Tiago Hillebrandt <tiagohillebrandt@gmail.com>
#

import
os

f = open(“A-large-practice.in”)

def integer():
s = f.readline()
s = s.strip()
s = int(s)
return s

def array():
s = f.readline()
s = s.strip()
s = s.split()

for i in range(len(s)):
s[i] = int(s[i])

return s

def angleType(a, b, c):
if ((a == b + c) or (b == c + a) or (c == a + b)):
return ” right”
else:
if ((a > b + c) or (b > a + c) or (c > a + b)):
return ” obtuse”
else:
return ” acute”

def triangleTrilemma():
for i in range(integer()):
coords = array()

x1 = coords[0]
y1 = coords[1]
x2 = coords[2]
y2 = coords[3]
x3 = coords[4]
y3 = coords[5]

if ((x1 – x2) * (y1 – y3) == (x1 – x3) * (y1 – y2)):
triangle = “not a”
else:
a = (x1 – x2) ** 2 + (y1 – y2) ** 2
b = (x1 – x3) ** 2 + (y1 – y3) ** 2
c = (x3 – x2) ** 2 + (y3 – y2) ** 2

if ((a == b) or (b == c) or (c == a)):
triangle = “isosceles” + angleType(a, b, c)
else:
triangle = “scalene” + angleType(a, b, c)

print “Case #” + str(i + 1) + “: “ + triangle + ” triangle”

if __name__ == ‘__main__’:
triangleTrilemma()

E novamente, quem quiser baixar, clique aqui.

Um abraço e até a próxima.

Round 1A – Minimum Scalar Product

Buenas pessoal!

A partir de hoje vou postar, aos poucos e conforme for conseguindo resolver, a resposta de vários desafios apresentados no Google Code Jam 2008, com o objetivo de estudar para o desafio que ocorrerá este ano.

Esta resolução, em Python, funciona para o produto escalar mínimo com a entrada pequena (small), assim como para a grande (large), bastando apenas renomear o arquivo aberto na segunda linha para alternar entre as entradas.

#!/usr/bin/python
#
# Google Code Jam 2008 – Round 1A
# Minimum Scalar Product – Large Input
#
# Copyright (c) 2009 Tiago Hillebrandt <tiagohillebrandt@gmail.com>
#

import os

f = open(“A-large-practice.in”)

def integer():
s = f.readline()
s = s.strip()
s = int(s)
return s

def coordinates():
s = f.readline()
s = s.strip() # remove blank spaces

s = s.split() # convert to array
for
i in range(len(s)):

s[i] = int(s[i])
return
s

def minimumScalarProduct():
for i in range(integer()):
integer() # read only to ignore it

x = coordinates()
y = coordinates()

x.sort()
y.sort()
y.reverse()

result = 0

for j in range(len(x)):
result += x[j] * y[j]

print “Case #” + str(i + 1) + “: “ + str(result)

if __name__ == ‘__main__’:
minimumScalarProduct()

Se preferir, você pode baixar o código-fonte e a entrada grande diretamente aqui.

Um abraço e até mais.

Enviando uma notificação para o notificador (notify-osd) do Jaunty

Olá pessoal, tudo bem?

Hoje estou publicando um script implementado em Python que permite enviar uma notificação para o notify-osd do Jaunty! No meu caso, integrei o script com o plugin Song Change, do Audacious, para exibir uma notificação com o nome da música e o artista, como mostra a imagem abaixo.

Exemplo de notificação enviada pelo script

Exemplo de notificação enviada pelo script

enviar-notify.py

#!/usr/bin/python
try:
import gtk
import pygtk
import os
import os.path
import pynotify
import sys
pygtk.require(‘2.0′)
except:
print “Erro: necessarios python-notify, python-gtk2 e gtk”
if __name__ == ‘__main__’:
if not pynotify.init(“notificacao”):
sys.exit(1)

n = pynotify.Notification(sys.argv[1], sys.argv[2], “/usr/share/icons/Human/scalable/status/dialog-info.svg”)
n.set_timeout(5000) # 5 segundos

if not n.show():
print “Falhou ao enviar notificacao”

sys.exit(1)

Modo de uso:

$ chmod +x enviar-notify.py
$ ./enviar-notify.py “Titulo” “Seu Texto”

É isso então pessoal!

Se preferir, baixe o script completo neste link.

Um abraço e até mais ver.

Ativando o Notificador de Atualizações no Jaunty

Buenas galera!

Como vocês devem ter notado, no Ubuntu Jaunty o ícone do notificador de atualizações (update-manager) não está disponível na barra de tarefas (área de notificação).

No meu ponto de vista desabilitá-lo trata-se de um regresso, afinal para um usuário nada mais útil do que um aviso, na interface gráfica, de que há atualizações disponíveis para o seu computador!

Se você  deseja ativá-lo, é só abrir o Terminal (Aplicativos > Acessórios > Terminal) e digitar:

$ gconftool -s –type bool /apps/update-notifier/auto_launch false

Agora basta reiniciar seu computador e pronto, seu notificador de atualizações está ativo e funcional, como no Intrepid!

Ícone do Gerenciador de Atualizações na Área de Notificações

Ícone do Gerenciador de Atualizações na Área de Notificações

Valeu galera, até mais!