Esempio n. 1
0
def need_update():
    size = len(DOMAIN_CHARS)
    squared = size * size
    keys = (Prefix.all(keys_only=True).filter('length', 2)
            .order('__key__').fetch(1000))
    if len(keys) == 1000:
        keys.extend(Prefix.all(keys_only=True).filter('length', 2)
                    .filter('__key__ >', keys[-1]).fetch(1000))
    if len(keys) == squared:
        oldest = (Prefix.all(keys_only=True).filter('length', 2)
                  .order('timestamp').fetch(100))
        return [key.name() for key in oldest]
    existing = set([key.name() for key in keys])
    result = []
    for c1 in DOMAIN_CHARS:
        for c2 in DOMAIN_CHARS:
            name = c1 + c2
            if name not in existing:
                result.append(name)
    return result
Esempio n. 2
0
def main():
    for name in 'ab as ax ur we'.split():
        prefix = Prefix(key_name=name, length=len(name))
        prefix.count_domains()
        print prefix
        suffix = Suffix(key_name=name, length=len(name))
        suffix.count_domains()
        print suffix
    for length in range(3, 7):
        prefix = DotComPrefix(key_name='urcollection'[:length], length=length)
        prefix.count_domains()
        print prefix
        suffix = DotComSuffix(key_name='urcollection'[-length:], length=length)
        suffix.count_domains()
        print suffix
Esempio n. 3
0
def main():
    one = {}
    two = {}
    total = 0
    for c1 in DOMAIN_CHARS:
        query = Prefix.all().filter('length', 2)
        query.filter('__key__ >', db.Key.from_path('prefixes_prefix', c1))
        next = chr(ord(c1) + 1)
        query.filter('__key__ <', db.Key.from_path('prefixes_prefix', next))
        one[c1] = 0
        for prefix in query.fetch(100):
            total += prefix.count
            one[c1] += prefix.count
            two[prefix.key().name()] = prefix.count
    print 'TOTAL =', total
    print
    print_counts('ONE', one)
    print
    print_counts('TWO', two)
Esempio n. 4
0
def main():
    one = {}
    two = {}
    total = 0
    for c1 in DOMAIN_CHARS:
        query = Prefix.all().filter("length", 2)
        query.filter("__key__ >", db.Key.from_path("prefixes_prefix", c1))
        next = chr(ord(c1) + 1)
        query.filter("__key__ <", db.Key.from_path("prefixes_prefix", next))
        one[c1] = 0
        for prefix in query.fetch(100):
            total += prefix.count
            one[c1] += prefix.count
            two[prefix.key().name()] = prefix.count
    print "TOTAL =", total
    print
    print_counts("ONE", one)
    print
    print_counts("TWO", two)
Esempio n. 5
0
def main():
    for name in 'ab as ax ur we'.split():
        prefix = Prefix(key_name=name, length=len(name))
        prefix.count_domains()
        print prefix
        suffix = Suffix(key_name=name, length=len(name))
        suffix.count_domains()
        print suffix
    for length in range(3, 7):
        prefix = DotComPrefix(key_name='urcollection'[:length], length=length)
        prefix.count_domains()
        print prefix
        suffix = DotComSuffix(key_name='urcollection'[-length:], length=length)
        suffix.count_domains()
        print suffix
Esempio n. 6
0
def index(request):
    size = len(DOMAIN_CHARS)
    squared = size * size
    names = need_update()
    random.shuffle(names)
    names = names[:20]
    initial = {'prefixes': ' '.join(names)}
    prefix_form = PrefixForm(request.POST or None, initial=initial)
    if prefix_form.is_valid():
        prefixes = prefix_form.cleaned_data['prefixes'].split()
        if not prefixes:
            prefixes = names
        for prefix in prefixes:
            update_prefix(prefix)
        return HttpResponseRedirect(request.path)
    matrix = []
    for letter in DOMAIN_CHARS:
        matrix.append([None] * size)
    domain_count = 0
    prefix_count = 0
    for prefix in Prefix.all().filter('length', 2):
        x = DOMAIN_CHARS.index(prefix.key().name()[1])
        y = DOMAIN_CHARS.index(prefix.key().name()[0])
        matrix[y][x] = prefix.count
        domain_count += prefix.count
        prefix_count += 1
    table_rows = []
    sum_row = [0] * size
    for y, letter in enumerate(DOMAIN_CHARS):
        for x in range(size):
            if matrix[y][x]:
                sum_row[x] += matrix[y][x]
        table_rows.append((letter, matrix[y],
                           sum([count for count in matrix[y] if count])))
    if prefix_count:
        domain_estimate = domain_count * squared / prefix_count
    else:
        domain_estimate = 'unknown'
    letters = DOMAIN_CHARS
    return render_to_response(request, 'prefixes/index.html', locals())