#!/usr/local/bin/python # -*- coding: shift_jis -*- import sys import colorsys import random import re import cgi me = "pair.cgi" class Col: def __init__(self, h0, s0, v0): self.h = h0 self.s = s0 self.v = v0 def add(self, c0): self.h = self.h + c0.h self.s = self.s + c0.s self.v = self.v + c0.v def toStr(self) : h = float(self.h) / 360 s = float(self.s) / 100 v = float(self.v) / 100 B = colorsys.hsv_to_rgb(h, s, v) ret = "#%01X%01X%01X" %(B[0]*0Xf, B[1]*0Xf, B[2]*0Xf) return ret def closeTo(self, c0, thres) : # h2 = (self.h - c0.h) * (self.h - c0.h) s2 = (self.s - c0.h) * (self.s - c0.s) v2 = (self.v - c0.v) * (self.v - c0.v) return s2 + v2 < thres def countLine(fn): try: f=open(fn, 'r') except: return 0 i=0 for line in f.readlines(): i=i+1 f.close() return i form = cgi.FieldStorage() def_name = "%010x"%((1<<30) * random.random()) name = def_name ptn = re.compile("^.*(\.\.|\/).*$") count=0 if form.has_key('name'): name = form['name'].value if ptn.match(name, 0): name = def_name fn = "/home/kei/public_html/cl/log/" + name + ".log" count = countLine(fn) f=open(fn, "a") flag = 0 if form['eval'].value == "good": flag = 1 f.write("+1 ") elif form['eval'].value == "bad": flag = 1 f.write("-1 ") if flag == 1: c0 = form['c1'].value c1 = form['c2'].value for j in range(1,4): cv = eval("0X" + c0[j]) f.write("%d:%d "%(j,cv)) for j in range(1,4): cv = eval("0X" + c1[j]) f.write("%d:%d "%(3+j,cv)) f.write("\n") f.close() Col0 = Col(0, 0, 100) while 1: Col1 = Col(random.random() * 360, random.random() * 100, random.random() * 100) if Col1.v > 70 : continue break while 1: Col2 = Col(random.random() * 360, random.random() * 100, random.random() * 100) if Col2.v < 30 : continue if Col2.v - Col1.v < 25 : continue if Col1.closeTo(Col2, 900) : continue break c0 = Col0.toStr() c1 = Col1.toStr() c2 = Col2.toStr() print """Content-Type:text/html
[戻る] / [ログを見る] / [初めから] / [中断](リンク先をお気に入りに追加して下さい)