-
Notifications
You must be signed in to change notification settings - Fork 0
/
2014-06-12 iplus1.txt
68 lines (42 loc) · 1.81 KB
/
2014-06-12 iplus1.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
id: 64
date: 2014-06-12
pos: 0
title: iplus1
ok iplus1d is back, redoing iplus1c to be a sort of testclient for how the server would interact
going to be using redis since lool0 insists on it.
basic protocol (to iplus1d):
ADD <nid> <lang> <sentence>
LINK <native lang> <nid> <target lang> <tid>
UNLINK <nid> <tid>
UPDATESTR <nid> <sentence>
redis setup:
on ADD/UPDATESTR:
SET <nid> <sentence>
SET <nid>-tokens <token 1>:<token 2>:<token 3>
SET <nid>-<target lang> <tid 1>:<tid 2>
on LINK
SET <nid>-<trans lang code> <tid 1>:<tid 2>
HSET <target-lang>-<native-lang> <redis id> <native id>:<translated id>
#SET <target lang>-<native lang>-<redis id>-translations <tid 1>:<tid 2>:<tid 3>
#SET <target lang>-<native lang>-<redis id>-tokens <token 1>:<token 2>:<token 3>
For user input/getting data:
USERSTART <native lang> <target lang>
USERSENTENCE <sentence>
USEREND
the client will start a new connection per user.
USERSENTENCE will be what is read out of a user's anki deck
USEREND will tell the server that it is done sending sentences and that it should parse the data, and send back the results
words = [<all words parsed from USERSENTENCEs>]
results = []
list = HGETALL(<target lang>-<native lang>)
for l in list:
nid, tid = l
if HGET(tid-<native lang>):
for w in GET(tid-tokens)
if w not in words:
results.append([nid, tid])
------------------------------------------------------------
Ok new plan sortof: Have things done like the old iplus1d, except instead of keeping the strings in memory I just keep them in redis?
like a sentence struct will hold the id for the string. It wont be as memory efficient as possible, but lool0 seems to have some misconceptions about my memory usage anyway.
this will kinda make most of the code in libiplus1 irrelevant or really locked down to this one specific usecase.
.