Zahlensysteme + modifikationen an deployserver und fakeftp

This commit is contained in:
trollhase 2013-09-23 15:49:09 +02:00
parent d33988f3c5
commit 7bf087e64f
3 changed files with 91 additions and 1 deletions

View File

@ -124,5 +124,6 @@ def deploy(port=1234,deploys=[],logger=NullLogger()):
run(host="",port=port)
deploy(deploys=[
Deploy(key="foo",commands=[ExecCommand("touch fu.txt",shell=True)], cwd="/home/madmaurice/Public/")
Deploy(key="frontend",branch="master",commands=[ExecCommand("./deploy_master.sh",shell=True)]),
Deploy(key="frontend",branch="develop",commands=[ExecCommand("./deploy_develop.sh",shell=True)])
],logger=FileLogger("deploy.log"))

View File

@ -3,6 +3,7 @@ import threading
import socket
from random import randint
import datetime
class Utils:
@staticmethod
def mask(rights):
@ -655,6 +656,8 @@ class LineReader:
class FTPHandler(SocketServer.BaseRequestHandler):
logger = StdoutLogger()
rootDirectory = Directory("")
authorizer = FailAuthorizer()
def log(self, message):
self.logger.log(self,message)
@ -729,6 +732,8 @@ class FTPHandler(SocketServer.BaseRequestHandler):
self.log("Client disconnected")
#Sample configuration:
handler = FTPHandler
handler.authorizer = AnonymousAuthorizer()

84
zahlensysteme.py Normal file
View File

@ -0,0 +1,84 @@
class NumberException(Exception):
pass
class NumericSystemException(Exception):
pass
class Zahlensystem:
chars = map(str, range(0,10)) + map(chr, range(ord('A'), ord('F')+1))
def __init__(self, basis):
self.basis = int(basis)
if self.basis > 16 or self.basis < 2:
raise NumberException("Numeric system %d is invalid" % (self.basis,))
def fromNum(self, num):
if type(num) != str:
num = str(num)
if "." in num:
pre, post = num.split(".",2)
else:
pre = num
post = ""
value = 0
for i,c in enumerate(pre):
e = (len(pre)-i-1)
try:
f = self.chars[:self.basis].index(c.upper())
except ValueError:
raise NumberException("%d isn't a %d based number" % (f,self.basis))
value += f * self.basis**e
for i,c in enumerate(post):
e = (-i-1)
try:
f = self.chars[:self.basis].index(c.upper())
except ValueError:
raise NumberException("%d isn't a %d based number" % (f,self.basis))
value += f * self.basis**e
return value
def toNum(self, num):
num = float(num)
if num < 0:
neg = True
num = -num
else:
neg = False
pre, post = divmod(num, 1)
v = ""
if pre != 0:
n = pre
while n != 0:
n, r = divmod(n, self.basis)
v = self.chars[int(r)] + v
else:
v = "0"
if post != 0:
v = v + "."
n = post
while n != 0:
r, n = divmod(n * self.basis, 1)
v = v + self.chars[int(r)]
if neg:
v = "-" + v
return v
if __name__ == '__main__':
num = raw_input("Num> ")
fr = int(raw_input("From> "))
to = int(raw_input("To> "))
print Zahlensystem(to).toNum(Zahlensystem(fr).fromNum(num))