Arquivo para a categoria 'Programação'

Subversion: Solucionando o erro “Não foi possível abrir uma sessão ra_local para URL”

Boa tarde pessoal, tudo bem?

Hoje, no desenvolvimento de um projeto, tive um problema ao dar um commit no Subversion (SVN).

Após muito pesquisar no Google, sem alguma solução definitiva e funcional, resolvi fazer um backup do projeto para testar algumas hipóteses que havia imaginado, e, felizmente, cheguei a tão simples e esperada fórmula para resolução:

1º passo: Antes de qualquer coisa, faça um backup do seu projeto;

2º passo: No final da última linha do erro, ele mostra um diretório. Copie seu caminho! No meu caso é /media/Arquivos/Subversion/Projeto, pois no meu erro:

svn: Não foi possível abrir uma sessão ra_local para URL
svn: Não foi possível abrir o repositório ‘file:///media/Arquivos/Subversion/Projeto

3º passo: Remova a pasta .svn de dentro desse diretório. Ou seja, via terminal acesse a pasta que apareceu no erro e apague a pasta oculta .svn. No meu caso:

cd /media/Arquivos/Subversion/Projeto
rm -rf .svn

Obs: Também é possível fazê-lo via modo gráfico, mas não vejo necessidade de mostrá-lo, pois dificilmente um usuário comum irá usar um repositório SVN, hehe.

E pronto! Só dar um commit e poderá notar que o problema estará resolvido (ao menos espero)!

Um abraço,

-Tiago Hillebrandt

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.