рдЯрд╛рд░рдирдЯреВрд▓ + рд▓реБрдЖ рд╕реАрдЦрдирд╛

рд▓реЛрдЧреЛ
рдореИрдВ рдЯрд╛рд░реЗрдВрдЯреВрд▓ рд╕реАрдЦрдиреЗ рдХреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВ рдЯрд╛рд░реЗрдВрдЯрдпреБрд▓рд╛ рдХреЗ рд╕рднреА рд▓рд╛рднреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛, рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХрдИ рд▓реЗрдЦ рдереЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ , рдпрд╣ рдФрд░ рдпрд╣ )ред рдпрд╣ рдкреЛрд╕реНрдЯ рдЯрд╛рд░реЗрдВрдЯрдпреБрд▓рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдЕрдЪреНрдЫрд╛рдЗрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдмреЙрдХреНрд╕ рд╕реЗ рдорд┐рд▓ рд╕рдХрддреА рд╣реИрдВред


рд╕реНрдерд╛рдкрд┐рдд


рдЕрд╕рд▓ рдореЗрдВ, рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓реА рд╡рд╣ рдереА рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рдиред рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рдореИрдХрдУрдПрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдХреБрдЫ рдЗрд╕ рдкрд░ рдЖрдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреАред рд╕рд╛рдЗрдЯ рдкрд░ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреИрдХреЗрдЬ рдпрд╛ рддреЛ рдХрд┐рд╕реА рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХрд╛рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рдпреЛрдЧ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рдЪреБрдХрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реНрд░реЛрдд рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ README рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред рдпрджрд┐ рд╕реНрд░реЛрдд рдЧрд┐рдЯ рд╕реЗ рдкрдВрдк рдХрд┐рдП рдЧрдП рд╣реЛрдВ рддреЛ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрдВрдк рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬрдм MacOS рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдбрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ - рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИред
рдпрджрд┐ рдЖрдк рдХрдВрд╕реЛрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ cmake рдХреЛ DEN DEN_CLIENT = true рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рджрд░рдЕрд╕рд▓, рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдорд┐рд▓рддрд╛ рд╣реИ, рдЕрдЧрд░ рдкреВрдЫрд╛ рдЬрд╛рдП рддреЛ рдХреНрд░рдорд╢рдГ src / box / tarantool_box рдФрд░ client / tarantool / tarantoolред

рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХрд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг / рдмреЙрдХреНрд╕ / рдЯрд╛рд░реЗрдВрдЯреВрд▓.рдХреЙрдл
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ slab_alloc_arena - рдпрд╣ рдЯрд╛рд░реЗрдВрдЯрдпреБрд▓рд╛ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реНрдореГрддрд┐ рдХреА рдорд╛рддреНрд░рд╛ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдпрд╣ рднреА рд░реЛ_рдкрд░_рд╡рд╛рд▓ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрддрдиреА рдЫреЛрдЯреА рдлрд╛рдЗрд▓реЗрдВ рдХреНрдпреЛрдВ рд╣реИрдВ))
рдЕрдм рдЪрд▓рд┐рдП рдордЬрд╝реЗрджрд╛рд░ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдЖрддреЗ рд╣реИрдВред рдЯрд╛рд░реЗрдВрдЯрдпреБрд▓рд╛ рдХреЛ рдХреЗрд╡рд▓ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рдпрд╣ рдЙрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХреНрдпрд╛ рдмреЗрд╡рдХреВрдл рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣ рдХрд┐рд╕ рдЖрдХрд╛рд░ рдХрд╛ рд╣реЛрдЧрд╛ред рджрд░рдЕрд╕рд▓, рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ рд╣рдо рдХреЗрд╡рд▓ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рддреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЦреНрдп рд╕реЗ: рдЬрдм рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдЪреБрдирддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИред рдПрдЪрдПрдПрд╕рдПрдЪ рд╕реВрдЪрдХрд╛рдВрдХ рдЧреИрд░-рдЕрджреНрд╡рд┐рддреАрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЧреИрд░-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХреНрд░рдордмрджреНрдз рд╕реВрдЪреА рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП TREE рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред рд╕реВрдЪрдХрд╛рдВрдХ рднреА рд╕рдордЧреНрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрдИ рд╕реНрдерд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдХреБрд▓: рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдореЗрдВ 5 рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдХреНрд╖реЗрддреНрд░ рдЧреИрд░-рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ, рдЬрдмрдХрд┐ рдкрд╣рд▓рд╛ + рджреВрд╕рд░рд╛ рдХреНрд╖реЗрддреНрд░ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ; рдЙрди рдкрд░ рд╣рдо рдмрд┐рдВрджреБ рдЪрдпрди рдХрд░реЗрдВрдЧреЗред рдЪреМрдереЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрддрд╛ рд╣реИред рдХреБрд▓ рд╣рдо рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рддреЗ рд╣реИрдВ:
space [0] .index [0] .type = "HASH" # рдЗрдВрдбреЗрдХреНрд╕ рдкреНрд░рдХрд╛рд░
space [0] .index [0] .unique = 1 # рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХрд╛ рд╕рдВрдХреЗрдд
рд╕реНрдкреЗрд╕ [0] .index [0] .key_field [0] .fieldno = 0 # рдЯрдкрд▓ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рд╕рдВрдЦреНрдпрд╛
space [0] .index [0] .key_field [0] .type = "NUM" # рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░
space [0] .index [0] .key_field [1] .fieldno = 1
space [0] .index [0] .key_field [1] .type = "NUM"

рд╣рдо рдкрд╣рд▓реЗ рдХреНрд╖реЗрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдЧреИрд░-рдЕрдиреВрдареЗ рд░рд┐рдХреЙрд░реНрдбреЛрдВ рдХреЗ рдПрдХ рдкреИрдХреЗрдЯ рдХреЗ рдирдореВрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рддреЗ рд╣реИрдВ:
space [0] .index [1] .type = "TREE"
space [0] .index [1] .unique = 0
space [0] .index [1] .key_field [0] .fieldno = 0
space [0] .index [1] .key_field [0] .type = "NUM"

рдкрд╣рд▓реЗ + рддреАрд╕рд░реЗ рдХреНрд╖реЗрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдХреНрд░рдордмрджреНрдз рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдПрдБ
space [0] .index [2] .type = "TREE"
space [0] .index [2] .unique = 0
space [0] .index [2] .key_field [0] .fieldno = 0
space [0] .index [2] .key_field [0] .type = "NUM"
space [0] .index [2] .key_field [1] .fieldno = 3
space [0] .index [2] .key_field [1] .type = "NUM"

рдЦреИрд░, рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
space [0] .enabled = 1

рдЕрдм рд╣рдо рдПрдХ рдЕрдиреНрдп рд╕реНрдерд╛рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗ рдЬрд╣рд╛рдВ рджреЛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕реНрддреВрдк рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ: рдкрд╣рд▓рд╛ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ, рджреВрд╕рд░рд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд╕рд░рд▓рддрдо рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреБрдВрдЬреА рдореВрд▓реНрдп рднрдВрдбрд╛рд░рдг:
space [1] .enabled = 1
space [1] .index [0] .type = "HASH"
space [1] .index [0] .unique = 1
space [1] .index [0] .key_field [0] .fieldno = 0
space [1] .index [0] .key_field [0] .type = "NUM"

рджрд░рдЕрд╕рд▓, рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде, рдЯрд╛рд░реЗрдВрдЯрдпреБрд▓рд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдЖрдкрдХреЛ рднрдВрдбрд╛рд░рдг рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдФрд░ рдЬрд╛рдУред
> ./src/box/tarantool_box --init-storage tarantool/src/box/tarantool_box: space 0 successfully configured tarantool/src/box/tarantool_box: space 1 successfully configured tarantool/src/box/tarantool_box: creating './00000000000000000001.snap.inprogress' tarantool/src/box/tarantool_box: saving snapshot './00000000000000000001.snap' tarantool/src/box/tarantool_box: done 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдИрдВ рдЬрд╣рд╛рдВ рд╕реЗ рд╣рдордиреЗ рдЯрд╛рд░реЗрдВрдЯрдпреБрд▓рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдерд╛ред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ wirk_dir рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдо рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
 > ./src/box/tarantool_box --background > ps xa | grep tarantool 5627 ?? Us 0:10.55 tarantool/src/box/tarantool_box --background 

рд╣реБрд░реНрд░реЗ! рдЖрдк рдбреЗрдЯрд╛ рдХреЛ рднрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред

рд╢реБрд░реБрдЖрдд рд╣реЛ рд░рд╣реА рд╣реИ

рдХрдВрд╕реЛрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкреЗрдВрдЯ рдХрд░реЗрдВ рдореИрдВ рдЕрдм рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ - рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХрд╛ рд╡рд┐рд╖рдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЕрдм рдореИрдВ рд▓реВрдЖ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдиреНрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ред рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВред рдЙрдирдХреА рдорджрдж рд╕реЗ, рдЖрдк рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХреБрдЫ "рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕" рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдХреЛрдб рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рддрдХрдиреАрдХреА рдореЙрдбрд▓ рдХреЛ рд╡реНрдпрд╡рд╕рд╛рдп рдореЙрдбрд▓ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реБрдЖ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рд╡рд╣рд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП, рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдЯрд╛рд░реЗрдВрдЯрдпреБрд▓рд╛ init.lua рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред

рд▓реЗрдЦрди рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╕рдордп, рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдерд╛, рд▓реБрдЖ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд░реНрд▓ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдХреЗ рдХрд╛рд░рдг, рд▓рд╛рд░ рдореЗрдВ рдкрд░реНрд▓ рд╕реЗ рдЕрдВрдХ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рд╡реЗ рдХрдВрд╕реЛрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдЖрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЬрдм рддрдХ рдЯрд╛рд░реЗрдВрдЯрдпреБрд▓рд╛ рдореЗрдВ рдПрдбреЗрдкреНрдЯрд░ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рд╣рдореЗрд╢рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╣рдо рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рдПрдХ рдлрд╝реАрд▓реНрдб рдХреЛ рджреВрд╕рд░реЗ рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рди рдФрд░ рд╡рд░реНрддрдорд╛рди рджрд┐рдирд╛рдВрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрджрд▓ рджреЗрдЧреАред рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╛рдирдХ рдХрд╛рд░реНрдп, рдЬреЛ, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдХреЛрдб рдореЗрдВ "рдзреЛрдпрд╛ рдЧрдпрд╛" рд╣реИ, рдФрд░ рдЕрдЧрд▓реЗ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди, рдЗрд╕ рддрд░реНрдХ рдореЗрдВ рддрд╛рд░реАрдЦреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред
 function increase_score(id, id2) local id = tonumber(id) тАФ     local fid = tonumber(id2) if(id == nil or fid == nil) then тАФ    return false end --     date_time local dt = os.date("*t") --       local cd = os.time({year = dt.year; month=dt.month; day=dt.day}) --    0 ,    0  local tup = box.select('0','0', id, fid) if( tup == nil ) then --      ,    box.insert('0', id, fid, cd, 100,cd) else local lu = box.unpack('i', tup[2]) local sc = box.unpack('i', tup[3]) local la = box.unpack('i', tup[4]) --        local diffs = (math.floor(sc/((la-lu)/24/60/60+30))+1)*((cd-lu)/24/60/60) if( diffs < 0 or diffs > sc ) then --   ,    : -- -   30   -- -            diffs = sc end --      diffs = 100 - diffs box.update('0',{id;fid},'+p=p=p',3, diffs,2,cd,4,cd) --    0     end end 

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмрд╛рд╣рд░реА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдПрдХ рдкрд░рдорд╛рдгреБ рдХреНрд░рд┐рдпрд╛ рд╣реИред

рдЕрдм рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдХреЙрд▓ рдЖрд╡реГрддреНрддрд┐ 20,000 рдЖрд░рдкреАрдПрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдИ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдВрдХрдбрд╝ рдХрд╛ рднрд╛рд░ 67% рдерд╛ред

рдЖрдЧреЗ, рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдФрд░ рдЕрдЪреНрдЫрд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реВрдБред рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрди рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЕрджреНрдпрддрди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд╛рд░реНрдп рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЗрди рдЖрдВрдХрдбрд╝реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдордмрджреНрдз рдХреНрд░рдо рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрд┐рд╕реА рдмрд╛рд╣рд░реА рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЫрд╛рдВрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдФрд░ рдЦреБрдж рдХреЛ рдЫрд╛рдВрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рд╣рдо рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
 function get_top(uid) local id = tonumber(uid) тАФ    if(id == nil) then -- ,      return false end local ret = {} --             id. --     ,         --   ,      . --   ,        , --      ( ,    ) for v in box.space[0].index[2]:iterator(box.index.LE, id) do if( v == nil or #ret == 10 or box.unpack('i',v[0]) ~= id) then break end -- , : -- -   , -- -    10    -- -         table.insert(ret, v) end return unpack(ret) end 

рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рдИ, рдЬреЛ рдЗрдВрдбреЗрдХреНрд╕ рдХреА рдкреНрд░рд╕рдиреНрдирддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╣рдореЗрдВ рдЕрд╡рд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдбрдореА рдХреА рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИред рдЫрдБрдЯрд╛рдИ рдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЖрдк box.index.LE рдкреНрд░рд▓реЗрдЦрди рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг: рдЧреНрд░рд╛рд╣рдХ рд╕реЗ, рдЗрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
 > lua increase_score(1,2) 
рдФрд░
 > lua get_top(1) 


рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЗрд╕ рд╕рднреА рдЕрдЪреНрдЫреЗ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкрд░реНрд▓ рд╕реЗ рдЯрд╛рд░реЗрдВрдЯрдпреБрд▓рд╛ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In192076/


All Articles